[PYTHON] MNIST (DCNN) mit Skflow

MNIST mit skflow

Was ist Skflow?

Eine Schnittstelle für die Verwendung von TensorFlow so einfach wie Scikit Learn ~~ In TensorFlow enthalten (TF Learn) ~~ Unabhängig von TensorFlow 0.9 ist es einfacher zu schreiben als die älteren unten (TFLearn).

Ausführungsumgebung

EC2 (AWS) g2.2xlarge-Instanz (Oregon = West-USA) Python 2.7.6 TensorFlow 0.8.0 scipy 0.17.1 (erforderlich für scikit-learn) scikit-learn 0.17.1

Die AWS-Instanz wurde mit dem AMI einer anderen Person initialisiert. Wenn Sie sie jedoch selbst vorstellen möchten, lesen Sie Folgendes

Es scheint, dass Sie nicht mehr aus dem Quellcode erstellen müssen, um TensorFlow auf einer EC2-GPU-Instanz auszuführen?

Quellcode

Dieses Mal habe ich es als Referenz beim Aufbau eines komplizierten Netzwerks mit DCNN (Deep Convolutional Neural Network) versucht, daher denke ich, dass die Parameter angemessen und für MNIST nicht sehr geeignet sind.

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))

Referenzierte Seite

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

Recommended Posts

MNIST (DCNN) mit Skflow
MNIST (DCNN) mit Keras (TensorFlow-Backend)
Denken Sie an Aussetzer mit MNIST
Versuchen Sie TensorFlow MNIST mit RNN
Führen Sie eine Inferenz mit dem Chainer 2.0 MNIST-Beispiel durch