定义张量时的张量形状

时间:2017-09-19 14:48:45

标签: python machine-learning tensorflow-gpu tensor

我正在研究神经网络并多次遇到形状问题...... Tensorflow为我们提供了一个关键字None,这样我们就不用担心张量的大小...... 使用None代替形状的已知数值是否有任何缺点。

方法1

input_placeholder = tf.placeholder(tf.float32,[None,None])

方法2

input_placeholder = tf.placeholder(tf.float32,[64,100])

运行代码时会有什么不同吗?

1 个答案:

答案 0 :(得分:0)

Tensorflow的tf.placeholder()张量不需要将固定的形状传递给它们。这允许您在以后的tf.Session.run()调用中传递不同的形状。 所以你的代码工作得很好。 它没有任何缺点,因为当我们创建占位符时,Tensorflow不会分配任何内存。当您为占位符提供信息时,在调用tf.Session.run()时,TensorFlow将为输入张量分配适当大小的内存。

如果您在代码中的某些操作中进一步使用这些input_placeholder,则使用None(即无约束形状)定义它们可能会导致Tensorflow执行一些与张量形状相关的检查,同时在Session.run()通话期间动态执行这些操作。这是因为在构建图形时,Tensorflow并不知道输入的确切形状。