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]
存在するためであり、変数の形状は、テスト対象のバッチのターゲット クラスが含まれているためです (テストのバッチ サイズは に設定されています)。では、問題は、ネットワークの損失関数としてどのように適用できるかということです。10
target
[1000]
10
BCELoss
CNN
ps 私が使用するデータセットは、ライブラリによって提供されるMNISTtorchvision
データセットです。
psここで同様の質問に対する回答は、私の場合の解決策を提案していません。