【问题标题】:Calculation cross entropy for batch of two tensors计算批量两个张量的交叉熵
【发布时间】:2022-01-05 08:44:33
【问题描述】:

我想计算两个张量批次的交叉熵:

x = torch.tensor([[[ 2.1137, -1.3133,  0.7930,  0.3330,  0.9407],
        [-0.8380, -2.0299, -1.1218,  0.3150,  0.4797],
        [-0.7439,  0.0753, -0.1121,  0.0096, -1.2621]]])

y = torch.tensor([[1,2,3]])
    ​
loss = nn.CrossEntropyLoss()(x, y)

​

但收到异常:

RuntimeError: Expected target size [1, 5], got [1, 3]

请说明问题所在……

【问题讨论】:

    标签: python pytorch torch cross-entropy


    【解决方案1】:

    你的 x 在列表中有 5 个元素,你的 y 有 3 个元素,目标大小必须匹配

    import torch
    import torch.nn as nn
    x = torch.tensor([[[ 2.1137, -1.3133,  0.7930,  0.3330,  0.9407],
            [-0.8380, -2.0299, -1.1218,  0.3150,  0.4797],
            [-0.7439,  0.0753, -0.1121,  0.0096, -1.2621]]])
    y = torch.tensor([[1,2,2,2,2]])
    loss = nn.CrossEntropyLoss()(x, y)
    

    此外,您的模型将输出形状为 [,2] 的张量。这被传递给 CrossEntropyLoss, 所以你的目标必须是一个形状为 [,2] 的张量

    您的一个目标标签的值为 3,因此您会收到错误消息。与 4 和 5 相同

    您需要向 x 添加更多层张量。对于 3 个,您只需再添加 1 个。

    如果您想获得值 5,这是一个示例。

    x = torch.tensor([[[ 2.1137, -1.3133,  0.7930,  0.3330,  0.9407],
            [-0.8380, -2.0299, -1.1218,  0.3150,  0.4797],
            [-0.7439,  0.0753, -0.1121,  0.0096, -1.2621],
            [-0.7439,  0.0753, -0.1121,  0.0096, -1.2621],               
            [-0.7439,  0.0753, -0.1121,  0.0096, -1.2621],
            [-0.7439,  0.0753, -0.1121,  0.0096, -1.2621]]])
    y = torch.tensor([[1,2,3,4,5]])
    loss = nn.CrossEntropyLoss()(x, y)
    

    我希望这能让你把 x 和 y 的关系拼凑在一起。

    【讨论】:

      猜你喜欢
      • 2017-10-22
      • 1970-01-01
      • 2018-06-06
      • 2016-06-28
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 2017-07-20
      • 2018-06-10
      相关资源
      最近更新 更多