Python torch.utils() Examples
The following are 30
code examples of torch.utils().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
torch
, or try the search function
.
Example #1
Source File: test_cifar.py From NAO_pytorch with GNU General Public License v3.0 | 6 votes |
def valid(valid_queue, model, criterion): objs = utils.AvgrageMeter() top1 = utils.AvgrageMeter() top5 = utils.AvgrageMeter() with torch.no_grad(): model.eval() for step, (input, target) in enumerate(valid_queue): input = input.cuda() target = target.cuda() logits, _ = model(input) loss = criterion(logits, target) prec1, prec5 = utils.accuracy(logits, target, topk=(1, 5)) n = input.size(0) objs.update(loss.data, n) top1.update(prec1.data, n) top5.update(prec5.data, n) if (step+1) % 100 == 0: logging.info('valid %03d %e %f %f', step+1, objs.avg, top1.avg, top5.avg) return top1.avg, objs.avg
Example #2
Source File: train.py From PyTorch-Encoding with MIT License | 6 votes |
def training(self, epoch): train_loss = 0.0 self.model.train() tbar = tqdm(self.trainloader) for i, (image, target) in enumerate(tbar): self.scheduler(self.optimizer, i, epoch, self.best_pred) self.optimizer.zero_grad() outputs = self.model(image) loss = self.criterion(outputs, target) loss.backward() self.optimizer.step() train_loss += loss.item() tbar.set_description('Train loss: %.3f' % (train_loss / (i + 1))) if self.args.no_val: # save checkpoint every epoch is_best = False utils.save_checkpoint({ 'epoch': epoch + 1, 'state_dict': self.model.module.state_dict(), 'optimizer': self.optimizer.state_dict(), 'best_pred': self.best_pred, }, self.args, is_best)
Example #3
Source File: train.py From nasbench-1shot1 with Apache License 2.0 | 6 votes |
def infer(valid_queue, model, criterion): objs = utils.AvgrageMeter() top1 = utils.AvgrageMeter() top5 = utils.AvgrageMeter() model.eval() for step, (input, target) in enumerate(valid_queue): input = input.cuda() target = target.cuda(non_blocking=True) logits = model(input, discrete=True) loss = criterion(logits, target) prec1, prec5 = utils.accuracy(logits, target, topk=(1, 5)) n = input.size(0) objs.update(loss.data.item(), n) top1.update(prec1.data.item(), n) top5.update(prec5.data.item(), n) if step % args.report_freq == 0: logging.info('valid %03d %e %f %f', step, objs.avg, top1.avg, top5.avg) if args.debug: break return top1.avg, objs.avg
Example #4
Source File: train_nasbench_like.py From nasbench-1shot1 with Apache License 2.0 | 6 votes |
def infer(valid_queue, model, criterion): objs = utils.AvgrageMeter() top1 = utils.AvgrageMeter() top5 = utils.AvgrageMeter() model.eval() for step, (input, target) in enumerate(valid_queue): input = input.cuda() target = target.cuda(non_blocking=True) logits = model(input, discrete=True) loss = criterion(logits, target) prec1, prec5 = utils.accuracy(logits, target, topk=(1, 5)) n = input.size(0) objs.update(loss.data.item(), n) top1.update(prec1.data.item(), n) top5.update(prec5.data.item(), n) if step % args.report_freq == 0: logging.info('valid %03d %e %f %f', step, objs.avg, top1.avg, top5.avg) if args.debug: break return top1.avg, objs.avg
Example #5
Source File: train.py From nasbench-1shot1 with Apache License 2.0 | 6 votes |
def infer(valid_queue, model, criterion): objs = utils.AvgrageMeter() top1 = utils.AvgrageMeter() top5 = utils.AvgrageMeter() model.eval() for step, (input, target) in enumerate(valid_queue): input = input.cuda() target = target.cuda(non_blocking=True) logits = model(input, discrete=True) loss = criterion(logits, target) prec1, prec5 = utils.accuracy(logits, target, topk=(1, 5)) n = input.size(0) objs.update(loss.data.item(), n) top1.update(prec1.data.item(), n) top5.update(prec5.data.item(), n) if step % args.report_freq == 0: logging.info('valid %03d %e %f %f', step, objs.avg, top1.avg, top5.avg) if args.debug: break return top1.avg, objs.avg
Example #6
Source File: train_search.py From nasbench-1shot1 with Apache License 2.0 | 6 votes |
def infer(valid_queue, model, criterion): objs = utils.AvgrageMeter() top1 = utils.AvgrageMeter() top5 = utils.AvgrageMeter() model.eval() for step, (input, target) in enumerate(valid_queue): input = input.cuda() target = target.cuda(non_blocking=True) logits = model(input) loss = criterion(logits, target) prec1, prec5 = utils.accuracy(logits, target, topk=(1, 5)) n = input.size(0) objs.update(loss.data.item(), n) top1.update(prec1.data.item(), n) top5.update(prec5.data.item(), n) if step % args.report_freq == 0: logging.info('valid %03d %e %f %f', step, objs.avg, top1.avg, top5.avg) return top1.avg, objs.avg
Example #7
Source File: ufrcnn.py From medicaldetectiontoolkit with Apache License 2.0 | 6 votes |
def build(self): """Build Mask R-CNN architecture.""" # Image size must be dividable by 2 multiple times. h, w = self.cf.patch_size[:2] if h / 2**5 != int(h / 2**5) or w / 2**5 != int(w / 2**5): raise Exception("Image size must be dividable by 2 at least 5 times " "to avoid fractions when downscaling and upscaling." "For example, use 256, 320, 384, 448, 512, ... etc. ") # instanciate abstract multi dimensional conv class and backbone class. conv = mutils.NDConvGenerator(self.cf.dim) backbone = utils.import_module('bbone', self.cf.backbone_path) # build Anchors, FPN, RPN, Classifier / Bbox-Regressor -head, Mask-head self.np_anchors = mutils.generate_pyramid_anchors(self.logger, self.cf) self.anchors = torch.from_numpy(self.np_anchors).float().cuda() self.fpn = backbone.FPN(self.cf, conv, operate_stride1=True) self.rpn = RPN(self.cf, conv) self.classifier = Classifier(self.cf, conv) self.mask = Mask(self.cf, conv) self.final_conv = conv(self.cf.end_filts, self.cf.num_seg_classes, ks=1, pad=0, norm=self.cf.norm, relu=None)
Example #8
Source File: retina_net.py From medicaldetectiontoolkit with Apache License 2.0 | 6 votes |
def build(self): """ Build Retina Net architecture. """ # Image size must be dividable by 2 multiple times. h, w = self.cf.patch_size[:2] if h / 2 ** 5 != int(h / 2 ** 5) or w / 2 ** 5 != int(w / 2 ** 5): raise Exception("Image size must be dividable by 2 at least 5 times " "to avoid fractions when downscaling and upscaling." "For example, use 256, 320, 384, 448, 512, ... etc. ") # instanciate abstract multi dimensional conv class and backbone model. conv = mutils.NDConvGenerator(self.cf.dim) backbone = utils.import_module('bbone', self.cf.backbone_path) # build Anchors, FPN, Classifier / Bbox-Regressor -head self.np_anchors = mutils.generate_pyramid_anchors(self.logger, self.cf) self.anchors = torch.from_numpy(self.np_anchors).float().cuda() self.Fpn = backbone.FPN(self.cf, conv, operate_stride1=self.cf.operate_stride1) self.Classifier = Classifier(self.cf, conv) self.BBRegressor = BBRegressor(self.cf, conv)
Example #9
Source File: datasets.py From CROWN-IBP with BSD 2-Clause "Simplified" License | 6 votes |
def mnist_loaders(dataset, batch_size, shuffle_train = True, shuffle_test = False, normalize_input = False, num_examples = None, test_batch_size=None): mnist_train = dataset("./data", train=True, download=True, transform=transforms.ToTensor()) mnist_test = dataset("./data", train=False, download=True, transform=transforms.ToTensor()) if num_examples: indices = list(range(num_examples)) mnist_train = data.Subset(mnist_train, indices) mnist_test = data.Subset(mnist_test, indices) train_loader = torch.utils.data.DataLoader(mnist_train, batch_size=batch_size, shuffle=shuffle_train, pin_memory=True, num_workers=min(multiprocessing.cpu_count(),2)) if test_batch_size: batch_size = test_batch_size test_loader = torch.utils.data.DataLoader(mnist_test, batch_size=batch_size, shuffle=shuffle_test, pin_memory=True, num_workers=min(multiprocessing.cpu_count(),2)) std = [1.0] mean = [0.0] train_loader.std = std test_loader.std = std train_loader.mean = mean test_loader.mean = mean return train_loader, test_loader
Example #10
Source File: mrcnn.py From RegRCNN with Apache License 2.0 | 6 votes |
def build(self): """Build Mask R-CNN architecture.""" # Image size must be dividable by 2 multiple times. h, w = self.cf.patch_size[:2] if h / 2**5 != int(h / 2**5) or w / 2**5 != int(w / 2**5): raise Exception("Image size must be divisible by 2 at least 5 times " "to avoid fractions when downscaling and upscaling." "For example, use 256, 288, 320, 384, 448, 512, ... etc.,i.e.," "any number x*32 will do!") # instantiate abstract multi-dimensional conv generator and load backbone module. backbone = utils.import_module('bbone', self.cf.backbone_path) self.logger.info("loaded backbone from {}".format(self.cf.backbone_path)) conv = backbone.ConvGenerator(self.cf.dim) # build Anchors, FPN, RPN, Classifier / Bbox-Regressor -head, Mask-head self.np_anchors = mutils.generate_pyramid_anchors(self.logger, self.cf) self.anchors = torch.from_numpy(self.np_anchors).float().cuda() self.fpn = backbone.FPN(self.cf, conv, relu_enc=self.cf.relu, operate_stride1=False).cuda() self.rpn = RPN(self.cf, conv) self.classifier = Classifier(self.cf, conv) self.mask = Mask(self.cf, conv)
Example #11
Source File: main_inpainting_cat.py From ASNG-NAS with MIT License | 6 votes |
def load_data(path='../data/', data_name='celebA', img_size=64): print('Loading ' + data_name + 'data...') train_transform, test_transform = utils.data_transforms(img_size=img_size) if data_name != 'svhn': # The image data should be contained in sub folders (e.g., ../data/celebA/train/image/aaa.png) train_data = torchvision.datasets.ImageFolder('{}{}/train'.format(path, data_name), transform=train_transform) test_data = torchvision.datasets.ImageFolder('{}{}/test'.format(path, data_name), transform=test_transform) else: train_data = torchvision.datasets.SVHN(path, split='train', transform=train_transform, download=True) test_data = torchvision.datasets.SVHN(path, split='test', transform=test_transform, download=True) # extra_data = torchvision.datasets.SVHN(path, split='extra', transform=train_transform, download=True) # train_data = torch.utils.data.ConcatDataset([train_data, extra_data]) print('train_data_size: %d, test_data_size: %d' % (len(train_data), len(test_data))) return train_data, test_data # Save result data
Example #12
Source File: train_search.py From NAO_pytorch with GNU General Public License v3.0 | 6 votes |
def child_valid(valid_queue, model, arch_pool, criterion): valid_acc_list = [] with torch.no_grad(): model.eval() for i, arch in enumerate(arch_pool): # for step, (input, target) in enumerate(valid_queue): inputs, targets = next(iter(valid_queue)) inputs = inputs.cuda() targets = targets.cuda() logits, _ = model(inputs, arch, bn_train=True) loss = criterion(logits, targets) prec1, prec5 = utils.accuracy(logits, targets, topk=(1, 5)) valid_acc_list.append(prec1.data/100) if (i+1) % 100 == 0: logging.info('Valid arch %s\n loss %.2f top1 %f top5 %f', ' '.join(map(str, arch[0] + arch[1])), loss, prec1, prec5) return valid_acc_list
Example #13
Source File: train_imagenet.py From NAO_pytorch with GNU General Public License v3.0 | 6 votes |
def valid(valid_queue, model, criterion): objs = utils.AvgrageMeter() top1 = utils.AvgrageMeter() top5 = utils.AvgrageMeter() with torch.no_grad(): model.eval() for step, (input, target) in enumerate(valid_queue): input = input.cuda() target = target.cuda() logits, _ = model(input) loss = criterion(logits, target) prec1, prec5 = utils.accuracy(logits, target, topk=(1, 5)) n = input.size(0) objs.update(loss.data, n) top1.update(prec1.data, n) top5.update(prec5.data, n) if (step+1) % 100 == 0: logging.info('valid %03d %e %f %f', step+1, objs.avg, top1.avg, top5.avg) return top1.avg, top5.avg, objs.avg
Example #14
Source File: retina_unet.py From medicaldetectiontoolkit with Apache License 2.0 | 6 votes |
def build(self): """ Build Retina Net architecture. """ # Image size must be dividable by 2 multiple times. h, w = self.cf.patch_size[:2] if h / 2 ** 5 != int(h / 2 ** 5) or w / 2 ** 5 != int(w / 2 ** 5): raise Exception("Image size must be dividable by 2 at least 5 times " "to avoid fractions when downscaling and upscaling." "For example, use 256, 320, 384, 448, 512, ... etc. ") # instanciate abstract multi dimensional conv class and backbone model. conv = mutils.NDConvGenerator(self.cf.dim) backbone = utils.import_module('bbone', self.cf.backbone_path) # build Anchors, FPN, Classifier / Bbox-Regressor -head self.np_anchors = mutils.generate_pyramid_anchors(self.logger, self.cf) self.anchors = torch.from_numpy(self.np_anchors).float().cuda() self.Fpn = backbone.FPN(self.cf, conv, operate_stride1=self.cf.operate_stride1) self.Classifier = Classifier(self.cf, conv) self.BBRegressor = BBRegressor(self.cf, conv) self.final_conv = conv(self.cf.end_filts, self.cf.num_seg_classes, ks=1, pad=0, norm=None, relu=None)
Example #15
Source File: train_imagenet.py From NAO_pytorch with GNU General Public License v3.0 | 6 votes |
def valid(valid_queue, model, criterion): objs = utils.AvgrageMeter() top1 = utils.AvgrageMeter() top5 = utils.AvgrageMeter() with torch.no_grad(): model.eval() for step, (input, target) in enumerate(valid_queue): input = input.cuda() target = target.cuda() logits, _ = model(input) loss = criterion(logits, target) prec1, prec5 = utils.accuracy(logits, target, topk=(1, 5)) n = input.size(0) objs.update(loss.data, n) top1.update(prec1.data, n) top5.update(prec5.data, n) if (step+1) % 100 == 0: logging.info('valid %03d %e %f %f', step+1, objs.avg, top1.avg, top5.avg) return top1.avg, top5.avg, objs.avg
Example #16
Source File: train_search.py From NAO_pytorch with GNU General Public License v3.0 | 6 votes |
def nao_valid(queue, model): inputs = [] targets = [] predictions = [] archs = [] with torch.no_grad(): model.eval() for step, sample in enumerate(queue): encoder_input = sample['encoder_input'] encoder_target = sample['encoder_target'] decoder_target = sample['decoder_target'] encoder_input = encoder_input.cuda() encoder_target = encoder_target.cuda() decoder_target = decoder_target.cuda() predict_value, logits, arch = model(encoder_input) n = encoder_input.size(0) inputs += encoder_input.data.squeeze().tolist() targets += encoder_target.data.squeeze().tolist() predictions += predict_value.data.squeeze().tolist() archs += arch.data.squeeze().tolist() pa = utils.pairwise_accuracy(targets, predictions) hd = utils.hamming_distance(inputs, archs) return pa, hd
Example #17
Source File: train_search.py From NAO_pytorch with GNU General Public License v3.0 | 6 votes |
def child_valid(valid_queue, model, arch_pool, criterion): valid_acc_list = [] with torch.no_grad(): model.eval() for i, arch in enumerate(arch_pool): #for step, (inputs, targets) in enumerate(valid_queue): inputs, targets = next(iter(valid_queue)) inputs = inputs.cuda() targets = targets.cuda() logits, _ = model(inputs, arch, bn_train=True) loss = criterion(logits, targets) prec1, prec5 = utils.accuracy(logits, targets, topk=(1, 5)) valid_acc_list.append(prec1.data/100) if (i+1) % 100 == 0: logging.info('Valid arch %s\n loss %.2f top1 %f top5 %f', ' '.join(map(str, arch[0] + arch[1])), loss, prec1, prec5) return valid_acc_list
Example #18
Source File: train_controller.py From NAO_pytorch with GNU General Public License v3.0 | 6 votes |
def nao_valid(queue, model): pa = utils.AvgrageMeter() hs = utils.AvgrageMeter() mse = utils.AvgrageMeter() with torch.no_grad(): model.eval() for step, sample in enumerate(queue): encoder_input = sample['encoder_input'] encoder_target = sample['encoder_target'] decoder_target = sample['decoder_target'] encoder_input = encoder_input.cuda() encoder_target = encoder_target.cuda() decoder_target = decoder_target.cuda() predict_value, logits, arch = model(encoder_input) n = encoder_input.size(0) pairwise_acc = utils.pairwise_accuracy(encoder_target.data.squeeze().tolist(), predict_value.data.squeeze().tolist()) hamming_dis = utils.hamming_distance(decoder_target.data.squeeze().tolist(), arch.data.squeeze().tolist()) mse.update(F.mse_loss(predict_value.data.squeeze(), encoder_target.data.squeeze()), n) pa.update(pairwise_acc, n) hs.update(hamming_dis, n) return mse.avg, pa.avg, hs.avg
Example #19
Source File: train_cifar.py From NAO_pytorch with GNU General Public License v3.0 | 6 votes |
def valid(valid_queue, model, criterion): objs = utils.AvgrageMeter() top1 = utils.AvgrageMeter() top5 = utils.AvgrageMeter() with torch.no_grad(): model.eval() for step, (input, target) in enumerate(valid_queue): input = input.cuda() target = target.cuda() logits, _ = model(input) loss = criterion(logits, target) prec1, prec5 = utils.accuracy(logits, target, topk=(1, 5)) n = input.size(0) objs.update(loss.data, n) top1.update(prec1.data, n) top5.update(prec5.data, n) if (step+1) % 100 == 0: logging.info('valid %03d %e %f %f', step+1, objs.avg, top1.avg, top5.avg) return top1.avg, objs.avg
Example #20
Source File: train_controller.py From NAO_pytorch with GNU General Public License v3.0 | 6 votes |
def nao_valid(queue, model): pa = utils.AvgrageMeter() hs = utils.AvgrageMeter() mse = utils.AvgrageMeter() with torch.no_grad(): model.eval() for step, sample in enumerate(queue): encoder_input = sample['encoder_input'] encoder_target = sample['encoder_target'] decoder_target = sample['decoder_target'] encoder_input = encoder_input.cuda() encoder_target = encoder_target.cuda() decoder_target = decoder_target.cuda() predict_value, logits, arch = model(encoder_input) n = encoder_input.size(0) pairwise_acc = utils.pairwise_accuracy(encoder_target.data.squeeze().tolist(), predict_value.data.squeeze().tolist()) hamming_dis = utils.hamming_distance(decoder_target.data.squeeze().tolist(), arch.data.squeeze().tolist()) mse.update(F.mse_loss(predict_value.data.squeeze(), encoder_target.data.squeeze()), n) pa.update(pairwise_acc, n) hs.update(hamming_dis, n) return mse.avg, pa.avg, hs.avg
Example #21
Source File: test_controller.py From NAO_pytorch with GNU General Public License v3.0 | 6 votes |
def nao_valid(queue, model): pa = utils.AvgrageMeter() hs = utils.AvgrageMeter() with torch.no_grad(): model.eval() for step, sample in enumerate(queue): encoder_input = sample['encoder_input'] encoder_target = sample['encoder_target'] decoder_target = sample['decoder_target'] encoder_input = encoder_input.cuda() encoder_target = encoder_target.cuda() decoder_target = decoder_target.cuda() predict_value, logits, arch = model(encoder_input) n = encoder_input.size(0) pairwise_acc = utils.pairwise_accuracy(encoder_target.data.squeeze().tolist(), predict_value.data.squeeze().tolist()) hamming_dis = utils.hamming_distance(decoder_target.data.squeeze().tolist(), arch.data.squeeze().tolist()) pa.update(pairwise_acc, n) hs.update(hamming_dis, n) return pa.avg, hs.avg
Example #22
Source File: test_cifar.py From NAO_pytorch with GNU General Public License v3.0 | 6 votes |
def valid(valid_queue, model, criterion): objs = utils.AvgrageMeter() top1 = utils.AvgrageMeter() top5 = utils.AvgrageMeter() with torch.no_grad(): model.eval() for step, (input, target) in enumerate(valid_queue): input = input.cuda() target = target.cuda() logits, _ = model(input) loss = criterion(logits, target) prec1, prec5 = utils.accuracy(logits, target, topk=(1, 5)) n = input.size(0) objs.update(loss.data, n) top1.update(prec1.data, n) top5.update(prec5.data, n) if (step+1) % 100 == 0: logging.info('valid %03d %e %f %f', step+1, objs.avg, top1.avg, top5.avg) return top1.avg, objs.avg
Example #23
Source File: main_inpainting_int.py From ASNG-NAS with MIT License | 6 votes |
def load_data(path='../data/', data_name='celebA', img_size=64): print('Loading ' + data_name + 'data...') train_transform, test_transform = utils.data_transforms(img_size=img_size) if data_name != 'svhn': # The image data should be contained in sub folders (e.g., ../data/celebA/train/image/aaa.png) train_data = torchvision.datasets.ImageFolder('{}{}/train'.format(path, data_name), transform=train_transform) test_data = torchvision.datasets.ImageFolder('{}{}/test'.format(path, data_name), transform=test_transform) else: train_data = torchvision.datasets.SVHN(path, split='train', transform=train_transform, download=True) test_data = torchvision.datasets.SVHN(path, split='test', transform=test_transform, download=True) # extra_data = torchvision.datasets.SVHN(path, split='extra', transform=train_transform, download=True) # train_data = torch.utils.data.ConcatDataset([train_data, extra_data]) print('train_data_size: %d, test_data_size: %d' % (len(train_data), len(test_data))) return train_data, test_data # Save result data
Example #24
Source File: end-end.py From PAN-PSEnet with Apache License 2.0 | 5 votes |
def recognise(bboxes,org_img): nclass = len(params.alphabet) + 1 model = crnn.CRNN(params.imgH, params.nc, nclass, params.nh) if torch.cuda.is_available(): model = model.cuda() # load model print('loading pretrained model from %s' % params.crnn_path) if params.multi_gpu: model = torch.nn.DataParallel(model) model.load_state_dict(torch.load(params.crnn_path)) converter = utils.strLabelConverter(params.alphabet) print('PREDICTION:') for bbox in bboxes: cropped_img = crop(org_img,bbox) if torch.cuda.is_available(): image = cropped_img.cuda() image = image.view(1, *image.size()) image = Variable(image) model.eval() preds = model(image) _, preds = preds.max(2) preds = preds.transpose(1, 0).contiguous().view(-1) preds_size = Variable(torch.IntTensor([preds.size(0)])) raw_pred = converter.decode(preds.data, preds_size.data, raw=True) sim_pred = converter.decode(preds.data, preds_size.data, raw=False) print('%-20s => %-20s' % (raw_pred, sim_pred))
Example #25
Source File: train_cifar.py From NAO_pytorch with GNU General Public License v3.0 | 5 votes |
def build_cifar10(model_state_dict, optimizer_state_dict, **kwargs): epoch = kwargs.pop('epoch') train_transform, valid_transform = utils._data_transforms_cifar10(args.cutout_size) train_data = dset.CIFAR10(root=args.data, train=True, download=True, transform=train_transform) valid_data = dset.CIFAR10(root=args.data, train=False, download=True, transform=valid_transform) train_queue = torch.utils.data.DataLoader( train_data, batch_size=args.batch_size, shuffle=True, pin_memory=True, num_workers=16) valid_queue = torch.utils.data.DataLoader( valid_data, batch_size=args.eval_batch_size, shuffle=False, pin_memory=True, num_workers=16) model = NASNetworkCIFAR(args, 10, args.layers, args.nodes, args.channels, args.keep_prob, args.drop_path_keep_prob, args.use_aux_head, args.steps, args.arch) logging.info("param size = %fMB", utils.count_parameters_in_MB(model)) if model_state_dict is not None: model.load_state_dict(model_state_dict) if torch.cuda.device_count() > 1: logging.info("Use %d %s", torch.cuda.device_count(), "GPUs !") model = nn.DataParallel(model) model = model.cuda() train_criterion = nn.CrossEntropyLoss().cuda() eval_criterion = nn.CrossEntropyLoss().cuda() optimizer = torch.optim.SGD( model.parameters(), args.lr_max, momentum=0.9, weight_decay=args.l2_reg, ) if optimizer_state_dict is not None: optimizer.load_state_dict(optimizer_state_dict) scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, float(args.epochs), args.lr_min, epoch) return train_queue, valid_queue, model, train_criterion, eval_criterion, optimizer, scheduler
Example #26
Source File: train.py From nasbench-1shot1 with Apache License 2.0 | 5 votes |
def train(train_queue, valid_queue, model, architect, criterion, optimizer, lr, epoch): objs = utils.AvgrageMeter() top1 = utils.AvgrageMeter() top5 = utils.AvgrageMeter() for step, (input, target) in enumerate(train_queue): model.train() n = input.size(0) input = input.cuda() target = target.cuda(non_blocking=True) # get a minibatch from the search queue with replacement try: input_search, target_search = next(valid_queue_iter) except: valid_queue_iter = iter(valid_queue) input_search, target_search = next(valid_queue_iter) optimizer.zero_grad() logits = model(input, discrete=True) loss = criterion(logits, target) loss.backward() nn.utils.clip_grad_norm_(model.parameters(), args.grad_clip) optimizer.step() prec1, prec5 = utils.accuracy(logits, target, topk=(1, 5)) objs.update(loss.data.item(), n) top1.update(prec1.data.item(), n) top5.update(prec5.data.item(), n) if step % args.report_freq == 0: logging.info('train %03d %e %f %f', step, objs.avg, top1.avg, top5.avg) if args.debug: break return top1.avg, objs.avg
Example #27
Source File: train_cifar.py From NAO_pytorch with GNU General Public License v3.0 | 5 votes |
def train(train_queue, model, optimizer, global_step, criterion): objs = utils.AvgrageMeter() top1 = utils.AvgrageMeter() top5 = utils.AvgrageMeter() model.train() for step, (input, target) in enumerate(train_queue): input = input.cuda().requires_grad_() target = target.cuda() optimizer.zero_grad() logits, aux_logits = model(input, global_step) global_step += 1 loss = criterion(logits, target) if aux_logits is not None: aux_loss = criterion(aux_logits, target) loss += 0.4 * aux_loss loss.backward() nn.utils.clip_grad_norm_(model.parameters(), args.grad_bound) optimizer.step() prec1, prec5 = utils.accuracy(logits, target, topk=(1, 5)) n = input.size(0) objs.update(loss.data, n) top1.update(prec1.data, n) top5.update(prec5.data, n) if (step+1) % 100 == 0: logging.info('train %03d loss %e top1 %f top5 %f', step+1, objs.avg, top1.avg, top5.avg) return top1.avg, objs.avg, global_step
Example #28
Source File: test_cifar.py From NAO_pytorch with GNU General Public License v3.0 | 5 votes |
def main(): if not torch.cuda.is_available(): logging.info('No GPU found!') sys.exit(1) random.seed(args.seed) np.random.seed(args.seed) torch.manual_seed(args.seed) torch.cuda.manual_seed(args.seed) torch.cuda.manual_seed_all(args.seed) cudnn.enabled = True cudnn.benchmark = False cudnn.deterministic = True args.steps = int(np.ceil(50000 / args.batch_size)) * args.epochs logging.info("Args = %s", args) _, model_state_dict, epoch, step, optimizer_state_dict, best_acc_top1 = utils.load(args.output_dir) build_fn = get_builder(args.dataset) train_queue, valid_queue, model, train_criterion, eval_criterion, optimizer, scheduler = build_fn(model_state_dict, optimizer_state_dict, epoch=epoch-1) while epoch < args.epochs: scheduler.step() logging.info('epoch %d lr %e', epoch, scheduler.get_lr()[0]) train_acc, train_obj, step = train(train_queue, model, optimizer, step, train_criterion) logging.info('train_acc %f', train_acc) valid_acc_top1, valid_obj = valid(valid_queue, model, eval_criterion) logging.info('valid_acc %f', valid_acc_top1) epoch += 1 is_best = False if valid_acc_top1 > best_acc_top1: best_acc_top1 = valid_acc_top1 is_best = True utils.save(args.output_dir, args, model, epoch, step, optimizer, best_acc_top1, is_best)
Example #29
Source File: train_search.py From FasterSeg with MIT License | 5 votes |
def train(pretrain, train_loader_model, train_loader_arch, model, architect, criterion, optimizer, lr_policy, logger, epoch, update_arch=True): model.train() bar_format = '{desc}[{elapsed}<{remaining},{rate_fmt}]' pbar = tqdm(range(config.niters_per_epoch), file=sys.stdout, bar_format=bar_format, ncols=80) dataloader_model = iter(train_loader_model) dataloader_arch = iter(train_loader_arch) for step in pbar: optimizer.zero_grad() minibatch = dataloader_model.next() imgs = minibatch['data'] target = minibatch['label'] imgs = imgs.cuda(non_blocking=True) target = target.cuda(non_blocking=True) if update_arch: # get a random minibatch from the search queue with replacement pbar.set_description("[Arch Step %d/%d]" % (step + 1, len(train_loader_model))) minibatch = dataloader_arch.next() imgs_search = minibatch['data'] target_search = minibatch['label'] imgs_search = imgs_search.cuda(non_blocking=True) target_search = target_search.cuda(non_blocking=True) loss_arch = architect.step(imgs, target, imgs_search, target_search) if (step+1) % 10 == 0: logger.add_scalar('loss_arch/train', loss_arch, epoch*len(pbar)+step) logger.add_scalar('arch/latency_supernet', architect.latency_supernet, epoch*len(pbar)+step) loss = model._loss(imgs, target, pretrain) logger.add_scalar('loss/train', loss, epoch*len(pbar)+step) loss.backward() nn.utils.clip_grad_norm_(model.parameters(), config.grad_clip) optimizer.step() optimizer.zero_grad() pbar.set_description("[Step %d/%d]" % (step + 1, len(train_loader_model))) torch.cuda.empty_cache() # del loss # if update_arch: del loss_arch
Example #30
Source File: mrcnn.py From medicaldetectiontoolkit with Apache License 2.0 | 5 votes |
def build(self): """Build Mask R-CNN architecture.""" # Image size must be dividable by 2 multiple times. h, w = self.cf.patch_size[:2] if h / 2**5 != int(h / 2**5) or w / 2**5 != int(w / 2**5): raise Exception("Image size must be dividable by 2 at least 5 times " "to avoid fractions when downscaling and upscaling." "For example, use 256, 320, 384, 448, 512, ... etc. ") if len(self.cf.patch_size) == 3: d = self.cf.patch_size[2] if d / 2**3 != int(d / 2**3): raise Exception("Image z dimension must be dividable by 2 at least 3 times " "to avoid fractions when downscaling and upscaling.") # instanciate abstract multi dimensional conv class and backbone class. conv = mutils.NDConvGenerator(self.cf.dim) backbone = utils.import_module('bbone', self.cf.backbone_path) # build Anchors, FPN, RPN, Classifier / Bbox-Regressor -head, Mask-head self.np_anchors = mutils.generate_pyramid_anchors(self.logger, self.cf) self.anchors = torch.from_numpy(self.np_anchors).float().cuda() self.fpn = backbone.FPN(self.cf, conv) self.rpn = RPN(self.cf, conv) self.classifier = Classifier(self.cf, conv) self.mask = Mask(self.cf, conv)