Tensorflow 张量流CNN MNIST示例:批量大小如何在模型中工作

Tensorflow 张量流CNN MNIST示例:批量大小如何在模型中工作,tensorflow,batch-processing,mnist,convolutional-neural-network,tensorflow-estimator,Tensorflow,Batch Processing,Mnist,Convolutional Neural Network,Tensorflow Estimator,在tensorflow的CNN MNIST示例中,我不理解批量大小是如何工作的,当他们调用模型时,他们指定bach的大小为100: train_input_fn = tf.estimator.inputs.numpy_input_fn( x={"x": train_data}, y=train_labels, batch_size=100, num_epochs=None,shuffle=True) mnist_classifier.train(input_fn=train_input_fn,s

在tensorflow的CNN MNIST示例中,我不理解批量大小是如何工作的,当他们调用模型时,他们指定bach的大小为100:

train_input_fn = tf.estimator.inputs.numpy_input_fn(
x={"x": train_data},
y=train_labels,
batch_size=100,
num_epochs=None,shuffle=True)
mnist_classifier.train(input_fn=train_input_fn,steps=20000,hooks=[logging_hook])
但当调用模型时:

def cnn_model_fn(features, labels, mode):
  # Input Layer
  # Reshape X to 4-D tensor: [batch_size, width, height, channels]
  # MNIST images are 28x28 pixels, and have one color channel
  input_layer = tf.reshape(features["x"], [-1, 28, 28, 1])
他们把-1放在批量大小中,我在tensorflow教程中读到了-1,当他们告诉计算机推断尺寸时,他们使用了-1。我不明白的是,在我们把100放进去之前,现在因为-1不明白如何将批量大小输入到模型中,你能帮我解释一下吗?谢谢。

tl;博士
tf.reformate()
方法中的属性
batch\u size
tf.estimator.inputs.numpy\u input\u fn
函数中的
batch\u size
属性完全不同

输入中的批量大小
方法
tf.estimator.inputs.numpy\u input\u fn的属性
batch\u size
控制在特定历元(或时间实例)对数据集的观察值(或行或记录)进行训练或评估的数量。因此,在提供的示例中,
batch_size=100
表示数据集中的100行(在本例中为图像)将在每个历元由学习算法进行训练

重塑张量 方法
tf.reformate
用于改变张量的形状。方法
tf.reformate
具有属性
(张量,形状)
。从文档中可以看出,
shape
属性有一个特殊值
-1
,该值可以推断特定轴的尺寸,以保留总尺寸。因此,从提供的示例
[-1,28,28,1]
转换为
[batch\u size,row,column,channel]
batch_size
为-1意味着TensorFlow将保持图像的大小,因为它被重塑为所有图像的784个输入特征(即28*28)的一维数组