티스토리 뷰
Computer/이게 왜 안되지?
[이왜안?] Input type (torch.FloatTensor) and weight type (torch.DoubleTensor) should be the same or input should be a MKLDNN tensor and weight is a dense tensor
벼랑끝과학자 2022. 12. 30. 17:06brief solution.
1. Whenever you train your model. You must check if your model and input data both are on the same device. (cpu or cuda)
2. And you must check the input data type and model parameters' data type are same
Input type은 torch.FloatTensor인데 weight type(model parameter)는 torch.DoubleTensor라서 나타나는 에러라고 생각된다.
for epoch in range(train_epoch+1):
model.train()
for i, (v_d, v_p, label) in enumerate(train_generator):
v_d = v_d.float().to(device)
v_p = v_p.float().to(device)
score = model(v_d, v_p)
label = Variable(torch.from_numpy(label).float()).to(device)
n = torch.squeeze(sigmoid(score), 1)
loss = loss_fn(n, label)
train_loss_history.append(loss)
optimizer.zero_grad()
loss.backward()
optimizer.step()
...
보통 모델에 학습하기 전 데이터를 float타입으로 변경해준다. 따라서 나의 Input type은 torch.FloatTensor이다.
그러나 내가 만든 model은 double 타입이었다. 따라서 input되는 값과 model의 parameter간의 type이 맞지 않아서 계산이 불가능하다고 생각한다.
class CNN_RNN(nn.Module):
def __init__(self, encoding, **config):
super(CNN_RNN, self).__init__()
...
self.conv = nn.ModuleList([nn.Conv1d(in_channels=in_ch[i],
out_channels=in_ch[i+1],
kernel_size = kernels[i]) for i in range(layer_size)])
self.conv = self.conv.double()
...
self.direction = 2 if config['rnn_drug_bidirectional'] else 1
self.rnn = self.rnn.double()
...
문제는 이부분이었다.
def forward(self, v):
# 1. CNN
for layer in self.conv:
v = F.relu(layer(v))
해당 부분에서 input인 v를 double type으로 바꿔주지 않았기 때문에 실행되지 않았다.
def forward(self, v):
# 1. CNN
for layer in self.conv:
v = F.relu(layer(v.double()))
해당 부분의 input인 v를 v.double()형태로 변경해주니 해결되었다.
'Computer > 이게 왜 안되지?' 카테고리의 다른 글
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Matrix algebra
- marginal likelihood
- elementry matrix
- 베이즈정리
- manim library
- eigenvector
- 3B1B따라잡기
- manimtutorial
- kld
- manim
- ai인공지능
- 제한볼츠만머신
- 선형대수
- 이왜안
- MLE
- 파이썬
- 백준
- 최대우도추정
- Manimlibrary
- 기계학습
- ai신약개발
- variational autoencoder
- vae
- 인공지능
- eigenvalue
- 오일석기계학습
- kl divergence
- 3b1b
- MatrixAlgebra
- MorganCircularfingerprint
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함