トップページ -> コンピュータ実習 -> Keras の体験,応用例 -> ニューラルネットワークの作成,訓練(学習),予測(Google Colab, TensorFlow, Keras と Fashion MNIST データセットを利用)
[サイトマップへ], [サイト内検索へ],

ニューラルネットワークの作成,訓練(学習),予測(Google Colab, TensorFlow, Keras と Fashion MNIST データセットを利用)

サイト構成 連絡先,業績など コンピュータ実習 データの扱い コンピュータ設定 教材(公開) サポートページ

TensorFlow

TensorFlow は,機械学習のアプリケーションを簡単に作成するのに役立つソフトウエア. Keras は,TensorFlow を用いてのディープラーニング(深層学習)でのモデルの構築と,その訓練(構築)を簡単に行えるようにするソフトウエア

このページは,https://www.tensorflow.org/tutorials/keras/basic_classification の手順を, 示すものである.

用語集

ニューラルネットワークのデモサイト: http://playground.tensorflow.org

Google Colab はオンラインの Python 開発環境. 使用するには Google アカウントが必要

  1. Google Colab のWebページを開く

    https://colab.research.google.com

  2. ファイル」で、「PYTHON 3 の新しいノートブックの新規作成」を選ぶ

  3. Google アカウントでログインする

  4. パッケージのインポートなど
    from __future__ import absolute_import, division, print_function, unicode_literals
    
    # TensorFlow と tf.keras のインポート
    import tensorflow as tf
    from tensorflow import keras
    
    # ヘルパーライブラリのインポート
    import numpy as np
    import matplotlib.pyplot as plt
    
    print(tf.__version__)
    

  5. Python の配列(アレイ)と画像データセット

    (1) 画像データセット Fashion MNIST を準備するプログラム

    変数 X_train: サイズ 28 × 28 の 60000枚の濃淡画像

    変数 y_train: 60000枚の濃淡画像それぞれの,種類番号(0 から 9 のどれか)

    変数 X_test: サイズ 28 × 28 の 10000枚の濃淡画像

    変数 y_test: 10000枚の濃淡画像それぞれの,種類番号(0 から 9 のどれか)

    fashion_mnist = keras.datasets.fashion_mnist
    (X_train, y_train), (X_test, y_test) = fashion_mnist.load_data()
    

    (2) 「サイズ 28 × 28 の 60000枚の濃淡画像」の形と次元を確認するプログラム

    配列(アレイ)の形: 60000×28×28

    次元: 3

    print( X_train.shape )
    print( X_train.ndim )
    

    (3) データの確認

    plt.figure()
    plt.imshow(X_train[0])
    plt.colorbar()
    plt.gca().grid(False)
    plt.show()
    

  6. ニューラルネットワークを使うために,データを調整
    X_train = X_train.astype('float32')
    X_test = X_test.astype('float32')
    X_train /= 255.0
    X_test /= 255.0
    print( X_train.shape )
    print( X_train.ndim )
    

  7. データの確認表示
    class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
    plt.figure(figsize=(10,10))
    for i in range(25):
        plt.subplot(5,5,i+1)
        plt.xticks([])
        plt.yticks([])
        plt.grid(False)
        plt.imshow(X_train[i], cmap=plt.cm.binary)
        plt.xlabel(class_names[y_train[i]])
    plt.show()
    

  8. ニューラルネットワークを作るプログラム(ニューラルネットワークの層の設定とコンパイル)

    2層のニューラルネットワークを作成

    1層目:ユニット数は 128

    2層目:ユニット数は 10

    ADAM を使う場合のプログラム例

    m = keras.Sequential()
    m.add(keras.layers.Flatten(input_shape=(28, 28)))
    m.add(keras.layers.Dense(units=128, activation=tf.nn.relu))
    m.add(keras.layers.Dropout(rate=0.2))
    m.add(keras.layers.Dense(units=10, activation=tf.nn.softmax))
    m.compile(loss='sparse_categorical_crossentropy',
              optimizer=keras.optimizers.Adam())
    

    SGD を使う場合のプログラム例

    m = keras.Sequential()
    m.add(keras.layers.Flatten(input_shape=(28, 28)))
    m.add(keras.layers.Dense(units=128, activation=tf.nn.relu))
    m.add(keras.layers.Dropout(rate=0.2))
    m.add(keras.layers.Dense(units=10, activation=tf.nn.softmax))
    m.compile(loss='sparse_categorical_crossentropy',
              optimizer=keras.optimizers.SGD(lr=0.01, momentum=0.9, nesterov=True))
    

  9. ニューラルネットワークの確認表示
    print(m.summary())
    

  10. ニューラルネットワークの訓練(学習)を行うプログラム
    histroy = m.fit(X_train, y_train, epochs=50)
    

  11. テスト用データセットで評価する
    print( m.evaluate(X_test, y_test) )
    

    ニューラルネットワークを使ってみる

    テスト画像を,ニューラルネットワークに与えて,予測させる

    predictions = m.predict( X_test )
    print( predictions[0] )
    

  12. 正解表示

    テスト画像 0 番の正解を表示

    print( y_test[0] )