2016-09-19 3 views
1

모델을 사용하여 tensorflow에 의해 구현 된 변환 코드를 사용하려고합니다. seq2seq model에 대한 tensorflow 자습서를 팔로우하고 있습니다.Seq2Seq 모델 출력 투영 Tensorflow

output projection이라는 개념을 설명하는 부분이 seq2seq_model.py 코드에 구현되어 있습니다. 나는 그 코드를 이해한다. 그러나 이것은 무엇을 출력 투영 부분을하고 있는지 이해할 수 없다.

누군가가이 출력 영사법의 일을 어떻게 진행하고 있는지 설명 할 수 있다면 좋을 것입니다.

감사합니다 !!

답변

2

내부적으로 신경망은 크기가 작은 256 비트, 512 비트 또는 1024 비트의 부동 소수점 벡터에서 작동합니다 (여기서는 512를 가정 해 봅시다). 그러나 결국에는 어휘에서 단어를 예측해야합니다. 예를 들어 40000 단어와 같이 훨씬 큰 단어를 예측해야합니다. 출력 투영은 내부 표현에서보다 큰 것으로 변환 (프로젝트)하는 최종 선형 레이어입니다. 예를 들어, 512 x 40000 매개 변수 행렬과 바이어스 벡터에 대한 40000 매개 변수로 구성 될 수 있습니다. seq2seq 코드에서 분리되어있는 이유는 일부 손실 함수 (예 : 샘플 된 softmax 손실)가 최종 512 크기 벡터 및 출력 프로젝션 행렬에 직접 액세스해야하기 때문입니다. 희망이 도움이됩니다!

+0

왜 루프가 출력 투영을위한 버킷 수보다 많습니까? 나는 xrange (ben in bucket)에 대해서 언급하고있다. : self.outputs [b] = [tf.matmul (output, output_projection [0]) + self.outputs의 출력을위한 output_projection [1] [b] ]]' –