파이썬 RNN 예제

데이터와 같은 사각 파동을 만들기 위해 파이썬의 수학 라이브러리의 사위 함수를 사용합니다 : 재발 신경망의 최종 테스트로 모델이나 사람이 출력을 생성했는지 여부를 추측하는 게임을 만들었습니다. 다음은 두 가지 옵션이 컴퓨터에서 온 것이고 하나는 인간에게서 온 첫 번째 예입니다. “한 소녀가 술집에 들어갔는데,`술을 마실 수 있을까?` 하고 물었습니다. 바텐더는 `확실히 {}”라고 말했다. 예를 들어 위의 문자열에서 {} 기호를 채울 수 있는 옵션(예: “miss”, “ma`am” 등)에 대한 많은 옵션이 있습니다. 그러나 다른 단어는 “선생님”, “미스터”등과 같은 에도 맞을 수 있습니다. 명사에 대한 올바른 성별을 얻기 위해 신경망은 가능성이 있는 성별(예: “소녀”와 “그녀”)을 지정하는 두 개의 이전 단어가 사용되었다는 것을 “기억”해야 합니다. 반복 신경망에서 시간(또는 시퀀스)을 통한 이러한 유형의 정보 흐름은 시퀀스를 해제하는 아래 다이어그램에 표시됩니다: 모델의 핵심은 한 번에 한 단어를 처리하고 가능한 확률을 계산하는 LSTM 셀로 구성됩니다. 문장의 다음 단어에 대한 값입니다. 네트워크의 메모리 상태는 0의 벡터로 초기화되고 각 단어를 읽은 후 업데이트됩니다.

계산상의 이유로, 우리는 크기 batch_size의 미니 일괄 처리로 데이터를 처리합니다. 이 예제에서는 current_batch_of_words가 단어의 “문장”과 일치하지 않는다는 점에 유의해야 합니다. 일괄 처리의 모든 단어는 시간 t. TensorFlow 자동으로 당신을 위해 각 일괄 처리의 그라데이션을 합계 합니다. 위에서 설명한 것처럼 단어 자체, 즉 “A”, “소녀”등은 신경망에 직접 입력되지 않습니다. 둘 다 그들의 하나의 뜨거운 벡터 형식 표현-오히려, 포함 벡터 각 단어에 대 한 사용 됩니다. 포함 벡터는 단어의 일부 의미 또는 컨텍스트를 유지해야 하는 단어(종종 길이 50-300 사이)의 효율적인 벡터 표현입니다. 내가 다른 게시물에 광범위하게 덮여있다 단어 포함여기에 입력되지 않습니다 – Word2Vec 단어 는 파이썬과 텐서 플로우, Word2Vec 케라스 튜토리얼과 텐서 플로우와 케라스와 파이썬 gensim Word2Vec 튜토리얼. 그것은 흥미로운 주제이며 조사하는 데 가치가 있습니다.

텍스트는 시퀀스 데이터의 또 다른 좋은 예입니다. 주어진 텍스트 다음에 어떤 단어나 구가 오는지 예측할 수 있다는 것은 매우 유용한 자산이 될 수 있습니다.