Tensorflow seq2seqチュートリアルコードを使用して、文字ベースのチャットボットを作成しています。私は単語埋め込みを使用しません。私は文字の配列(アルファベットといくつかの句読点)とGO、EOSとUNKのような特殊記号を持っています。LSTM seq2seqネットワークの入力 - Tensorflow
私は単語埋め込みを使用していないため、標準tf.nn.seq2seq.basic_rnn_seq2seq()
seq2seqモデルを使用します。しかし、私はどの形状がencoder_inputs
とdecoder_inputs
にあるのか混乱しています。それらは、アルファベット配列の文字のインデックスに対応する整数の配列であるべきですか?そうでなければ整数を1つのホットベクトルに変換する必要がありますか?
1つのLSTMセルにはいくつの入力ノードがありますか?それを指定できますか?私のケースでは、LSTMセルはアルファベットの各文字に対して入力ニューロンを持っているはずです(したがって、1つのホットベクトルです)。 また、コンストラクタで渡さなければならない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.