使用Tensorflow seq2seq教程代碼我創建了一個基於字符的聊天機器人。我不使用文字嵌入。我有一組字符(字母和一些標點符號)以及特殊符號,如GO,EOS和UNK符號。輸入LSTM seq2seq網絡 - Tensorflow
因爲我不使用文字嵌入,所以我使用標準tf.nn.seq2seq.basic_rnn_seq2seq()
seq2seq模型。然而,我很困惑什麼形狀encoder_inputs
和decoder_inputs
應該有。它們是否應該是一個整數數組,對應於字母數組中的字符索引,還是應該先將這些整數變成一個熱點向量?
一個LSTM單元有多少個輸入節點?你可以指定嗎?因爲我猜想在我的情況下,LSTM細胞應該對字母表中的每個字母都有一個輸入神經元(因此是一個熱點向量?)。 此外,什麼是LSTM「大小」你必須通過構造函數tf.nn.rnn_cell.BasicLSTMCell(size)
?
謝謝。
附錄:這些是我正在嘗試解決的錯誤。
當我使用下面的代碼,根據教程:
for i in xrange(buckets[-1][0]): # Last bucket is the biggest one.
self.encoder_inputs.append(tf.placeholder(tf.int32, shape=[None], name="encoder{0}".format(i)))
for i in xrange(buckets[-1][1] + 1):
self.decoder_inputs.append(tf.placeholder(tf.int32, shape=[None], name="decoder{0}".format(i)))
self.target_weights.append(tf.placeholder(dtype, shape=[None], name="weight{0}".format(i)))
並運行self_test()
功能,我得到的錯誤: ValueError: Linear is expecting 2D arguments: [[None], [None, 32]]
然後,當我改變了形狀,在上面代碼爲shape=[None, 32]
我收到此錯誤: TypeError: Expected int32, got -0.21650635094610965 of type 'float' instead.