【问题标题】:TENSOR FLOW CNN MNIST EXAMPLE: HOW BATCH SIZE WORKS IN THE MODELTENSORFLOW CNN MNIST 示例:批量大小在模型中的工作原理
【发布时间】:2018-06-19 16:33:31
【问题描述】:

在 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 我不明白的是,在我们放入 100 之前,现在因为 -1 不明白你能帮我解释一下如何输入模型的批量大小吗?谢谢。

【问题讨论】:

    标签: tensorflow batch-processing mnist convolutional-neural-network tensorflow-estimator


    【解决方案1】:

    tl;博士

    tf.reshape()方法中的batch_size属性与tf.estimator.inputs.numpy_input_fn函数中的batch_size属性完全不同。

    input_fn 中的批量大小

    tf.estimator.inputs.numpy_input_fn 方法的属性 batch_size 控制在特定时期(或时间实例)将训练或评估数据集的观察(或行或记录)的多少。因此,在提供的示例中,batch_size = 100 表示数据集中的 100 行(在本例中为图像)将由学习算法在每个 epoch 进行训练。

    重塑张量

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-28
      • 2016-07-14
      • 1970-01-01
      • 2017-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-28
      相关资源
      最近更新 更多