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

Class FullySupervised

models/fullysupervised/fullysupervised.py:15–259  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13
14
15class FullySupervised:
16 def __init__(self, net_builder, num_classes,
17 num_eval_iter=1000, tb_log=None, ema_m=0.999, logger=None):
18 """
19 class FullySupervised contains setter of data_loader, optimizer, and model update methods.
20 Args:
21 net_builder: backbone network class (see net_builder in utils.py)
22 num_classes: # of label classes
23 it: initial iteration count
24 num_eval_iter: frequency of evaluation.
25 tb_log: tensorboard writer (see train_utils.py)
26 logger: logger (see utils.py)
27 """
28
29 super(FullySupervised, self).__init__()
30
31 # momentum update param
32 self.loader = {}
33 self.num_classes = num_classes
34
35 # create the encoders
36 # network is builded only by num_classes,
37 # other configs are covered in main.py
38
39 self.model = net_builder(num_classes=num_classes)
40 self.num_eval_iter = num_eval_iter
41 self.tb_log = tb_log
42
43 self.optimizer = None
44 self.scheduler = None
45
46 self.it = 0
47
48 self.logger = logger
49 self.print_fn = print if logger is None else logger.info
50
51 self.ema_m = ema_m
52 self.ema_model = deepcopy(self.model)
53
54 self.bn_controller = Bn_Controller()
55
56 def set_data_loader(self, loader_dict):
57 self.loader_dict = loader_dict
58 self.print_fn(f'[!] data loader keys: {self.loader_dict.keys()}')
59
60 def set_optimizer(self, optimizer, scheduler=None):
61 self.optimizer = optimizer
62 self.scheduler = scheduler
63
64 def train(self, args):
65
66 ngpus_per_node = torch.cuda.device_count()
67
68 # lb: labeled, ulb: unlabeled
69 self.model.train()
70 self.ema = EMA(self.model, self.ema_m)
71 self.ema.register()
72 if args.resume == True:

Callers 1

main_workerFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected