NMT과 같이 시퀀스 인코더 디코더 모델 시퀀스가있는 chat-bot을 구축 중입니다. 주어진 데이터로부터 나는 그들이 훈련 할 때 디코더 출력을 인코더 셀 상태와 함께 디코더 입력으로 공급한다는 것을 이해할 수 있습니다. 실제로 실시간으로 챠트 봇을 배치 할 때, 그 시간 이후에 디코더에 무엇을 입력해야하는지 예측할 수있는 출력이 무엇인지 알 수 없습니다. 누군가 제발 나를 도와 줄 수 있습니까?Chatbots 용 Seq2Seq 모델
1
A
답변
0
정확히 대답은 Neural Machine Translation model (NMT)에서 가져 오는 빌딩 블록과 자신의 것으로 대체 할 건물 블록에 달려 있습니다. 그래프 구조는 NMT에서와 똑같다고 가정합니다.
그렇다면 추론 할 때 디코더에 0 벡터 만 입력하면됩니다.
내부 상세는 : NMT 디코더의 다음 입력을 결정 Helper
불리는 엔티티를 사용하여 (tf.contrib.seq2seq.Helper
설명서 참조).
특히 tf.contrib.seq2seq.BasicDecoder
은 단계를 수행 할 때 도우미에만 의존합니다. next_inputs
은 후속 셀에 입력되는 값이 정확하게 Helper.next_inputs()
의 반환 값입니다.
는
tf.contrib.seq2seq.TrainingHelper
(보통 진실 연삭) 다음 디코더 입력을 반환 예컨대Helper
인터페이스의 다른 구현있다. 이 도우미는 the tutorial에 표시된대로 교육에 사용됩니다.tf.contrib.seq2seq.GreedyEmbeddingHelper
은 입력을 버리고 이전 출력에서 argmax
샘플링 된 토큰을 반환합니다. NMT는sampling_temperature
하이퍼 - 파라미터가 0 일 때 추론에서이 도우미를 사용한다.tf.contrib.seq2seq.SampleEmbeddingHelper
은 동일하지만, categorical (a.k.a. generalized Bernoulli) 분포에 따라 토큰을 샘플링한다. NMT는sampling_temperature > 0
일 때 추측에이 도우미를 사용합니다.- ...
코드 BaseModel._build_decoder
방법이다. GreedyEmbeddingHelper
및 SampleEmbeddingHelper
은 디코더 입력이 무엇인지 신경 쓰지 않습니다. 사실 아무것도 먹을 수는 없지만 제로 텐서가 표준 선택입니다.
나는 또한 https://github.com/tensorflow/nmt를 따르고 있으며, 같은 문제가 해결 방법을 찾을 수 있습니까 ?? – jignasha