작성
·
270
0
안녕하세요.
LSTM 모델 구축할 때,
self.fc = nn.Linear(hidden_size*sequence_length,1) 이부분에서 hidden_szie와 sequence_length를 곱해준 이유가 무엇인지 궁금합니다.
답변 1
0
안녕하세요.
lstm은 각 시퀀스 마다 아웃풋을 뽑아내게 됩니다.
여기서 마지막 시퀀스의 결과만 사용할 지 (n to 1) 전체를 사용할지 (n to n)를 정하시면 됩니다.
우리 코드에서는 전체 아웃풋을 concatenate하여 사용하게 설계되어 있습니다.
즉, (hidden_size, sequence_length)의 크기를 가진 피쳐가 나오게 됩니다.
그 다음 hidden_size*sequence_length의 크기인 벡터를 reshape을 이용하여 만들어서 fc에 넣게 됩니다.
각 라인마다 torch.Size를 확인해 보세요 :)
out, _ = self.lstm(x, (h0, c0)) # output, (hn, cn): torch.Size([20, 5, 8])
out = out.reshape(out.shape[0], -1) :torch.Size([20, 40])
out = self.fc(out): torch.Size([20, 1])
감사합니다.