def trainBatch(self, net, criterion, optimizer, cpu_images, cpu_texts): batch_size = cpu_images.size(0) loadData(self.image, cpu_images) t, l = self.converter.encode(cpu_texts) loadData(self.text, t) loadData(self.length, l) preds = net(self.image) preds_size = Variable(torch.IntTensor([preds.size(0)] * batch_size)) cost = criterion(preds, self.text, preds_size, self.length) / batch_size net.zero_grad() cost.backward() optimizer.step() return cost
def trainBatch(net, criterion, optimizer, cpu_images, cpu_texts): # data = train_iter.next() # cpu_images, cpu_texts = data batch_size = cpu_images.size(0) loadData(image, cpu_images) t, l = converter.encode(cpu_texts) loadData(text, t) loadData(length, l) preds = net(image) preds_size = Variable(torch.IntTensor([preds.size(0)] * batch_size)) cost = criterion(preds, text, preds_size, length) / batch_size net.zero_grad() cost.backward() optimizer.step() return cost