我想實現一個序列到序列學習的編碼器 - 解碼器模型。如何在Tensorflow中生成特殊輸出字後停止RNN?
編碼器由字讀取輸入序列字和更新其隱藏狀態。
解碼器使用編碼器的隱蔽狀態,以初始化其隱藏的狀態。然後相對於上次生成的輸出(y(t-1))及其隱藏狀態生成輸出。我想在生成一個特殊的輸出()時停止這個過程。實際上,我想能夠生成不同長度的輸出。我如何在Tensorflow中做到這一點?
我想實現一個序列到序列學習的編碼器 - 解碼器模型。如何在Tensorflow中生成特殊輸出字後停止RNN?
編碼器由字讀取輸入序列字和更新其隱藏狀態。
解碼器使用編碼器的隱蔽狀態,以初始化其隱藏的狀態。然後相對於上次生成的輸出(y(t-1))及其隱藏狀態生成輸出。我想在生成一個特殊的輸出()時停止這個過程。實際上,我想能夠生成不同長度的輸出。我如何在Tensorflow中做到這一點?
有一個在TensorFlow的順序對序列模型的教程,一起來看看。
https://www.tensorflow.org/versions/master/tutorials/seq2seq/index.html
我想你想是這樣的tf.nn.rnn
的sequence_length
。我也想要它,但似乎TensorFlow沒有它。
我是做什麼,到目前爲止,發現解決此限制的好方法是在墊列車的時間與EOS符號解碼器的標籤。通常情況下,你只需要其中的一個,但填充很多這些並不會造成任何傷害。
在執行時,你要麼手動控制每次迭代當第一EOS產生停止或只是運行的時間步長的預定數量,然後從輸出刪除多餘的EOS符號。解碼器很快得知,在第一個EOS之後,只有更多的EOS可能會跟隨。
我讀的代碼。但是,當特殊輸出生成時,它不會停止。事實上,它將實例分爲桶,並根據每個桶的輸出大小生成輸出。換句話說,如果它產生一個特殊的輸出,它不會停止產生輸出。 –