Build tf,estimator.DNNClassifier from tf.data.Datasets



我是ML中tensorflow的新手,认为我可以直接从tf.data.Dataset构建模型。这是我的代码,不知道为什么它不起作用。有人能告诉我是否有可能让它发挥作用吗?

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
import tensorflow_datasets as tfds
#load the data
train_data, ds_info = tfds.load('mnist', split='train'
, shuffle_files=True,with_info=True, as_supervised=True)
feature_columns = [tf.feature_column.numeric_column('x',shape=[28,28])]
#build the model
estimator = tf.estimator.DNNClassifier(
feature_columns=feature_columns,
hidden_units=[300,100],
n_classes=10,
model_dir='/train/DNN')
#train the model
estimator.train(input_fn=train_data)

请参阅Mnist数据集中的工作代码Build tf.estimator.DNNClassifier。

import tensorflow as tf
import numpy as np
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
learn = tf.contrib.learn
tf.logging.set_verbosity(tf.logging.ERROR)
print(tf.__version__)
##import the dataset
mnist = learn.datasets.load_dataset('mnist')
data = mnist.train.images
labels = np.asarray(mnist.train.labels, dtype=np.int32)
test_data = mnist.test.images
test_labels = np.asarray(mnist.test.labels, dtype = np.int32)
def input(dataset):
return dataset.images, dataset.labels.astype(np.int32)
# Specify feature
feature_columns = [tf.feature_column.numeric_column(""x"", shape=[28, 28])]
# Build 2 layer DNN classifier
classifier = tf.estimator.DNNClassifier(
feature_columns=feature_columns,
hidden_units=[256, 32],
optimizer=tf.train.AdamOptimizer(1e-4),
n_classes=10,
dropout=0.1,
model_dir=""./tmp/mnist_model""
)
# Define the training inputs
train_input_fn = tf.estimator.inputs.numpy_input_fn(
x={""x"": input(mnist.train)[0]},
y=input(mnist.train)[1],
num_epochs=None,
batch_size=50,
shuffle=True
)
classifier.train(input_fn=train_input_fn, steps=100)
# Evaluate accuracy
accuracy_score = classifier.evaluate(input_fn=train_input_fn)[""accuracy""]
print(""nTrain Accuracy: {0:f}%n"".format(accuracy_score*100))
# Define the test inputs
test_input_fn = tf.estimator.inputs.numpy_input_fn(
x={""x"": input(mnist.test)[0]},
y=input(mnist.test)[1],
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))"

最新更新