• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

LSTM fc 코드 관련 문의

22.08.30 11:26 작성 조회수 163

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])

감사합니다.