【Python/Keras】ニューラルネットでXOR演算の学習

Pythonの機械学習モジュール「Keras」でニューラルネットワークを実装し、XOR演算を学習する方法をソースコード付きでまとめました。

ニューラルネットでXOR演算の学習

今回は、Python3 + Kerasでニューラルネットワークを実装し、XOR演算の学習を行ってみました。

■XOR演算の訓練データ

入力x 教師データy
0, 0 0
1, 0 1
0, 1 1
1, 1 0

サンプルコード

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

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

def main():
    # 訓練データの用意
    # 入力データ
    x_train = np.array([[0.0, 0.0],
                        [1.0, 0.0],
                        [0.0, 1.0],
                        [1.0, 1.0]])
    # 入力の教師データ
    y_train = np.array([0.0, 1.0, 1.0, 0.0])

    # モデル構築
    model = Sequential()
    # 入力層
    model.add(Dense(2, activation='sigmoid', input_shape=(2,)))
    # 出力層
    model.add(Dense(1, activation='linear'))
    # コンパイル(勾配法:RMSprop、損失関数:mean_squared_error、評価関数:accuracy)
    model.compile(loss='mean_squared_error', optimizer=RMSprop(), metrics=['accuracy'])
    # 構築したモデルで学習
    history = model.fit(x_train, y_train, batch_size=4, epochs=3000)

    # テストデータの用意
    x_test = x_train
    y_test = y_train

    # モデルの性能評価
    score = model.evaluate(x_train, y_train, verbose=0)
    print('Score:', score[0])    # Score: 3.55525435225e-06
    print('Accuracy:', score[1]) # Accuracy: 1.0

    # 学習済みモデルを使って答えを予測
    x = np.array([[0, 1]])
    y = model.predict(x)
    print(y) # [[ 1.00200975]]

if __name__ == '__main__':
    main()
【TensorFlow版Keras入門】ディープラーニングを簡単に学ぶ方法
Pythonモジュール「TensorFlow/Keras」で深層学習(ディープラーニング)を行う方法について入門者向けに使い方を解説します。

コメント