首页 文章

对tensorflow feed_dict如何工作感到困惑

提问于
浏览
0

最近开始使用tensorflow,我真的很困惑feed_dict的功能 .

查看tensorflow网站上的mnist示例,x是一个符号占位符,每次训练迭代都会填充一批新图像,所以'None'也可以是'batch_size'

x = tf.placeholder(tf.float32, shape=[None, 784])

在查看本教程的卷积部分时,有一个命令可以将x从其展平的1x784形状重塑为2D图像28x28形状

x_image = tf.reshape(x, [-1,28,28,1])

在训练循环期间,x通过命令输入

train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})

我的问题是,当我们将值输入x时,张量流是否会自动向量化每个涉及x的操作?例如,当我们定义op时

h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1)

这将自动适用于整个批次?

如果x是ndarray,每行都是一个展平的图像,因为我们在x占位符中指定了形状'None',tensorflow自动知道将每一行用作单独的训练样本,并对所有后续的ops进行矢量化?

1 回答

  • 2

    shape 参数用于静态形状推断(即 tensor.get_shape )并且是可选的 . TensorFlow不会自动向量化任何内容,但对于二进制cwise操作,它使用的broadcasting看起来有点像 . 在您的示例中, tf.conv2d 是将每行视为一个示例的操作,因此它适用于批处理,但不适用于单个示例 . 另外 batch[0] 是一批输入, batch[1] 是一批标签 .

相关问题