MNIST-tf.estimator.DNNClassifier

时间:2019-02-05 03:38:26

标签: tensorflow mnist

我正在尝试使用DNNClassifier来解决带有一键编码输出的MNIST问题。

但是,发生错误

  

“ ValueError:标签形状不匹配。使用n_classes = 1配置的分类器。已收到10.建议的解决方法:检查估算器的n_classes参数和/或标签的形状。”

我知道以前可能会问过类似的问题,但是如果我真的想用DNNClassifier进行一次编码输出,是否有什么新方法可以解决?谢谢

import numpy as np
import keras
import tensorflow as tf
from keras.datasets import mnist
# the data is split between train and test sets
(x_train, y_train), (x_test, y_test) = mnist.load_data()

#convert the single output label to 10 output label
y_train = keras.utils.to_categorical(y_train, 10)
y_test = keras.utils.to_categorical(y_test, 10)
    classifier = tf.estimator.DNNClassifier(
        feature_columns=[tf.feature_column.numeric_column("x", shape=[28, 28])],
    hidden_units=[10],
    optimizer=tf.train.AdamOptimizer(learning_rate=0.001),
    n_classes=10,
)

# Define the training inputs
train_input_fn = tf.estimator.inputs.numpy_input_fn(
    x={"x": x_train},
    y=y_train,
    num_epochs=None,
    batch_size=50,
    shuffle=True,
)

classifier.train(input_fn=train_input_fn, steps=100000)

# Define the test inputs
test_input_fn = tf.estimator.inputs.numpy_input_fn(
    x={"x": x_test},
    y=y_test,
    num_epochs=1,
    shuffle=False
)

# Evaluate accuracy
accuracy_score = classifier.evaluate(input_fn=test_input_fn)["accuracy"]
print("\nTest Accuracy: {0:f}%\n".format(accuracy_score*100))

1 个答案:

答案 0 :(得分:0)

尝试执行以下代码(在numpy_input_fn函数调用中)

y=y_train.astype(np.int32),

代替

y=y_train,

还注释掉to_categorical通话。