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

问题描述 投票:0回答:1

我是ML中的Tensorflow的新手,以为我可以直接从tf.data.Datasets建立模型。这是我的代码,无法弄清楚为什么它不起作用。有人可以建议是否可行吗?

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)
python tensorflow tensorflow-datasets tensorflow-estimator
1个回答
0
投票

请参阅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))"
© www.soinside.com 2019 - 2024. All rights reserved.