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

Class SoftMatch

models/softmatch/softmatch.py:23–332  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers 1

main_workerFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected