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

Keras を使ってみる(TensorFlow, Keras, Python を使用)

Keras は TensorFlow, CNTK, Theano 上で動くニューラルネットライブラリです.

このWebページの前半では Keras のインストール手順を、後半では、次のデータを使っての実行の手順を示す.

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


前準備

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 のインストール


Keras を使ってみる

参考Webページ: 「https://keras.io/ja/」の「30 秒で Keras に入門しましょう

ここで使用する Python パッケージのインストール

Windows での手順を示す.Ubuntu でも同様の手順になる.

  1. Windows では,コマンドプロンプトを管理者として実行

    [image]
  2. ここで使用するパッケージのインストール ※ Windows では「python -m pip install」,Ubuntu では「sudo python3 -m pip」
    python -m pip install -U numpy scipy h5py scikit-learn matplotlib seaborn
    

Python 処理系の起動

Python 処理系として,Jupyter Qt Console を起動

jupyter qtconsole

[image]
Python プログラムを動かして,結果をビジュアルに見たい.

ここでは,Jupyter Qt Console を使っている. 他の開発環境(spyderPyCharmPyScripter など)も便利である.

ここから先は,Jupyter Qt Console の画面で説明する.

iris データセットを使ってみる

  1. X, yiris データを設定

    次の Python プログラムを実行

    import sklearn.datasets
    iris = sklearn.datasets.load_iris()
    X = iris.data
    y = iris.target
    

    [image]
  2. x_train, y_train, x_test, y_test の確認表示

    x_train, x_test は主成分分析で2次元にマッピング, y_train, y_test は色.

    import pandas as pd
    import seaborn 
    import sklearn.decomposition
    # 主成分分析でプロット
    def pcaplot(A, b, alpha):
        pca = sklearn.decomposition.PCA(n_components=2)
        pca.fit(A)
        a12 = pd.DataFrame( pca.fit_transform(A), columns=['a1', 'a2'] )
        a12['target'] = b
        seaborn.lmplot(x='a1', y='a2', data=a12, hue='target', scatter_kws={'alpha': alpha}, fit_reg=False)
    pcaplot(X, y, 1)
    

    [image]
  3. x_train, y_train, x_test, y_test に iris データを設定

    次の Python プログラムを実行

    import keras
    x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, train_size=0.5) 
    # 2次元の配列. 要素は float64, 最大値と最小値を用いて正規化
    import numpy as np
    def normalizer(A):
        M = np.reshape(A, (len(A), -1))
        M = M.astype('float32')
        max = M.max(axis=0)
        min = M.min(axis=0)
        return (M - min)/(max - min)
    x_train = normalizer(x_train)
    x_test = normalizer(x_test)
    y_train_logit = keras.utils.to_categorical(y_train)
    y_test_logit = keras.utils.to_categorical(y_test)
    

    [image]
  4. x_train, y_train, x_test, y_test の確認表示
    pcaplot(np.concatenate( (x_train, x_test) ), np.concatenate( (y_train, y_test) ), 1)
    

    [image]
  5. モデルの生成と,モデルを用いた予測

    次の Python プログラムを実行

    from keras.models import Sequential
    model = Sequential()
    from keras.layers import Dense, Activation
    
    model.add(Dense(units=64, input_dim=len(x_train[0])))
    model.add(Activation('relu'))
    model.add(Dense(units=max(set(y_train)) - min(set(y_train)) + 1))
    model.add(Activation('softmax'))
    model.compile(loss='sparse_categorical_crossentropy',
                  optimizer='sgd',
                  metrics=['accuracy'])
    model.fit(x_train, y_train, epochs=200)
    score=model.evaluate(x_test, y_test, batch_size=1)
    print(score)
    model.predict(x_test)
    model.summary()
    

    [image]

    [image]
    from keras.models import Sequential
    model2 = Sequential()
    from keras.layers import Dense, Activation
    import keras.losses
    
    model2.add(Dense(units=64, input_dim=len(x_train[0])))
    model2.add(Activation('relu'))
    model2.add(Dense(units=max(set(y_train)) - min(set(y_train)) + 1))
    model2.add(Activation('softmax'))
    model2.compile(loss=keras.losses.sparse_categorical_crossentropy,
                  optimizer=keras.optimizers.SGD(lr=0.01, momentum=0.9, nesterov=True))
    model2.fit(x_train, y_train, epochs=200)
    score2=model2.evaluate(x_test, y_test, batch_size=1)
    print(score2)
    model2.predict(x_test)
    

    [image]

CIFAR10

keras に付属のデータセットに関する Web ページ: https://keras.io/ja/datasets/

  1. x_train, y_train, x_test, y_testCIFAR 10 データを設定

    次の Python プログラムを実行

    from keras.datasets import cifar10
    (x_train, y_train), (x_test, y_test) = cifar10.load_data()
    
    import numpy as np
    # 2次元の配列. 要素は float32, 最大値と最小値を用いて正規化
    def normalizer(A):
        M = np.reshape(A, (len(A), -1))
        M = M.astype('float32')
        max = M.max(axis=0)
        min = M.min(axis=0)
        return (M - min)/(max - min)
    x_train = normalizer(x_train)
    x_test = normalizer(x_test)
    

    [image]
  2. x_train, y_train, x_test, y_test の確認表示

    x_train, x_test は主成分分析で2次元にマッピング, y_train, y_test は色.

    import pandas as pd
    import seaborn 
    import sklearn.decomposition
    
    # 主成分分析でプロット
    def pcaplot(A, b, alpha):
        pca = sklearn.decomposition.PCA(n_components=2)
        pca.fit(A)
        a12 = pd.DataFrame( pca.fit_transform(A), columns=['a1', 'a2'] )
        a12['target'] = b
        seaborn.lmplot(x='a1', y='a2', data=a12, hue='target', scatter_kws={'alpha': alpha}, fit_reg=False)
    pcaplot(np.concatenate( (x_train, x_test) ), np.concatenate( (y_train, y_test) ), 0.1)
    

    [image]

参考Webページ http://www.procrasist.com/entry/2017/01/07/154441

https://keras.io/getting-started/sequential-model-guide/ で言及されている次の事項について.

https://github.com/fchollet/keras/tree/master/examples に記載のプログラムを動かしてみる.

  • CIFAR 10

    https://github.com/fchollet/keras/blob/master/examples/cifar10_cnn.py を実行してみる.


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

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