代码之家  ›  专栏  ›  技术社区  ›  Elias E.

pytorch神经网络中的交叉熵损失。交叉熵()

  •  8
  • Elias E.  · 技术社区  · 7 年前

    也许有人能帮我。我试图计算网络给定输出的交叉熵损失

    print output
    Variable containing:
    1.00000e-02 *
    -2.2739  2.9964 -7.8353  7.4667  4.6921  0.1391  0.6118  5.2227  6.2540     
    -7.3584
    [torch.FloatTensor of size 1x10]
    

    以及所需的标签,其形式如下

    print lab
    Variable containing:
    x
    [torch.FloatTensor of size 1]
    

    其中x是0到9之间的整数。 http://pytorch.org/docs/master/nn.html )

    criterion = nn.CrossEntropyLoss()
    loss = criterion(output, lab)
    

    这应该行得通,但不幸的是我出现了一个奇怪的错误

    TypeError: FloatClassNLLCriterion_updateOutput received an invalid combination of arguments - got (int, torch.FloatTensor, !torch.FloatTensor!, torch.FloatTensor, bool, NoneType, torch.FloatTensor, int), but expected (int state, torch.FloatTensor input, torch.LongTensor target, torch.FloatTensor output, bool sizeAverage, [torch.FloatTensor weights or None], torch.FloatTensor total_weight, int ignore_index)
    

    有人能帮我吗?我真的很困惑,尝试了几乎所有我能想象到的有用的东西。

    最好的

    1 回复  |  直到 7 年前
        1
  •  7
  •   Sung Kim    7 年前

    请检查此代码

    import torch
    import torch.nn as nn
    from torch.autograd import Variable
    
    output = Variable(torch.rand(1,10))
    target = Variable(torch.LongTensor([1]))
    
    criterion = nn.CrossEntropyLoss()
    loss = criterion(output, target)
    print(loss)
    

    这将很好地打印出损失:

    Variable containing:
     2.4498
    [torch.FloatTensor of size 1]