pytorch运行output = self.model(batch)时出现RuntimeError:out of memory,

只需要改一下程序加个东西就好了:

with torch.no_grad():
     output = self.model(batch)

改完之后接着在执行

batch = Variable(batch)
label = Variable(label)
self.criterion(output, label).backward()

出现:

RunTimeError:element 0 of variables does not require grad and does not have a grad_fn

原因是backward()操作要求其操作的对象requires_grad属性是True,可以输出

print(self.criterion(output, label).requires_grad)

发现是False
然后对上面三句代码进行修改。

batch = Variable(batch,requires_grad = True)
label = Variable(label)
loss = self.criterion(output, label)
loss = Variable(loss,requires_grad = True)
print("requires_grad",self.criterion(output, label).requires_grad)
loss.backward()

这里要用loss复制self.criterion(output, label),是为了是修改self.criterion(output, label)的requires_grad属性。

你可能感兴趣的:(Ubuntu使用,环境配置)