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」で深層学習(ディープラーニング)を行う方法について入門者向けに使い方を解説します。

コメント