[PYTHON] MNIST (DCNN) avec skflow

MNIST avec skflow

Qu'est-ce que skflow

Une interface pour utiliser TensorFlow aussi facilement que Scikit Learn ~~ Inclus dans TensorFlow (TF Learn) ~~ Indépendamment de TensorFlow 0.9, il est plus facile à écrire que les anciens ci-dessous (TFLearn)

Environnement d'exécution

Instance EC2 (AWS) g2.2xlarge (Oregon = ouest des États-Unis) Python 2.7.6 TensorFlow 0.8.0 scipy 0.17.1 (requis pour scikit-learn) scikit-learn 0.17.1

L'instance AWS a été initialisée à l'aide de l'AMI d'une autre personne, mais si vous souhaitez l'introduire vous-même, reportez-vous à ce qui suit

Il semble que vous n'ayez plus besoin de construire à partir de la source pour exécuter TensorFlow sur l'instance GPU EC2?

Code source

Cette fois, je l'ai essayé comme référence lors de la construction d'un réseau compliqué avec DCNN (Deep Convolutional Neural Network), donc je pense que les paramètres sont appropriés et pas très pour MNIST.

mnist.py


from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

from sklearn import metrics
import tensorflow as tf
from tensorflow.contrib import learn as skflow
from tensorflow.contrib.learn.python.learn.datasets import mnist as source

mnist = source.load_mnist()

def max_pool_2x2(tensor_in):
    return tf.nn.max_pool(tensor_in, ksize = [1, 2, 2, 1], strides = [1, 2, 2, 1], padding = 'SAME')

def my_model(X, y):
    X = tf.reshape(X, [-1, 28, 28, 1])

    with tf.variable_scope('layer1'):
        with tf.variable_scope('conv1'):
            h_conv1 = skflow.ops.conv2d(X, n_filters = 16, filter_shape = [3, 3], bias = True, activation = tf.nn.relu)
        with tf.variable_scope('conv2'):
            h_conv2 = skflow.ops.conv2d(h_conv1, n_filters = 32, filter_shape = [3, 3], bias = True, activation = tf.nn.relu)
            h_pool1 = max_pool_2x2(h_conv2)

    with tf.variable_scope('layer2'):
        with tf.variable_scope('conv3'):
            h_conv3 = skflow.ops.conv2d(h_pool1, n_filters = 64, filter_shape = [3, 3], bias = True, activation = tf.nn.relu)
        with tf.variable_scope('conv4'):
            h_conv4 = skflow.ops.conv2d(h_conv3, n_filters = 128, filter_shape = [3, 3], bias = True, activation = tf.nn.relu)
            h_pool2 = max_pool_2x2(h_conv4)
            h_flat = tf.reshape(h_pool2, [-1, 7 * 7 * 128])

    h_fc = skflow.ops.dnn(h_flat, [1024, 1024], activation = tf.nn.relu, dropout = 0.5)
    return skflow.models.logistic_regression(h_fc, y)

classifier = skflow.TensorFlowEstimator(model_fn = my_model, n_classes = 10, batch_size = 100, steps = 20000, learning_rate = 0.001, optimizer = 'Adam')
classifier.fit(mnist.train.images, mnist.train.labels)
score = metrics.accuracy_score(mnist.test.labels, classifier.predict(mnist.test.images))
print('Accuracy: {0:f}'.format(score))

Page référencée

skflow - mnist.py Introduction to Scikit Flow TensorFlow Python reference documentation

Recommended Posts

MNIST (DCNN) avec skflow
MNIST (DCNN) avec Keras (backend TensorFlow)
Pensez aux abandons avec MNIST
Essayez TensorFlow MNIST avec RNN
Exécuter l'inférence avec l'exemple de Chainer 2.0 MNIST