简体   繁体   English

从 tf.data.Datasets 构建 tf,estimator.DNNClassifier

[英]Build tf,estimator.DNNClassifier from tf.data.Datasets

I am new to tensorflow in ML, and thought I could build the model from tf.data.Datasets directly.我是 ML 中 tensorflow 的新手,并认为我可以直接从 tf.data.Datasets 构建模型。 Here is my code, could not figure out why it did not work.这是我的代码,无法弄清楚为什么它不起作用。 Can someone please advise if it's possible to make it work?有人可以建议是否有可能使它工作?

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)

Please refer working code Build tf.estimator.DNNClassifier from Mnist Dataset.请参考来自 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))"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM