下面的代码告诉我“输入必须是一个列表”。在这。这是什么意思“输入必须是一个列表”?
outputs, states = rnn.rnn(lstm_cell, x, dtype=tf.float32)
当我为输入定义占位符x
。我已经将形状设置为[None,None]
。我认为这个形状是二维数组。但是,代码不断需要列表类型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”,第二个元素数组为“c2”。特别是,x
的每个元素数组的大小不能确定。
谢谢。如果训练数据的最小长度和最大长度之间的距离较大,如何在算法的一个方面产生固定的输入大小? – hackartist