title: Running out of memory during evaluation in Pytorch
body: <p>I'm training a model in pytorch. Every 10 epochs, I'm evaluating the train and test error on the entire train and test dataset. For some reason the evaluation function is causing out-of-memory on my GPU. This is strange because I have the same batchsize for training and evaluation. I believe it's due to the net.forward() method being called repeated and having all the hidden values stored in memory but I'm not sure how to get around this?</p>
  
  <pre><code>def evaluate(self, data):
      correct = 0
      total = 0
      loader = self.train_loader if data == "train" else self.test_loader
      for step, (story, question, answer) in enumerate(loader):
          story = Variable(story)
          question = Variable(question)
          answer = Variable(answer)
          _, answer = torch.max(answer, 1)
  
          if self.config.cuda:
              story = story.cuda()
              question = question.cuda()
              answer = answer.cuda()
  
          pred_prob = self.mem_n2n(story, question)[0]
          _, output_max_index = torch.max(pred_prob, 1)
          toadd = (answer == output_max_index).float().sum().data[0]
          correct = correct + toadd
          total = total + captions.size(0)
  
      acc = correct / total
      return acc
  </code></pre>