프로그래밍/DeepLearning
[딥러닝,Pytoch] Dimension out of range (expected to be in range of [-1, 0], but got 1) - softmax dimension error
jaeni
2020. 7. 30. 19:48
반응형
CrossEntropyLoss를 사용 할 때 차원이 맞지 않는다고 에러가 났었다.
loss_function = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(),lr=learning_rate)
loss_list = []
for epoch in range(num_epochs):
for f,l in list(zip(X_train,y_train)):
preds = model(f) #Fully Connected Network
loss = loss_function(preds,l)
처음 코드는 이러한 형태였는데. 이 상태로 preds와 l의 size를 찍어보면
preds는 torch.Size([3]) / l은 torch.Size([])의 형태였다.
그래서 reshape 함수를 사용해
for epoch in range(num_epochs):
for f,l in list(zip(X_train,y_train)):
preds = model(f).reshape(1,3)
l = l.reshape(1)
loss = loss_function(preds,l)
이와 같이 각각의 size를 바꿔주었다.
이렇게 reshape를 활용해 바꾸고 다시 shape를 출력하면
torch.Size([1, 3]) torch.Size([1])와 같이 변하여 출력된다.
** 나같은 경우는 l이 int라서 에러가 떴는데 이는 l뒤에 .long()을 붙여주면 해결된다.
반응형