Я пытаюсь использовать 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))