トップページ -> データベース関連技術 -> Keras の体験,応用例 -> TensorFlow, Keras で,MNIST データ,Fashion MNIST データを扱う(TensorFlow, Keras, Python を使用)
[サイトマップへ], [サイト内検索へ]

TensorFlow, Keras で,MNIST データ,Fashion MNIST データを扱う(TensorFlow, Keras, Python を使用)

ニューラルネットワークの作成,訓練(学習),予測を行う. MNIST データセット,Fashion MNIST データセットを使用する.

目次

サイト内の関連ページ

謝辞:ここで使用しているソフトウエア類の作者に感謝します.

参考Webページ:


前準備

Python のインストール,pip と setuptools の更新,Python 開発環境のインストール

Windows の場合

  1. Python のインストール

    Python の URL: http://www.python.org/

    インストール手順の詳細は: 別ページで説明している.

  2. pip と setuptools の更新Python 開発環境(JupyterLab, spyder)のインストール

    コマンドプロンプトを管理者として実行し,次のコマンドを実行.

    python -m pip install -U pip setuptools
    python -m pip install -U jupyterlab jupyter jupyter-console jupytext spyder
    

Ubuntu の場合

システム Python を使用(インストール操作は不要)

  1. pip と setuptools の更新Python 開発環境(JupyterLab, spyder)のインストール

    次のコマンドを実行.

    sudo apt -yV install python3-dev python3-pip python3-setuptools
    sudo apt -yV install jupyter-qtconsole jupyter-notebook python3-jupyter-client python3-jupyter-console python3-spyder spyder3
    

TensorFlow, Keras のインストール


TensorFlow 2, Keras で,MNIST データセットを扱う

Python プログラムを動かす.

※ Python プログラムを動かすために, Windows では,「python」コマンドを使う. Ubuntu では「python3」コマンドを使う.

開発環境や Python コンソール(Jupyter Qt ConsolespyderPyCharmPyScripter など)も便利である.

  1. データセットの準備,その確認表示
    from __future__ import absolute_import, division, print_function, unicode_literals
    import tensorflow.compat.v2 as tf
    import tensorflow_datasets as tfds
    import numpy as np
    import matplotlib.pyplot as plt
    tf.enable_v2_behavior()
    
    print(tf.__version__)
    
    mnist, metadata = tfds.load(
        name="mnist", as_supervised=False, with_info=True, batch_size = -1)
    train, test = mnist['train'], mnist['test']
    print(metadata)
    
    x_train, y_train = train["image"].numpy().astype("float32") / 255.0, train["label"] 
    x_test, y_test = test["image"].numpy().astype("float32") / 255.0, test["label"]
    
    plt.figure(figsize=(10,10))
    for i in range(25):
      plt.subplot(5,5,i+1)
      plt.xticks([])
      plt.yticks([])
      plt.grid(False)
      image, label = train["image"][i], train["label"][i]
      plt.imshow(image.numpy()[:, :, 0].astype(np.float32), cmap=plt.get_cmap("gray"))
      plt.xlabel(label.numpy())
    
    plt.show()
    

    [image]
    (途中省略)
    [image]

    [image]
  2. モデルの作成
    m = tf.keras.Sequential()
    m.add(tf.keras.layers.Flatten(input_shape=(28, 28, 1)))
    m.add(tf.keras.layers.Dense(units=128, activation=tf.nn.relu))
    m.add(tf.keras.layers.Dropout(rate=0.2))
    m.add(tf.keras.layers.Dense(units=10, activation=tf.nn.softmax))
    m.compile(optimizer='adam',
                  loss='sparse_categorical_crossentropy',
                  metrics=['accuracy'])
    

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

    [image]
  4. ニューラルネットワークの訓練(学習)を行う
    history = m.fit(x_train, y_train, epochs=50)
    

    [image]
    (省略)
  5. テスト用データセットで評価する

    ※ 訓練(学習)などで乱数が使われるので,下図と違う値になる.

    print( m.evaluate(x_test,  y_test, verbose=2) )
    

    [image]
  6. ニューラルネットワークを使ってみる

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

    ※ 訓練(学習)などで乱数が使われるので,下図と違う値になる.

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

    [image]
  7. 正解表示

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

    print( y_test[0] )
    

    [image]
  8. 訓練の履歴の可視化

    参考Webページ: 訓練の履歴の可視化については,https://keras.io/ja/visualization/


TensorFlow 2 で Fashion MNIST データセットを扱う

Python プログラムを動かす.

※ Python プログラムを動かすために, Windows では,「python」コマンドを使う. Ubuntu では「python3」コマンドを使う.

開発環境や Python コンソール(Jupyter Qt ConsolespyderPyCharmPyScripter など)も便利である.

  1. データセットの準備,その確認表示
    from __future__ import absolute_import, division, print_function, unicode_literals
    import tensorflow.compat.v2 as tf
    import tensorflow_datasets as tfds
    import numpy as np
    import matplotlib.pyplot as plt
    tf.enable_v2_behavior()
    
    print(tf.__version__)
    
    fashion_mnist, metadata = tfds.load(
        name="fashion_mnist", as_supervised=False, with_info=True, batch_size = -1)
    train, test = fashion_mnist['train'], fashion_mnist['test']
    print(metadata)
    
    x_train, y_train = train["image"].numpy().astype("float32") / 255.0, train["label"] 
    x_test, y_test = test["image"].numpy().astype("float32") / 255.0, test["label"]
    
    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)
      image, label = train["image"][i], train["label"][i]
      plt.imshow(image.numpy()[:, :, 0].astype(np.float32), cmap=plt.get_cmap("gray"))
      plt.xlabel(class_names[label])
    
    plt.show()
    

    [image]
    (途中省略)
    [image]

    [image]
  2. モデルの作成
    m = tf.keras.Sequential()
    m.add(tf.keras.layers.Flatten(input_shape=(28, 28, 1)))
    m.add(tf.keras.layers.Dense(units=128, activation=tf.nn.relu))
    m.add(tf.keras.layers.Dropout(rate=0.2))
    m.add(tf.keras.layers.Dense(units=10, activation=tf.nn.softmax))
    m.compile(optimizer='adam',
                  loss='sparse_categorical_crossentropy',
                  metrics=['accuracy'])
    

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

    [image]
  4. ニューラルネットワークの訓練(学習)を行う
    history = m.fit(x_train, y_train, epochs=50)
    

    [image]
    (省略)
  5. テスト用データセットで評価する

    ※ 訓練(学習)などで乱数が使われるので,下図と違う値になる.

    print( m.evaluate(x_test,  y_test, verbose=2) )
    

    [image]
  6. ニューラルネットワークを使ってみる

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

    ※ 訓練(学習)などで乱数が使われるので,下図と違う値になる.

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

    [image]
  7. 正解表示

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

    print( y_test[0] )
    

    [image]
  8. 訓練の履歴の可視化

    参考Webページ: 訓練の履歴の可視化については,https://keras.io/ja/visualization/


本サイトは金子邦彦研究室のWebページです.サイトマップは,サイトマップのページをご覧下さい. 本サイト内の検索は,サイト内検索のページをご利用下さい.

問い合わせ先: 金子邦彦(かねこ くにひこ) [image]