BiLSTM

김명섭·2024년 9월 23일


(bidirectional 값이 True, False 가 아닌 경우는 고려하지 않았다.)

lstm에서 bidirectional을 True로 설정하면, num_layers가 2배가 되는 것과 같기 때문에, hidden_state(hn)와 cell_state(cn)도 2배로 만들어야 한다.
따라서, hidden_state와 cell_state의 크기가
2 x num_layers, batch_size, hidden_size 가 된다.
(batch_first는 input, output 와 연관이 있는 것)
그리고 최종 출력은 batch_size, seq_length, hidden_size x 2 이다.
(양방향 lstm에서 각 하나씩 나오는 것을 합친다.)

2 x num_layers, batch_size, hidden_size 크기의 h0, c0 초기값과
batch_size, seq_length, input_size(input vector의 크기) 크기의 input을
input, (h0, c0) 형태로,
input_size, hidden_size(순환할때 사용하는 hidden_state와 cell_state의 크기), num_layers(stacking layer 개수), bidirectional=True인 LSTM에 넣으면,
output, (hn, cn) 형태로 return 된다.
output : (batch_size, seq_length, hidden_size x 2)
hn : (2 x num_layers, batch_size, hidden_size)
cn : (2 x num_layers, batch_size, hidden_size)

profile
ML Engineer

0개의 댓글