ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Bi-Directional LSTM (BLSTM) parameter 이해
    연구/Machine Learning 2020. 9. 22. 21:56

     

    LSTM을 다루던 중 Bi-directional LSTM 을 사용하게 됐다.

     

    개념은 아래 그림과 같다. 많은 블로그 및 자료에서 BLSTM이 무엇인지는 잘 설명하고 있으므로, 기본적인 내용은 pass

     

    진행한 작업은 pytorch nn.LSTM과 동일한 역할을 수행하는 myLSTM 모듈을 만드는 것이었다.

     

    모듈을 만들고 nn.LSTM과 같은 output을 내는지 확인해봤는데,

    forward dirction의 output은 동일한 값을 뱉었지만 backward direction output은 무슨 짓을 해도 다른 결과를 보여줬다.

     

    결국 찾아낸 해답은 아래와 같다.

     

    난 모든 LSTM cell이 같은 weight, bias parameter를 공유한다고 생각했는데 forward direction과 backward direction의 weight와 bias가 각각 따로 존재했더라..

     

    torch.nn.LSTM variables 설명

    torch.nn.LSTM document에는 weight, bias가 LSTM.weight_ih_l[k] 로만 기술돼있는데,

    bidirectional=True 로 학습시키면 LSTM.weight_ih_l[k]_reverse 처럼 _reverse가 붙은 parameter가 추가로 학습된다.

    이 parameter를 backward LSTM에 사용하면 된다.

     

    사실 조금 생각해보면 backward LSTM network의 parameter가 존재하는 것은 당연하다. 

    Bi-directional LSTM은 2 layer LSTM 중 하나의 layer에는 input이 역순으로 들어가는거니까..

     

    시간만 엄청 날렸다.

     

    https://pytorch.org/docs/stable/generated/torch.nn.LSTM.html\

     

    LSTM — PyTorch 1.6.0 documentation

    Shortcuts

    pytorch.org

     

     

     

     

    '연구 > Machine Learning' 카테고리의 다른 글

    Convolution & Batchnorm Fusing  (2) 2020.09.23

    댓글

Designed by Tistory.