【发布时间】:2022-01-04 18:29:13
【问题描述】:
我目前正在研究一个 PyTorch 模型,该模型应该可以解决多标签、二元分类问题。
我模型的最后一层是 Sigmoid 层,我想使用 Pytorch 的 BCELoss。
def train_step(self, x, y):
self._optim.zero_grad()
output = self._model(x)
loss = self._crit(output, y)
loss.backward()
self._optim.step()
在这里,y 是例如tensor([[0, 0]])(两个标签为整数),
但输出是例如tensor([[0.5332, 0.3933]], grad_fn=<SigmoidBackward>).
这会导致错误:
{RuntimeError}预期的标量类型 Float 的对象,但得到了标量类型 对参数 #2 'target' 的调用很长 _thnn_binary_cross_entropy_forward
知道如何解决这个问题吗?
【问题讨论】: