MCPcopy Index your code
hub / github.com/TorchSSL/TorchSSL / FixMatch

Class FixMatch

models/fixmatch/fixmatch.py:22–312  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

20
21
22class FixMatch:
23 def __init__(self, net_builder, num_classes, ema_m, T, p_cutoff, lambda_u, \
24 hard_label=True, t_fn=None, p_fn=None, it=0, num_eval_iter=1000, tb_log=None, logger=None):
25 """
26 class Fixmatch contains setter of data_loader, optimizer, and model update methods.
27 Args:
28 net_builder: backbone network class (see net_builder in utils.py)
29 num_classes: # of label classes
30 ema_m: momentum of exponential moving average for eval_model
31 T: Temperature scaling parameter for output sharpening (only when hard_label = False)
32 p_cutoff: confidence cutoff parameters for loss masking
33 lambda_u: ratio of unsupervised loss to supervised loss
34 hard_label: If True, consistency regularization use a hard pseudo label.
35 it: initial iteration count
36 num_eval_iter: freqeuncy of iteration (after 500,000 iters)
37 tb_log: tensorboard writer (see train_utils.py)
38 logger: logger (see utils.py)
39 """
40
41 super(FixMatch, self).__init__()
42
43 # momentum update param
44 self.loader = {}
45 self.num_classes = num_classes
46 self.ema_m = ema_m
47
48 # create the encoders
49 # network is builded only by num_classes,
50 # other configs are covered in main.py
51
52 self.model = net_builder(num_classes=num_classes)
53 self.ema_model = None
54
55 self.num_eval_iter = num_eval_iter
56 self.t_fn = Get_Scalar(T) # temperature params function
57 self.p_fn = Get_Scalar(p_cutoff) # confidence cutoff function
58 self.lambda_u = lambda_u
59 self.tb_log = tb_log
60 self.use_hard_label = hard_label
61
62 self.optimizer = None
63 self.scheduler = None
64
65 self.it = 0
66 self.lst = [[] for i in range(10)]
67 self.abs_lst = [[] for i in range(10)]
68 self.clsacc = [[] for i in range(10)]
69 self.logger = logger
70 self.print_fn = print if logger is None else logger.info
71
72 self.bn_controller = Bn_Controller()
73
74 def set_data_loader(self, loader_dict):
75 self.loader_dict = loader_dict
76 self.print_fn(f'[!] data loader keys: {self.loader_dict.keys()}')
77
78 def set_dset(self, dset):
79 self.ulb_dset = dset

Callers 1

main_workerFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected