我正在尝试使用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))
答案 0 :(得分:0)
尝试执行以下代码(在numpy_input_fn
函数调用中)
y=y_train.astype(np.int32),
代替
y=y_train,
还注释掉to_categorical
通话。