我正在研究神经网络并多次遇到形状问题...... Tensorflow为我们提供了一个关键字None,这样我们就不用担心张量的大小...... 使用None代替形状的已知数值是否有任何缺点。
input_placeholder = tf.placeholder(tf.float32,[None,None])
input_placeholder = tf.placeholder(tf.float32,[64,100])
运行代码时会有什么不同吗?
答案 0 :(得分:0)
Tensorflow的tf.placeholder()
张量不需要将固定的形状传递给它们。这允许您在以后的tf.Session.run(
)调用中传递不同的形状。
所以你的代码工作得很好。
它没有任何缺点,因为当我们创建占位符时,Tensorflow不会分配任何内存。当您为占位符提供信息时,在调用tf.Session.run()
时,TensorFlow将为输入张量分配适当大小的内存。
如果您在代码中的某些操作中进一步使用这些input_placeholder
,则使用None
(即无约束形状)定义它们可能会导致Tensorflow执行一些与张量形状相关的检查,同时在Session.run()
通话期间动态执行这些操作。这是因为在构建图形时,Tensorflow并不知道输入的确切形状。