MCPcopy
hub / github.com/HobbitLong/SupContrast / train

Function train

main_ce.py:188–237  ·  view source on GitHub ↗

one epoch training

(train_loader, model, criterion, optimizer, epoch, opt)

Source from the content-addressed store, hash-verified

186
187
188def train(train_loader, model, criterion, optimizer, epoch, opt):
189 """one epoch training"""
190 model.train()
191
192 batch_time = AverageMeter()
193 data_time = AverageMeter()
194 losses = AverageMeter()
195 top1 = AverageMeter()
196
197 end = time.time()
198 for idx, (images, labels) in enumerate(train_loader):
199 data_time.update(time.time() - end)
200
201 images = images.cuda(non_blocking=True)
202 labels = labels.cuda(non_blocking=True)
203 bsz = labels.shape[0]
204
205 # warm-up learning rate
206 warmup_learning_rate(opt, epoch, idx, len(train_loader), optimizer)
207
208 # compute loss
209 output = model(images)
210 loss = criterion(output, labels)
211
212 # update metric
213 losses.update(loss.item(), bsz)
214 acc1, acc5 = accuracy(output, labels, topk=(1, 5))
215 top1.update(acc1[0], bsz)
216
217 # SGD
218 optimizer.zero_grad()
219 loss.backward()
220 optimizer.step()
221
222 # measure elapsed time
223 batch_time.update(time.time() - end)
224 end = time.time()
225
226 # print info
227 if (idx + 1) % opt.print_freq == 0:
228 print('Train: [{0}][{1}/{2}]\t'
229 'BT {batch_time.val:.3f} ({batch_time.avg:.3f})\t'
230 'DT {data_time.val:.3f} ({data_time.avg:.3f})\t'
231 'loss {loss.val:.3f} ({loss.avg:.3f})\t'
232 'Acc@1 {top1.val:.3f} ({top1.avg:.3f})'.format(
233 epoch, idx + 1, len(train_loader), batch_time=batch_time,
234 data_time=data_time, loss=losses, top1=top1))
235 sys.stdout.flush()
236
237 return losses.avg, top1.avg
238
239
240def validate(val_loader, model, criterion, opt):

Callers 1

mainFunction · 0.70

Calls 4

updateMethod · 0.95
AverageMeterClass · 0.90
warmup_learning_rateFunction · 0.90
accuracyFunction · 0.90

Tested by

no test coverage detected