MCPcopy Create free account
hub / github.com/Closed11/Unsupervised-Image-Classification / train

Function train

main.py:194–238  ·  view source on GitHub ↗
(loader, model, crit, opt, epoch, labels, label_update=True)

Source from the content-addressed store, hash-verified

192 lr_scheduler.step()
193
194def train(loader, model, crit, opt, epoch, labels, label_update=True):
195 batch_time = AverageMeter()
196 losses = AverageMeter()
197 data_time = AverageMeter()
198 forward_time = AverageMeter()
199 backward_time = AverageMeter()
200
201 # switch to train mode
202 model.train()
203
204 end = time.time()
205 for i, (inputs, targets, index) in enumerate(loader):
206 data_time.update(time.time() - end)
207 inputs, targets = inputs.cuda(), targets.cuda()
208 outputs = model(inputs)
209
210 # labels updated
211 if label_update:
212 predict = outputs.argmax(dim=1).data.cpu().numpy()
213 for index_item, pred in zip(index, predict):
214 labels[index_item] = int(pred)
215
216 loss = crit(outputs, targets)
217
218 # record loss
219 losses.update(loss.item(), inputs.size(0))
220
221 # compute gradient and do SGD step
222 opt.zero_grad()
223 loss.backward()
224 opt.step()
225
226 # measure elapsed time
227 batch_time.update(time.time() - end)
228 end = time.time()
229 if args.verbose and (i % 100) == 0:
230 logger.info('Epoch: [{0}][{1}/{2}]\t'
231 'LR: {3}\t'
232 'Time: {batch_time.val:.3f} ({batch_time.avg:.3f})\t'
233 'Data: {data_time.val:.3f} ({data_time.avg:.3f})\t'
234 'Loss: {loss.val:.4f} ({loss.avg:.4f})'
235 .format(epoch, i, len(loader), opt.param_groups[0]['lr'], batch_time=batch_time,
236 data_time=data_time, loss=losses))
237
238 return losses.avg
239
240def compute_labels(dataloader, model, class_num, data_len, init_via_forward=False):
241 '''Pre-generate pseudo labels via network forward or uniformly assignment'''

Callers 1

mainFunction · 0.70

Calls 3

updateMethod · 0.95
AverageMeterClass · 0.90
formatMethod · 0.80

Tested by

no test coverage detected