【发布时间】:2017-03-14 07:49:06
【问题描述】:
我正在 Tensorflow 中进行简单的 LSTM 实现,但在尺寸方面遇到了一些问题。所以,我的
batch size = 10
time_steps = 5
num_classes = 2
input_size = 4
占位符是
x = tf.placeholder('float',[None,time_steps,input_size])
y = tf.placeholder('float',[None,None,num_classes])
我通过从 csv 文件中输入数据来运行它
_, c = sess.run([optimizer, cost], feed_dict={x: _x, y: _y})
我设置了_x.shape = (10, 5, 4) 和_y.shape = (10, 5, 2)
符合TF的(batch,time_steps, input_size)要求。
我已经在互联网和博客文章上完成了一些实现(主要是在 MNIST 数据集上),我想我已经理解了它的工作原理。 TF 期望 logits 和 labels 参数是具有 batch_size 行和 num_classes 列的二维张量。现在,我为每个条目都有一个分类标签。我已将它们转换为 one-hot 格式。如果我提供总共 50 个数据条目,我也应该提供 50 个标签,对吧?
将 y 占位符更改为 [None,num_classes],因此其他一些内容也会出错。
但如果我将batch_size 更改为1,我可以让代码运行,直到行
correct = tf.equal(tf.argmax(prediction, 1), tf.argmax(y, 1))
我在哪里出错
ValueError: Dimensions must be equal, but are 5 and 2 for 'Equal' (op: 'Equal') with input shapes: [5], [?,2].
因为预测形状是(5, 2) 而y 是(?, ?, 2)
我对它应该如何工作的理解是否存在根本性错误?
完整代码可以在Simple RNN Gist查看
谢谢
【问题讨论】:
标签: tensorflow lstm