- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试获取 d(loss)/d(input)
.我知道我有 2 个选择。
第一个选项:
loss.backward()
dlossdx = x.grad.data
# criterion = nn.CrossEntropyLoss(reduce=False)
# loss = criterion(y_hat, labels)
# No need to call backward.
dlossdx = torch.autograd.grad(outputs = loss,
inputs = x,
grad_outputs = ? )
grad_outputs
在第二个选项中?
d(CE)/d(y_hat)
?由于 pytorch 交叉熵包含 softmax,这将需要我使用 Kronecker delta 预先计算 softmax 导数。
d(CE)/d(CE)
这是torch.ones_like?
最佳答案
让我们试着了解这两个选项是如何工作的。
我们将使用此设置
import torch
import torch.nn as nn
import numpy as np
x = torch.rand((64,10), requires_grad=True)
net = nn.Sequential(nn.Linear(10,10))
labels = torch.tensor(np.random.choice(10, size=64)).long()
criterion = nn.CrossEntropyLoss()
loss = criterion(net(x), labels)
loss.backward(retain_graph=True)
dloss_dx = x.grad
dloss_dx2 = torch.autograd.grad(loss, x)
torch.autograd.grad
如果将多个输出作为元组传递,则返回 dout/dx 的总和。但由于损失是标量,你不需要通过
grad_outputs
因为默认情况下它会认为它是一个。
关于pytorch - torch.autograd.grad 中的 grad_outputs(CrossEntropyLoss),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54166206/
也许有人可以帮助我。我正在尝试计算网络给定输出的交叉熵损失 print output Variable containing: 1.00000e-02 * -2.2739 2.9964 -7.835
我正在尝试在 PyTorch 中对一个简单的 0,1 标记数据集执行逻辑回归。标准或损失定义为:criterion = nn.CrossEntropyLoss() .型号为:model = Logis
我知道 PyTorch 的 LogSoftmax 函数基本上只是一种在数值上更稳定的计算方式 Log(Softmax(x)) . Softmax 可让您将线性层的输出转换为分类概率分布。 pytorc
我正在尝试在 CIFAR10 数据集上训练一个非常基本的 CNN,但出现以下错误:AttributeError: 'CrossEntropyLoss' 对象没有属性 'backward' criter
我正在尝试获取 d(loss)/d(input) .我知道我有 2 个选择。 第一个选项: loss.backward() dlossdx = x.grad.data 第二种选择:
我知道当使用 nn.CrossEntropyLoss 作为损失函数时,不需要在神经网络的输出层使用 nn.Softmax() 函数。 但是我需要这样做,有没有办法抑制 nn.CrossEntropyL
我正在进行一个使用加速数据预测某些事件的项目。但是我在损失计算上有问题。我正在为此使用 CrossEntropyLoss。 数据用于它如下我使用每行的前 4 个数据来预测索引,就像每行的最后一个一样。
我使用的是 PyTorch 1.5.0 版。当我传递一个大小为 [8,21,400,400] 且目标大小为 [8,400,400] 的输入 torch 张量时,程序会引发 TypeError:迭代 0
我使用的是 PyTorch 1.5.0 版。当我传递一个大小为 [8,21,400,400] 且目标大小为 [8,400,400] 的输入 torch 张量时,程序会引发 TypeError:迭代 0
我是一名优秀的程序员,十分优秀!