0
点赞
收藏
分享

微信扫一扫

RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn

kolibreath 2022-01-15 阅读 95

问题描述

在训练神经网络的时候,在

...
		loss_sum = torch.sum(...)
		self.optimizer.zero_grad()
  	 -->loss_sum.mean().backward()
		self.optimizer.step()
...

报错

尝试解决

情况一

这是由于PyTorch在创建张量的时候默认requires_grad=False,这时候我们需要手动设置一下

		loss_sum = torch.sum(...)
	 -->loss_sum.requires_grad_(True)
		self.optimizer.zero_grad()
  	 	loss_sum.mean().backward()
		self.optimizer.step()

情况二

第二种情况是由于自己设置的原因,可能是因为自己在训练函数前面加了@torch.no_grad()

@torch.no_grad()
def train():
	pass

这时候可以看情况把这个去掉,或者使用with torch.no_grad()

def train():
	...
	with torch.no_grad():
		...
	...
	pass

稍微具体一些的说明可以移步【pytorch系列】 with torch.no_grad():用法详解。

举报

相关推荐

【chatgpt】pytorch中grad_fn

0 条评论