我知道两种从梯度计算中排除计算元素的方法 backward
方法一:使用with torch.no_grad()
with torch.no_grad():
y = reward + gamma * torch.max(net.forward(x))
loss = criterion(net.forward(torch.from_numpy(o)), y)
loss.backward();
Run Code Online (Sandbox Code Playgroud)
方法二:使用.detach()
y = reward + gamma * torch.max(net.forward(x))
loss = criterion(net.forward(torch.from_numpy(o)), y.detach())
loss.backward();
Run Code Online (Sandbox Code Playgroud)
这两者有区别吗?两者都有好处/坏处吗?
我刚刚安装了 tensorflow,并且正在尝试让基础知识发挥作用。但是,导入语句以红色下划线标出,并带有消息“未解析的引用'层'”。不过代码确实运行正常。
我已经尝试了这个问题中的一些建议:PyCharm 显示了有效代码的未解析引用错误。
但是,这个问题与我的具体错误无关,我想知道我的错误的原因是什么,以及它是否只是 pycharm 级别错误的一部分,还是与 tensorflow 相关的问题。
我的代码是:
import tensorflow as tf;
from tensorflow.keras import layers;
Run Code Online (Sandbox Code Playgroud)
它在“图层”下方的红色锯齿下划线上给出了错误“未解析的参考‘图层’”,但没有说明如何解决它。