Tensorflow minibatch培训

yok*_*oki 6 tensorflow

如何使用小型数据在TensorFlow中训练网络?在Deep-MNIST教程中,他们使用:

for i in range(1000):
   batch = mnist.train.next_batch(50)
   train_step.run(feed_dict={x: batch[0], y_: batch[1]})
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 是xy_尺寸适合单个例子的变量batch[0],batch[1]是这些输入和输出的列表吗?在这种情况下,TensorFlow会自动为这些列表中的每个训练示例添加渐变吗?或者我应该创建我的模型,这样xy_得到整个minibatch?

我的问题是,当我尝试为每个占位符提供一个列表时,它会尝试输入占位符的整个列表,因此我得到一个大小不匹配:Cannot feed value of shape (n, m) for Tensor u'ts:0', which has shape '(m,)',哪里n是小批量大小,m是个别输入大小.

谢谢.

nes*_*uno 10

在MNIST教程中x,y_它们是具有已定义形状的占位符:

x = tf.placeholder(tf.float32, shape=[None, 784])
y_ = tf.placeholder(tf.float32, shape=[None, 10])
Run Code Online (Sandbox Code Playgroud)

shape=[None, 784]意味着这个占位符有2个维度.

那么,回答你的第一个问题:

是x和y_变量,其尺寸适合于单个示例

第一个维度可以包含未定义数量的元素(因此,1,2,... 50 ...),第二个维度可以包含exaclly 784 = 28*28个元素(这是单个MNIST图像的特征).

如果使用形状为[1,784]或[50,784]的python列表提供图形,则tensorflow完全相同,它可以毫无问题地处理它.

批处理[0],批处理[1]是这些输入和输出的列表?在教程中,他们定义批量调用batch = datasets.train.next_batch(50).从而:

  • batch [0]是一个有形状的列表[50,784]
  • batch [1]是一个有形状的列表[50,10]

TensorFlow会自动为这些列表中的每个训练示例添加渐变吗?或者我应该创建我的模型,以便x和y_得到一个完整的小批量?

Tensorflow为您处理此问题.

您报告的错误Cannot feed value of shape (n, m) for Tensor u'ts:0', which has shape '(m,)' 是形状不匹配错误.

您没有重新设置输入以使其具有相同的占位符形状.