带Tensorflow预制估算器的Mnist,评估时输入尺寸不匹配

时间:2018-07-24 12:53:31

标签: python tensorflow deep-learning

我对Tensorflow相当陌生,并且一直在尝试通读tensorflow.org上的指南和文档以掌握基础知识

我已经了解了如何使用successtf.data API的基础知识,并且正在尝试使它们在MNIST的基本分类模型上协同工作。

我正在使用此脚本加载MNIST:https://github.com/tensorflow/models/blob/master/official/mnist/dataset.py

我对数据集函数进行了修改,以返回特征字典而不是向量:

tf.estimator

我在TF中使用预制估算器的MNIST分类器脚本如下:

def dataset(directory, images_file, labels_file):
  """Download and parse MNIST dataset."""

  images_file = download(directory, images_file)
  labels_file = download(directory, labels_file)

  check_image_file_header(images_file)
  check_labels_file_header(labels_file)

  def decode_image(image):
    # Normalize from [0, 255] to [0.0, 1.0]
    image = tf.decode_raw(image, tf.uint8)
    image = tf.cast(image, tf.float32)
    image = tf.reshape(image, [784])
    return image / 255.0

  def decode_label(label):
    label = tf.decode_raw(label, tf.uint8)  # tf.string -> [tf.uint8]
    label = tf.reshape(label, [])  # label is a scalar
    return tf.to_int32(label)

  images = tf.data.FixedLengthRecordDataset(
      images_file, 28 * 28, header_bytes=16).map(decode_image)
  labels = tf.data.FixedLengthRecordDataset(
      labels_file, 1, header_bytes=8).map(decode_label)
  return tf.data.Dataset.zip(({"image":images}, labels))

分类器在训练时不会崩溃,但是在评估时,我面临以下追溯:

  

ValueError:无法重塑具有784个元素的张量   [784,784](614656个元素)为   'dnn / input_from_feature_columns / input_layer / image / Reshape'(op:   输入形状为[784,1],[2]和输入张量的'Reshape')   计算为部分形状:input [1] = [784,784]。

什么可能导致此问题?

我尝试打印训练数据集和测试数据集的输出形状和类型,它们完全相同。

我还尝试过在张量板上查看模型,并且只有“投影仪”选项卡可用,没有标量或图形选项卡。

谢谢!

PS:使用Datasets和Estimators API指向TF教程的任何链接也都很好。

0 个答案:

没有答案