1

BCELossニューラル ネットワークの損失関数として使用すると、 ValueError: Target and input must have the same number of elements.

これがテスト段階の私のコードです(これは非常に典型的なテスト段階のコードです):

network.eval()
test_loss = 0
correct = 0
with torch.no_grad():
    for data, target in test_loader:
        data, target = data.to(device), target.to(device)

    output = network(data)
    output = output.to(device)
    test_loss += loss_function(output, target).item() # error happens here
    _, predicted = torch.max(output.data, 1)
    correct += (predicted == target).sum().item()

変数の形状は、 ( MNISTデータセット内の) ターゲット クラスoutput[1000, 10]存在するためであり、変数の形状は、テスト対象のバッチのターゲット クラスが含まれているためです (テストのバッチ サイズは に設定されています)。では、問題は、ネットワークの損失関数としてどのように適用できるかということです。10target[1000]10BCELossCNN

ps 私が使用するデータセットは、ライブラリによって提供されるMNISTtorchvisionデータセットです。

psここで同様の質問に対する回答は、私の場合の解決策を提案していません。

4

1 に答える 1