파이썬 rnn 예제

이 메모리를 사용하면 네트워크에서 장기 종속성을 시퀀스로 학습할 수 있으므로 예측할 때 문장의 다음 단어인지, 감정 분류인지 또는 다음 온도 측정인지 를 고려할 수 있습니다. . RNN은 서열을 처리하는 인간의 방법을 모방하도록 설계되었습니다 : 우리는 단어 자체대신 응답을 형성 할 때 전체 문장을 고려합니다. 예를 들어 다음 문장을 고려해 보십시오: 아래에 설명될 예제 코드에서 텍스트 예측을 수행하려고 합니다. Word2Vec 알고리즘의 이전 자습서에서 설명한 것처럼 단어는 의미 있는 단어 벡터를 사용하여 신경망에 입력됩니다. 이 벡터는 단어의 의미의 일부 측면을 캡처하는 방식으로 인코딩됩니다 (의미는 일반적으로 단어가 일반적으로 발견되는 컨텍스트로 해석됩니다). 따라서 아래의 LSTM 네트워크에 입력된 각 단어는 650 길이 벡터가 됩니다. 다음으로, 언롤링된 LSTM 네트워크에 단어 시퀀스를 입력하기 때문에 각 입력 행에 대해 이러한 단어 벡터 중 35개에 대해 입력합니다. 따라서 각 행의 입력은 크기(35 x 650)가 됩니다. 마지막으로 TensorFlow를 사용하면 다차원 텐서를 통해 데이터 일괄 처리를 처리할 수 있습니다(기본 TensorFlow에 대해 자세히 알아보려면 이 TensorFlow 자습서를 참조하십시오). 일괄 처리 크기가 20인 경우 학습 입력 데이터(20 x 35 x 650)가 됩니다.

나중에 참조하기 위해 텐서 크기를 제시 한 방법 (예 : (20 x 35 x 650))을 배치 크기가 텐서의 첫 번째 차원인 «배치 메이저»배열이라고합니다. 우리는 또한 «시간 주요»형식으로 데이터를 정렬 할 수 있습니다, 이는 될 것 (35 x 20 x 650) – 동일한 데이터, 그냥 다른 배열. 이 네트워크를 구성하는 방법에는 여러 가지가 있으며 전자 필기장에는 여러 가지 방법이 있습니다. 예를 들어 서로 겹쳐진 두 개의 LSTM 레이어, 양방향에서 시퀀스를 처리하는 양방향 LSTM 레이어 또는 더 많은 밀도 레이어를 사용할 수 있습니다. 나는 잘 작동 하기 위해 위의 설정을 발견. 모델의 핵심은 한 번에 한 단어를 처리하고 문장의 다음 단어에 대한 가능한 값의 확률을 계산하는 LSTM 셀로 구성됩니다. 네트워크의 메모리 상태는 0의 벡터로 초기화되고 각 단어를 읽은 후 업데이트됩니다. 계산상의 이유로, 우리는 크기 batch_size의 미니 일괄 처리로 데이터를 처리합니다. 이 예제에서는 current_batch_of_words가 단어의 «문장»과 일치하지 않는다는 점에 유의해야 합니다. 일괄 처리의 모든 단어는 시간 t.

TensorFlow 자동으로 당신을 위해 각 일괄 처리의 그라데이션을 합계 합니다. RNN널리 텍스트 분석, 이미지 캡션, 감정 분석 및 기계 번역에 사용됩니다. 예를 들어, 영화 리뷰를 사용하여 영화를 본 후 관중이 느끼는 느낌을 이해할 수 있습니다.