我对Tensorflow相当陌生,并且一直在尝试通读tensorflow.org上的指南和文档以掌握基础知识
我已经了解了如何使用success
和tf.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教程的任何链接也都很好。