以下のコードは、「入力はリストでなければなりません」と表示しています。これで「入力はリストでなければならない」とはどういう意味ですか?
outputs, states = rnn.rnn(lstm_cell, x, dtype=tf.float32)
入力x
のプレースホルダを定義するとします。私はすでに形状を[None,None]
と設定しています。私はこの形状が2次元配列だと思う。ただし、コードには継続的にリストタイプのx
が必要です。
以下、トレーニング前にすべてのコードを添付しました。そして、このコードはクラスの関数に挿入されます。
x = tf.placeholder("float",[None,None])
y = tf.placeholder("float",[None])
lstm_cell = rnn_cell.BasicLSTMCell(self.n_hidden, forget_bias=1.0)
outputs, states = rnn.rnn(lstm_cell, x, dtype=tf.float32)
pred = tf.matmul(outpus[-1], self.weights['out']) + self.biases['out']
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred,y))
optimizer = tf.train.AdamOptimizer(learning_rate=self.learning_rate).minimize(cost)
correct_pred = tf.equal(tf.argmax(pred,1), tf.argmax(y,1))
accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))
init = tf.initialize_all_variables()
self.sess = tf.Session()
self.sess.run(init)
また、実用的な入力がx=[["aaa","aaa","aaa"],["bbb","bbb"]]
、y=["c1","c2"]
として形成されたラベルの単語列とフロートのフロートであろう。
ここで、x
の最初の要素配列は "c1"とラベル付けされ、2番目の要素配列は "c2"です。特に、各要素配列のサイズはx
であり、確定的ではありません。
ありがとうございます。また、学習データの最小長と最大長の距離が遠い場合、アルゴリズムの面で固定入力サイズを生成する方法は? – hackartist