Lab: tf.contrib.learn


In [ ]:
import numpy as np
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

print(tf.__version__)

TensorFlow 付属のモジュールを使って MNIST データセットをダウンロードします。


In [ ]:
mnist = input_data.read_data_sets("MNIST_data/", one_hot=False)

x_train = mnist.train.images
y_train = np.array(mnist.train.labels, dtype=np.int)

x_test = mnist.test.images
y_test = np.array(mnist.test.labels, dtype=np.int)

モデルの作り方は scikit-learn とほぼ同じになるように設計されています。


In [ ]:
feature_columns = [tf.contrib.layers.real_valued_column("", dimension=768)]

clf = tf.contrib.learn.DNNClassifier(
    feature_columns=feature_columns,
    hidden_units=[10, 20, 10],
    n_classes=10,
    model_dir="./mnist_model"
)
# clf = tf.contrib.learn.SKCompat(clf)

Scikit-learn と同じく fit メソッドを使って学習を行います。


In [ ]:
clf.fit(x=x_train, y=y_train, steps=1000, batch_size=100)

学習済みのモデルに新たなデータを渡して予測をしてもらうときは predict メソッドを使います。


In [ ]:
print(list(clf.predict(x=x_test))[:30])

テストデータで精度を計算させてみます。


In [ ]:
print("Test Accuracy: {}".format(np.sum(np.array(list(clf.predict(x=x_test))) == y_test) / float(len(y_test))))