如何使用小型数据在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)
我的问题是 - 是x和y_尺寸适合单个例子的变量batch[0],batch[1]是这些输入和输出的列表吗?在这种情况下,TensorFlow会自动为这些列表中的每个训练示例添加渐变吗?或者我应该创建我的模型,这样x并y_得到整个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).从而:
TensorFlow会自动为这些列表中的每个训练示例添加渐变吗?或者我应该创建我的模型,以便x和y_得到一个完整的小批量?
Tensorflow为您处理此问题.
您报告的错误Cannot feed value of shape (n, m) for Tensor u'ts:0', which has shape '(m,)'
是形状不匹配错误.
您没有重新设置输入以使其具有相同的占位符形状.