我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用torch.nn.functional.nll_loss()。
def train(epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): if args.cuda: data, target = data.cuda(), target.cuda() data, target = Variable(data), Variable(target) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.data[0])) # 1. Save the model every epoch torch.save(model.state_dict(), "mnist_model_{0:03d}.pwf".format(epoch))
def test(): model.eval() test_loss = 0 correct = 0 for data, target in test_loader: if args.cuda: data, target = data.cuda(), target.cuda() data, target = Variable(data, volatile=True), Variable(target) output = model(data) test_loss += F.nll_loss(output, target, size_average=False).data[0] # sum up batch loss pred = output.data.max(1)[1] # get the index of the max log-probability correct += pred.eq(target.data.view_as(pred)).cpu().sum() test_loss /= len(test_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset)))
def test(): model.eval() test_loss = 0 correct = 0 for data, target in test_loader: if args.cuda: data, target = data.cuda(), target.cuda() data, target = Variable(data, volatile=True), Variable(target) output = model(data) test_loss += F.nll_loss(output, target, size_average=False).data[0] # sum up batch loss pred = output.data.max(1, keepdim=True)[1] # get the index of the max log-probability correct += pred.eq(target.data.view_as(pred)).cpu().sum() test_loss /= len(test_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset)))
def train(args, epoch, net, trainLoader, optimizer, trainF): net.train() nProcessed = 0 nTrain = len(trainLoader.dataset) for batch_idx, (data, target) in enumerate(trainLoader): if args.cuda: data, target = data.cuda(), target.cuda() data, target = Variable(data), Variable(target) optimizer.zero_grad() output = net(data) loss = F.nll_loss(output, target) # make_graph.save('/tmp/t.dot', loss.creator); assert(False) loss.backward() optimizer.step() nProcessed += len(data) pred = output.data.max(1)[1] # get the index of the max log-probability incorrect = pred.ne(target.data).cpu().sum() err = 100.*incorrect/len(data) partialEpoch = epoch + batch_idx / len(trainLoader) - 1 print('Train Epoch: {:.2f} [{}/{} ({:.0f}%)]\tLoss: {:.6f}\tError: {:.6f}'.format( partialEpoch, nProcessed, nTrain, 100. * batch_idx / len(trainLoader), loss.data[0], err)) trainF.write('{},{},{}\n'.format(partialEpoch, loss.data[0], err)) trainF.flush()
def test(args, epoch, net, testLoader, optimizer, testF): net.eval() test_loss = 0 incorrect = 0 for data, target in testLoader: if args.cuda: data, target = data.cuda(), target.cuda() data, target = Variable(data, volatile=True), Variable(target) output = net(data) test_loss += F.nll_loss(output, target).data[0] pred = output.data.max(1)[1] # get the index of the max log-probability incorrect += pred.ne(target.data).cpu().sum() test_loss = test_loss test_loss /= len(testLoader) # loss function already averages over batch size nTotal = len(testLoader.dataset) err = 100.*incorrect/nTotal print('\nTest set: Average loss: {:.4f}, Error: {}/{} ({:.0f}%)\n'.format( test_loss, incorrect, nTotal, err)) testF.write('{},{},{}\n'.format(epoch, test_loss, err)) testF.flush()
def test(): model.eval() test_loss = 0 correct = 0 for data, target in test_loader: if args.cuda: data, target = data.cuda(), target.cuda() data, target = Variable(data, volatile=True), Variable(target) output = model(data) # sum up batch loss test_loss += F.nll_loss(output, target, size_average=False).data[0] # get the index of the max log-probability pred = output.data.max(1, keepdim=True)[1] correct += pred.eq(target.data.view_as(pred)).cpu().sum() test_loss /= len(test_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n' .format(test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset)))
def train_(self, epoch): self.train() for batch_idx, (data, target) in enumerate(train_loader): correct = 0 if args.cuda: data, target = data.cuda(), target.cuda() data, target = Variable(data), Variable(target) self.optimizer.zero_grad() output = self(data) loss = F.nll_loss(output, target) loss.backward() pred = output.data.max(1)[1] # get the index of the max log-probability correct += pred.eq(target.data).cpu().sum() accuracy = 100. * correct / len(data) self.optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}, Accuracy: {}/{} ({:.4f}%)'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.data[0], correct, len(data), accuracy)) self.train_acc.append(accuracy)
def test_(self, epoch): self.eval() test_loss = 0 correct = 0 for data, target in test_loader: if args.cuda: data, target = data.cuda(), target.cuda() data, target = Variable(data, volatile=True), Variable(target) output = self(data) test_loss += F.nll_loss(output, target).data[0] pred = output.data.max(1)[1] # get the index of the max log-probability correct += pred.eq(target.data).cpu().sum() test_loss = test_loss test_loss /= len(test_loader) # loss function already averages over batch size accuracy = 100. * correct / len(test_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.4f}%)\n'.format( test_loss, correct, len(test_loader.dataset), accuracy)) self.test_acc.append(accuracy)
def test_normal(model, test_loader): test_loss = 0 correct = 0 for data, target in test_loader: if cuda: data, target = data.cuda(), target.cuda() data, target = Variable(data), Variable(target) output = model(data) test_loss += F.nll_loss(output, target).data[0] pred = output.data.max(1)[1] correct += pred.eq(target.data).cpu().sum() test_loss /= len(test_loader) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100 * correct / len(test_loader.dataset))) return test_loss
def test_normal(model): test_loss = 0 correct = 0 for data, target in test_loader: if cuda: data, target = data.cuda(), target.cuda() data, target = Variable(data), Variable(target) output = model(data) test_loss += F.nll_loss(output, target).data[0] pred = output.data.max(1)[1] correct += pred.eq(target.data).cpu().sum() test_loss /= len(test_loader) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100 * correct / len(test_loader.dataset))) return test_loss
def test(epoch): model.eval() test_loss = 0 correct = 0 for data, target in test_loader: if args.cuda: data, target = data.cuda(), target.cuda() data, target = Variable(data, volatile=True), Variable(target) output = model(data) test_loss += F.nll_loss(output, target).data[0] pred = output.data.max(1)[1] # get the index of the max log-probability correct += pred.eq(target.data).cpu().sum() test_loss = test_loss test_loss /= len( test_loader) # loss function already averages over batch size print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len( test_loader.dataset)))
def train(epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): if args.cuda: data, target = data.cuda(), target.cuda() data, target = Variable(data), Variable(target) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.data[0]))
def test(epoch): model.eval() test_loss = 0 correct = 0 for data, target in test_loader: if args.cuda: data, target = data.cuda(), target.cuda() data, target = Variable(data, volatile=True), Variable(target) output = model(data) test_loss += F.nll_loss(output, target).data[0] pred = output.data.max(1)[1] # get the index of the max log-probability correct += pred.eq(target.data).cpu().sum() test_loss = test_loss test_loss /= len(test_loader) # loss function already averages over batch size print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset)))
def loss(self, batch_data, test=False): # unpack data (source, targets), conds = batch_data, None if self.conds is not None: (source, *conds), (targets, *_) = source, targets # get hidden from previous batch (if stored) hidden = self.hidden_state.get('hidden', None) # run RNN output, hidden, _ = self(source, hidden=hidden, conds=conds) # store hidden for next batch self.hidden_state['hidden'] = u.repackage_hidden(hidden) # compute loss and backward loss = F.nll_loss(output, targets.view(-1), size_average=True) if not test: loss.backward() return (loss.data[0], ), source.nelement()
def cross_entropy2d(input, target, weight=None, size_average=True): # input: (n, c, h, w), target: (n, h, w) n, c, h, w = input.size() # log_p: (n, c, h, w) log_p = F.log_softmax(input) # log_p: (n*h*w, c) log_p = log_p.transpose(1, 2).transpose(2, 3).contiguous().view(-1, c) log_p = log_p[target.view(n, h, w, 1).repeat(1, 1, 1, c) >= 0] log_p = log_p.view(-1, c) # target: (n*h*w,) mask = target >= 0 target = target[mask] loss = F.nll_loss(log_p, target, weight=weight, size_average=False) if size_average: loss /= mask.data.sum() return loss
def nllloss_no_reduce_weights_ignore_index_test(): t = Variable(torch.Tensor(15).uniform_().mul(10).floor().long()) weight = torch.rand(10) def kwargs(i): return {'weight': weight.type_as(i), 'reduce': False, 'ignore_index': 2} return dict( fullname='NLLLoss_no_reduce_weights_ignore_index', constructor=wrap_functional( lambda i: F.nll_loss(i, t.type_as(i).long(), **kwargs(i.data))), input_fn=lambda: torch.rand(15, 10).add(1e-2).log(), reference_fn=lambda i, _: loss_reference_fns['NLLLoss'](i, t.type_as(i).long(), **kwargs(i)), pickle=False)
def nllloss_no_reduce_weights_ignore_index_neg_test(): t = Variable(torch.Tensor(15).uniform_().mul(10).floor().long()) weight = torch.rand(10) def kwargs(i): return {'weight': weight.type_as(i), 'reduce': False, 'ignore_index': -1} return dict( fullname='NLLLoss_no_reduce_weights_ignore_index_neg', constructor=wrap_functional( lambda i: F.nll_loss(i, t.type_as(i).long(), **kwargs(i.data))), input=torch.rand(15, 10).add(1e-2).log(), reference_fn=lambda i, _: loss_reference_fns['NLLLoss'](i, t.type_as(i).long(), **kwargs(i)), pickle=False)
def train(epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): if use_cuda: data, target = data.cuda(), target.cuda() data, target = Variable(data), Variable(target) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % 500 == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.data[0])) # # A simple test procedure to measure STN the performances on MNIST. #
def train(epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = Variable(data), Variable(target) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.data[0]))
def test(): model.eval() test_loss = 0 correct = 0 for data, target in test_loader: data, target = Variable(data, volatile=True), Variable(target) output = model(data) test_loss += F.nll_loss(output, target, size_average=False).data[0] # sum up batch loss pred = output.data.max(1)[1] # get the index of the max log-probability correct += pred.eq(target.data.view_as(pred)).cpu().sum() test_loss /= len(test_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset)))
def train(epoch): if epoch > 2: import pdb; pdb.set_trace() model.train() for batch_idx, (data, target) in enumerate(train_loader): # 1. Add requires_grad so Torch doesn't erase the gradient with its optimization pass data, target = Variable(data, requires_grad=True), Variable(target) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.data[0])) # 2. Get the `.grad` attribute of the variable. # This is a Torch tensor, so to get the data as numpy format, we have to use `.grad.data.numpy()` adversarial_example = data.grad.data.numpy() print(adversarial_example.max()) if epoch > 2: # 3. Let's plot it, because we can! plt.clf() plt.subplot(121); plt.imshow(data.data.numpy()[0,0,...], cmap='gray_r') plt.subplot(122); plt.imshow(adversarial_example[0,0,...]); plt.colorbar() plt.show(block=False) plt.pause(0.01)
def cross_entropy2d(input, target, weight=None, size_average=True): n, c, h, w = input.size() log_p = F.log_softmax(input, dim=1) log_p = log_p.transpose(1, 2).transpose(2, 3).contiguous().view(-1, c) log_p = log_p[target.view(n * h * w, 1).repeat(1, c) >= 0] log_p = log_p.view(-1, c) mask = target >= 0 target = target[mask] loss = F.nll_loss(log_p, target, weight=weight, size_average=False) if size_average: loss /= mask.data.sum() return loss
def bootstrapped_cross_entropy2d(input, target, K, weight=None, size_average=True): batch_size = input.size()[0] def _bootstrap_xentropy_single(input, target, K, weight=None, size_average=True): n, c, h, w = input.size() log_p = F.log_softmax(input, dim=1) log_p = log_p.transpose(1, 2).transpose(2, 3).contiguous().view(-1, c) log_p = log_p[target.view(n * h * w, 1).repeat(1, c) >= 0] log_p = log_p.view(-1, c) mask = target >= 0 target = target[mask] loss = F.nll_loss(log_p, target, weight=weight, reduce=False, size_average=False) topk_loss, _ = loss.topk(K) reduced_topk_loss = topk_loss.sum() / K return reduced_topk_loss loss = 0.0 # Bootstrap from each image not entire batch for i in range(batch_size): loss += _bootstrap_xentropy_single(input=torch.unsqueeze(input[i], 0), target=torch.unsqueeze(target[i], 0), K=K, weight=weight, size_average=size_average) return loss / float(batch_size)
def cross_entropy2d(pred, target, weight=None, size_average=True): n, num_classes, h, w = pred.size() log_p = F.log_softmax(pred) log_p = channel_first_to_last(log_p).view(-1, num_classes) target = channel_first_to_last(target).view(-1) loss = F.nll_loss(log_p, target, weight=weight, size_average=False) if size_average: loss /= (h * w * n) return loss
def train_nll(args, epoch, model, trainLoader, optimizer, trainF, weights): model.train() nProcessed = 0 nTrain = len(trainLoader.dataset) for batch_idx, (data, target) in enumerate(trainLoader): if args.cuda: data, target = data.cuda(), target.cuda() data, target = Variable(data), Variable(target) optimizer.zero_grad() output = model(data) target = target.view(target.numel()) loss = F.nll_loss(output, target, weight=weights) dice_loss = bioloss.dice_error(output, target) # make_graph.save('/tmp/t.dot', loss.creator); assert(False) loss.backward() optimizer.step() nProcessed += len(data) pred = output.data.max(1)[1] # get the index of the max log-probability incorrect = pred.ne(target.data).cpu().sum() err = 100.*incorrect/target.numel() partialEpoch = epoch + batch_idx / len(trainLoader) - 1 print('Train Epoch: {:.2f} [{}/{} ({:.0f}%)]\tLoss: {:.4f}\tError: {:.3f}\t Dice: {:.6f}'.format( partialEpoch, nProcessed, nTrain, 100. * batch_idx / len(trainLoader), loss.data[0], err, dice_loss)) trainF.write('{},{},{}\n'.format(partialEpoch, loss.data[0], err)) trainF.flush()
def test_nll(args, epoch, model, testLoader, optimizer, testF, weights): model.eval() test_loss = 0 dice_loss = 0 incorrect = 0 numel = 0 for data, target in testLoader: if args.cuda: data, target = data.cuda(), target.cuda() data, target = Variable(data, volatile=True), Variable(target) target = target.view(target.numel()) numel += target.numel() output = model(data) test_loss += F.nll_loss(output, target, weight=weights).data[0] dice_loss += bioloss.dice_error(output, target) pred = output.data.max(1)[1] # get the index of the max log-probability incorrect += pred.ne(target.data).cpu().sum() test_loss /= len(testLoader) # loss function already averages over batch size dice_loss /= len(testLoader) err = 100.*incorrect/numel print('\nTest set: Average loss: {:.4f}, Error: {}/{} ({:.3f}%) Dice: {:.6f}\n'.format( test_loss, incorrect, numel, err, dice_loss)) testF.write('{},{},{}\n'.format(epoch, test_loss, err)) testF.flush() return err
def train_(self, input_img, input_qst, label): self.optimizer.zero_grad() output = self(input_img, input_qst) loss = F.nll_loss(output, label) loss.backward() self.optimizer.step() pred = output.data.max(1)[1] correct = pred.eq(label.data).cpu().sum() accuracy = correct * 100. / len(label) return accuracy
def train_epoch(epoch, args, model, data_loader, optimizer): model.train() pid = os.getpid() for batch_idx, (data, target) in enumerate(data_loader): data, target = Variable(data), Variable(target) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('{}\tTrain Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( pid, epoch, batch_idx * len(data), len(data_loader.dataset), 100. * batch_idx / len(data_loader), loss.data[0]))
def test_epoch(model, data_loader): model.eval() test_loss = 0 correct = 0 for data, target in data_loader: data, target = Variable(data, volatile=True), Variable(target) output = model(data) test_loss += F.nll_loss(output, target, size_average=False).data[0] # sum up batch loss pred = output.data.max(1)[1] # get the index of the max log-probability correct += pred.eq(target.data).cpu().sum() test_loss /= len(data_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(data_loader.dataset), 100. * correct / len(data_loader.dataset)))
def train(epoch, reporter): model.train() for batch_idx, (data, target) in enumerate(train_loader): if args.cuda: data, target = data.cuda(), target.cuda() data, target = Variable(data), Variable(target) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() reporter.record(batch_idx, loss=loss.data[0]) reporter.report()
def test_se(Model, weights, use_model_num, test_loader): index = len(weights) - use_model_num weights = weights[index:] model_list = [Model() for _ in weights] for model, weight in zip(model_list, weights): model.load_state_dict(weight) model.eval() if cuda: model.cuda() test_loss = 0 correct = 0 for data, target in test_loader: if cuda: data, target = data.cuda(), target.cuda() data, target = Variable(data), Variable(target) output_list = [model(data).unsqueeze(0) for model in model_list] output = torch.mean(torch.cat(output_list), 0).squeeze() test_loss += F.nll_loss(output, target).data[0] pred = output.data.max(1)[1] correct += pred.eq(target.data).cpu().sum() test_loss /= len(test_loader) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100 * correct / len(test_loader.dataset))) return test_loss
def train_normal(model, epochs, train_loader, vis=None): optimizer = optim.Adam(model.parameters()) _lr_list, _loss_list = [], [] for epoch in range(epochs): _epoch_loss = 0 for batch_idx, (data, target) in enumerate(train_loader): if cuda: data, target = data.cuda(), target.cuda() data, target = Variable(data), Variable(target) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) _epoch_loss += loss.data[0] / len(train_loader) loss.backward() optimizer.step() _loss_list.append(_epoch_loss) _lr_list.append(optimizer.state_dict()["param_groups"][0]["lr"]) if vis is not None and epoch % 10 == 0: vis.line(np.array(_lr_list), np.arange(epoch+1), win="lr_n", opts=dict(title="learning rate", xlabel="epochs", ylabel="learning rate (normal)")) vis.line(np.array(_loss_list), np.arange(epoch+1), win="loss_n", opts=dict(title="loss", xlabel="epochs", ylabel="training loss (normal)")) return model
def train_normal(model, epochs, vis=None): optimizer = optim.Adam(model.parameters()) _lr_list, _loss_list = [], [] for epoch in range(epochs): _epoch_loss = 0 for batch_idx, (data, target) in enumerate(train_loader): if cuda: data, target = data.cuda(), target.cuda() data, target = Variable(data), Variable(target) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) _epoch_loss += loss.data[0] / len(train_loader) loss.backward() optimizer.step() _loss_list.append(_epoch_loss) _lr_list.append(optimizer.state_dict()["param_groups"][0]["lr"]) if vis is not None and epoch % 10 == 0: vis.line(np.array(_lr_list), np.arange(epoch+1), win="lr_n", opts=dict(title="learning rate", xlabel="epochs", ylabel="learning rate (normal)")) vis.line(np.array(_loss_list), np.arange(epoch+1), win="loss_n", opts=dict(title="loss", xlabel="epochs", ylabel="training loss (normal)")) return model
def classification_accuracy(Q, data_loader): Q.eval() labels = [] test_loss = 0 correct = 0 for batch_idx, (X, target) in enumerate(data_loader): X = X * 0.3081 + 0.1307 X.resize_(data_loader.batch_size, X_dim) X, target = Variable(X), Variable(target) if cuda: X, target = X.cuda(), target.cuda() labels.extend(target.data.tolist()) # Reconstruction phase output = Q(X)[0] test_loss += F.nll_loss(output, target).data[0] pred = output.data.max(1)[1] correct += pred.eq(target.data).cpu().sum() test_loss /= len(data_loader) return 100. * correct / len(data_loader.dataset) #################### # Train procedure ####################
def train(epoch,lr,f): model.train() train_loss=0 for batch_idx, (data, target) in enumerate(train_loader): if args.cuda: data, target = data.cuda(), target.cuda() data, target = Variable(data), Variable(target) for param_group in optimizer.param_groups: param_group['lr'] = lr optimizer.zero_grad() output,l=model(data,target) loss = F.nll_loss(output[-1], target) if not args.lastout: for i in range(seq-1): loss = F.nll_loss(output[i], target)+loss loss.backward() optimizer.step() train_loss+=loss.data[0] if epoch>=0: torchvision.utils.save_image(l,'{}.png'.format(epoch)) if batch_idx % args.log_interval == 0 and args.verbose: #print(l,file=f) print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.data[0])) train_loss /= len(train_loader) return train_loss