1
私はモデルをPytorchでトレーニングしています。 10エポックごとに、私は電車を評価し、列車全体とテストデータセットでエラーをテストしています。何らかの理由で、評価関数が自分のGPUにメモリ不足を引き起こしています。私はトレーニングと評価のために同じバッチサイズを持っているので、これは奇妙です。 net.forward()メソッドが繰り返し呼び出され、すべての隠し値がメモリに格納されているためだと思いますが、これを回避する方法がわかりません。Pytorchで評価中にメモリが不足しています
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
データ読み込み部分を共有してください。 –