【问题标题】:How do I pass an array of tensors into the criterion/loss function in PyTorch?如何将张量数组传递给 PyTorch 中的标准/损失函数?
【发布时间】:2021-05-30 08:20:49
【问题描述】:

我的损失函数报错:

self.loss_fn = nn.MSELoss()

#### -- Snip ####

loss = self.loss_fn(predictions, targets) # Error here: 'list' object has no attribute 'size'
loss.backward()

我的预测是一个张量数组,如下所示:

predictions = []
for _ in range(100):
   prediction = MyNeuralNet(inputs)
   predictions.append(prediction)

如何将张量数组传递给我的损失标准函数而不出现上述错误?

【问题讨论】:

  • 根据您显示的内容,此错误应该是不可能的。 (MSELoss 返回一个张量,而不是一个列表。)请提供足够的代码来重现该问题——minimal reproducible example
  • 啊,是的,评论在错误的行上。可能可以从上下文中推断出来,但是哦。
  • 现在您已经编辑了问题,它与this one 重复。

标签: machine-learning neural-network pytorch gradient-descent


【解决方案1】:

通过使用torch.stack 我可以解决我的问题:

predictions = torch.stack(predictions)
loss = self.loss_fn(predictions, targets)

【讨论】:

    猜你喜欢
    • 2021-06-12
    • 1970-01-01
    • 2023-01-12
    • 2022-01-11
    • 2020-05-05
    • 2020-09-07
    • 1970-01-01
    • 2020-07-28
    • 2021-08-14
    相关资源
    最近更新 更多