RuntimeError: Can't call numpy() on Variable that requires grad. Use var.detach().numpy() instead

橙三吉。 提交于 2020-01-24 07:18:29

welcome to my blog

问题描述

我想将pytorch的计算结果赋值给numpy array, S[i, v] = torch.div(row_res, row_sum), 其中S是numpy array, 结果报错RuntimeError: Can’t call numpy() on Variable that requires grad. Use var.detach().numpy() instead, 意思是: 需要求导的变量无法调用numpy()方法

解决方法

既然报错信息说需要求导的变量无法调用numpy()方法, 那就将变量变为不需要求导的即可, 调用detach()方法即可使得变量不需要求导, 重新执行S[i, v] = torch.div(row_res, row_sum).detach(), 不再报错, 成功解决

上面的解决方法适用于不求导的变量, 如果变量需要求导呢?
另一种解决办法, 将S转成Tensor, 这样就不用在numpy array和Tensor中来回转换了, 同时也能指定变量是否需要求导
刚上手pytorch, 还不熟悉

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!