5D 입력 텐서에서 3D 컨볼 루션을 수행하는 네트워크가 있습니다. (BatchSize, NumClasses, x-dim, y-dim, z-dim)에 해당하는 크기 (1, 12, 60, 36, 60) 인 경우 네트워크 출력. voxel-wise 크로스 엔트로피 손실을 계산해야합니다. 그러나 나는 오류가 계속 발생합니다. 예제 Pytorch의 3D 의미 론적 세분화를위한 CrossEntropyLoss
torch.nn.CrossEntropyLoss()
사용하여 교차 엔트로피 손실을 계산하기 위해 노력하고, 나는 다음과 같은 오류 메시지가 점점 계속 : 내가 만들 때
import torch
import torch.nn as nn
from torch.autograd import Variable
criterion = torch.nn.CrossEntropyLoss()
images = Variable(torch.randn(1, 12, 60, 36, 60)).cuda()
labels = Variable(torch.zeros(1, 12, 60, 36, 60).random_(2)).long().cuda()
loss = criterion(images.view(1,-1), labels.view(1,-1))
같은 일이 발생 : 여기
RuntimeError: multi-target not supported at .../src/THCUNN/generic/ClassNLLCriterion.cu:16
것은 내 코드의 추출물 라벨을위한 일 핫 텐서 :
nclasses = 12
labels = (np.random.randint(0,12,(1,60,36,60))) # Random labels with values between [0..11]
labels = (np.arange(nclasses) == labels[..., None] - 1).astype(int) # Converts labels to one_hot_tensor
a = np.transpose(labels,(0,4,3,2,1)) # Reorder dimensions to match shape of "images" ([1, 12, 60, 36, 60])
b = Variable(torch.from_numpy(a)).cuda()
loss = criterion(images.view(1,-1), b.view(1,-1))
잘못하고있는거야? 누군가가 5D 출력 텐서에서 교차 엔트로피 계산의 예를 제공 할 수 있습니까?