2 augusti, 2019 Incopia

파이썬 RNN 예제

연구원은 이 불안정한 환경에서 그라데이션 기반 훈련을 할 수 있는 여러 가지 방법을 발견했습니다. 몇 가지 예는 다음과 같습니다 그라데이션 클리핑, 헤시안무료 최적화, 모멘텀 등 훈련 하는 동안 우리는 위의 표면 플롯에서 파란색 점에 끝날 것 이다 ($w_x=!1, w_{rec}\2$) 그라데이션의 순서에 있을 것 이다 $10^7$. $0.000001$($10^{-6}$)의 작은 학습 률에도 불구하고 $W$의 매개 변수는 현재 위치에서 10 단위 단위로 업데이트되며, 이는 이 예제에서 치명적일 것입니다. 한 가지 방법은 학습 속도를 훨씬 더 낮추는 것이지만 최적화가 낮은 그라데이션 영역에 들어가면 업데이트가 전혀 움직이지 않을 것입니다. 모델의 핵심은 한 번에 한 단어를 처리하고 문장의 다음 단어에 대한 가능한 값의 확률을 계산하는 LSTM 셀로 구성됩니다. 네트워크의 메모리 상태는 0의 벡터로 초기화되고 각 단어를 읽은 후 업데이트됩니다. 계산상의 이유로, 우리는 크기 batch_size의 미니 일괄 처리로 데이터를 처리합니다. 이 예제에서는 current_batch_of_words가 단어의 ”문장”과 일치하지 않는다는 점에 유의해야 합니다. 일괄 처리의 모든 단어는 시간 t. TensorFlow 자동으로 당신을 위해 각 일괄 처리의 그라데이션을 합계 합니다. 이 문서에서는 먼저 일반적인 RNN 모델의 핵심 구성 요소를 빠르게 살펴보겠습니다.

그런 다음 파이썬에서 RNN 모델을 처음부터 구현하여 마침내 해결할 문제 문을 설정합니다. 텍스트는 시퀀스 데이터의 또 다른 좋은 예입니다. 주어진 텍스트 다음에 어떤 단어나 구가 오는지 예측할 수 있다는 것은 매우 유용한 자산이 될 수 있습니다. 우리는 우리의 모델이 셰익스피어 소네트를 작성하기를 원합니다! 위에서 설명한 것처럼 단어 자체, 즉 ”A”, ”소녀”등은 신경망에 직접 입력되지 않습니다. 둘 다 그들의 하나의 뜨거운 벡터 형식 표현-오히려, 포함 벡터 각 단어에 대 한 사용 됩니다. 포함 벡터는 단어의 일부 의미 또는 컨텍스트를 유지해야 하는 단어(종종 길이 50-300 사이)의 효율적인 벡터 표현입니다. 내가 다른 게시물에 광범위하게 덮여있다 단어 포함여기에 입력되지 않습니다 – Word2Vec 단어 는 파이썬과 텐서 플로우, Word2Vec 케라스 튜토리얼과 텐서 플로우와 케라스와 파이썬 gensim Word2Vec 튜토리얼. 그것은 흥미로운 주제이며 조사하는 데 가치가 있습니다. TensorFlow LSTM이 여러 데이터 스트림을 한 번에 처리할 수 있는지 알고 계십니까? 예제에서 작업하면 20x4x35x650 입력의 경우 한 번에 4개의 35×650 입력이 있는 것과 같습니다. 나는 4x35x650을 140 × 650으로 변환 할 수 있다는 것을 알고 있지만 4 개의 입력을 한 번에 고려할 수있는 더 우아한 방법이 있는지 궁금했습니다.