【Python/Keras】簡単なニューラルネットモデルの構築

Pythonの機械学習モジュール「Keras」で簡単なニューラルネットモデルを構築する方法をソースコード付きで解説します。

簡単なニューラルネットモデル(MLP)の構築

多層パーセプトロン(MLP)とは、下図のように(単純)パーセプトロンを複数繋いで多層構造にしたニューラルネットです。

多層パーセプトロンの詳細はこちら
詳細 【ニューラルネット】多層パーセプトロン(MLP)の原理・計算式


左から入力層、中間層(隠れ層)、出力層と呼ばれます。
この場合は3層構造なので「3層パーセプトロン」とも呼ばれます。
今回はKerasを使って入力の次元数2、中間層の次元数3、出力の次元数2の簡単な多層パーセプトロン(MLP)を作ってみます。

サンプルコード

サンプルプログラムのソースコードです。

# -*- coding: utf-8 -*
import numpy as np
import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.optimizers import RMSprop

def main():
    # 訓練データ
    x_train = np.array([[0,0],[0,1],[1,0],[1,1]]) # 入力(学習データ)
    y_train = np.array([[0,0],[0,0],[0,0],[1,1]]) # 出力(教師データ)

    # テスト用データ
    x_test = np.array([[150,70],[175,66]])

    # モデル生成
    model = Sequential()

    # 入力の次元数2, 3次元に線形変換, 活性化関数(シグモイド)
    model.add(Dense(units=3, activation='sigmoid', input_dim=2))

    # 2次元に線形変換, 活性化関数(softmax)
    model.add(Dense(units=2, activation='softmax'))
   # コンパイル(勾配法:adam、誤差関数:categorical_crossentropy)
    model.compile(loss='categorical_crossentropy', optimizer='adam')

    # 構築したモデルで学習
    model.fit(x_train, y_train, epochs=100)

    # モデルの検証・性能評価
    y_test = model.predict(x_test)
    print(y_test)


if __name__ == '__main__':
    main()
関連記事
1 Python入門 基本文法
2 【Python/Keras】ディープラーニング入門・使い方
関連記事