그림 7-23과 같이 LSTM에서 중요한 것은 게이트입니다. 게이트는 망각, 입력, 셀, 출력으로 구성되며 이 모든 게이트는 ①″처럼 구할 수 있습니다. ①″를 풀어서 작성하면 다음과 같습니다.
ⓐ 입력층으로 입력되는 훈련 데이터셋의 특성(feature) 수(칼럼 개수)
ⓑ 입력층과 은닉층 사이의 가중치
ⓒ 입력층과 은닉층 사이의 바이어스
ⓓ 은닉층의 뉴런/유닛 개수(은닉층의 특성(feature) 수)
ⓔ 은닉층과 은닉층 사이의 가중치
ⓕ 은닉층과 은닉층 사이의 바이어스
이렇게 계산된 게이트(gates)는 ①‴처럼 gates.chunk(4, 1)에 의해 네 개로 쪼개져서 각각 망각, 입력, 셀, 출력 게이트를 의미하는 변수에 저장됩니다. 즉, gates가 네 개로 쪼개지는 상황이기 때문에 4가 곱해졌던 것입니다. 일반적으로 바이어스도 4를 곱해 주지만 예제에서는 은닉층의 뉴런/유닛 개수만 4를 곱해 주었습니다.
또한, 여기에서 사용되는 torch.chunk() 사용 방법은 다음과 같습니다.