我是张力流的新手。我用这个tutorial code练习编码。大部分代码对我来说都很有意义,但在某些方面我陷入困境。
import tensorflow as tf
x = tf.placeholder("float", [None, n_steps, n_input])
x = tf.transpose(x, [1, 0, 2])
x = tf.reshape(x, [-1, n_input])
使用tf.placholder
函数,我必须使用None
指定可变长度尺寸。但是tf.reshape
我必须使用-1
,而不是None
。在这两个函数的文档中,两个相关参数都具有名称shape
。所以我感到迷失在这里。他们真的有不同的含义吗?或者这只是tensorflow开发人员的一个小设计错误?
答案 0 :(得分:2)
您可以这样理解:在占位符中,值“无”表示:“可以是任何值”。就像你的情况一样:你的批量大小可以是任何东西。 在重塑函数中,-1表示“使该形状工作的剩余值”。在你的情况下,你的x得到形状(batch * n_steps),因为这是x需要在矩阵中拟合相同数据的形状。
有趣的说明:您可以在占位符中使用多个None值(表示任何批量大小,图像的任何宽度和高度)...但您不能在重塑函数中使用多个-1值!