rnn 예제 코드

By Dave Sanasack, on Aug, 02 2019

다음은 정방향 전달을 수행하기 위한 코드입니다(위의 루프의 연속에 있음): 반복 신경망의 최적화는 기존 신경망과 동일합니다. 이 자습서의 다음 부분에서 최적화를 코딩하는 방법을 자세히 살펴보겠습니다. 아래에서는 간단한 RNN을 텐서플로우에서 코딩하여 단계와 출력의 모양을 이해합니다. 나머지 코드는 이전과 동일합니다. Adam 최적화 를 사용하여 손실을 줄입니다(즉, MSE): 이 폭발 그라데이션은 $w_x!=에서 샘플링된 점에 설명되어 있으며, w_{rec}\=2$는 역전파 중에 그라데이션이 기하급수적으로 증가합니다(y축은 로그 배율). $w_x=!1, w_{rec}\-2$ 포인트는 $w_{rec}$가 음수이기 때문에 다른 종류의 교대 그라데이션 폭발을 보여 줍니다. 이 폭발적인 그라데이션은 $w_{rec}$ 매개 변수의 변경사항에 매우 민감하게 반응할 수 있음을 의미합니다. 코드를 살펴보겠습니다. 먼저 필요한 라이브러리 가져오기: 구체적으로 살펴보고 언어 모델에 대한 RNN의 모양을 살펴보겠습니다. 입력은 (위에서 인쇄 된 예제와 마찬가지로) 단어의 시퀀스가 될 것이며 각각은 하나의 단어입니다. 그러나 한 가지 더 있다: 매트릭스 곱셈 작동 하는 방법 때문에 우리는 단순히 단어 인덱스를 사용할 수 없습니다 (예: 36) 입력으로.

대신, 우리는 크기 어휘_크기의 하나의 뜨거운 벡터로 각 단어를 나타냅니다. 예를 들어 인덱스 36이 있는 단어는 모든 0의 벡터이고 위치 36의 1이 됩니다. 따라서 각 행은 벡터가 되고 각 행이 단어를 나타내는 행렬이 됩니다. 전처리에서 수행하는 대신 신경망 코드에서 이 변환을 수행합니다. 네트워크의 출력은 비슷한 형식을 가지고 있습니다. 각 요소는 어휘_size 요소의 벡터이며, 각 요소는 해당 단어가 문장의 다음 단어가 될 확률을 나타냅니다. 안녕하세요 Lew – 파일은 lstm_tutorial.py @ https://github.com/adventuresinML/adventures-in-ml-code 간단한 LSTM에 대한 코드는 다음과 같은 설명과 함께 다음과 같습니다: 좋은 기사! 예측을 위해 둘 이상의 타임계열을 사용하는 경우 코드를 어떻게 수정해야 합니까? 예를 들어 Keras는 놀라운 라이브러리입니다: 이해할 수 있는 파이썬 코드의 몇 줄로 최첨단 모델을 구축할 수 있습니다. 다른 신경망 라이브러리가 더 빠르거나 더 많은 유연성을 허용할 수 있지만 개발 시간과 사용 편의성에 대해 Keras를 이길 수 있는 것은 없습니다. 나는 이전에 Theano에 대한 자습서를 작성했으며, 모든 논리가 정확히 동일하게 유지되기 때문에 여기에 최적화 된 코드를 다시 통과하지 않습니다. 나는 THEAno의 해당 계산으로 numpy 계산을 대체하는 RNNTheano 클래스를 정의했다. 이 게시물의 나머지 부분과 마찬가지로 코드도 Github를 사용할 수 있습니다. 그러나 언어 모델링 문제를 해결하는 것은 또한 멋진 부작용이 있습니다.

앞의 단어에 주어진 단어의 확률을 예측할 수 있으므로 새 텍스트를 생성할 수 있습니다. 그것은 생성 모델입니다. 단어의 기존 시퀀스를 감안할 때 우리는 예측 된 확률에서 다음 단어를 샘플링하고 전체 문장이 될 때까지 프로세스를 반복합니다. Andrej Karparthy는 어떤 언어 모델이 할 수 있는지 보여주는 훌륭한 게시물을 가지고 있습니다. 그의 모델은 전체 단어가 아닌 단일 문자에 대한 교육을 받았으며 셰익스피어에서 Linux 코드에 이르기까지 모든 것을 생성할 수 있습니다.