img { border : 1px solid #DADADA ; border-bottom : 1px solid #757575 ; box-shadow : 0 2px 4px rgba(0, 0, 0, 0.2) ; }

マイノート

いろいろ勉強したことをまとめていきます

MENU

排他論理和をkerasで作ったmodelに解かせてみた

kerasの入門として、 排他論理和をkerasで作ったmodelに解かせてみました。

排他論理和

x1 x2 y
0 0 1
1 0 0
0 1 0
1 1 1

モデル

以下のようなモデルを作成して、学習させてみました。 f:id:ttt242242:20170219184636j:plain

コード

from keras.models import Sequential
from keras.layers import Dense,  Activation
from keras.optimizers import SGD
import numpy as np

model = Sequential()
model.add(Dense(3, input_dim=2))    # 入力層2ノード, 隠れ層に3ノード, 全結合
model.add(Activation("sigmoid"))    # 活性化関数はsigmoid
model.add(Dense(1)) # 出力層1ノード,全結合
model.add(Activation("sigmoid"))

model.compile(loss="binary_crossentropy",   # 誤差関数
              optimizer="adam",     # 最適化手法
              metrics=['accuracy'])

x = np.array([[0.0, 0.0], [0.0,1.0], [1.0,0.0], [1.0,1.0]])
y = np.array([1, 0, 0, 1])

model.fit(x, y, nb_epoch=10000, batch_size=4) # 学習

# テスト
print("---------------------------------------------")
print("---------------------------------------------")
x_test = np.array([[0.0, 0.0]])
print("0,0 : "+str(model.predict(x_test)))
x_test = np.array([[0.0, 1.0]])
print("0,1 : "+str(model.predict(x_test)))
x_test = np.array([[1.0, 0.0]])
print("1,0 : "+str(model.predict(x_test)))
x_test = np.array([[1.0, 1.0]])
print("1,1 : "+str(model.predict(x_test)))

結果

省略

4/4 [==============================] - 0s - loss: 0.0141 - acc: 1.0000
Epoch 9997/10000
4/4 [==============================] - 0s - loss: 0.0141 - acc: 1.0000
Epoch 9998/10000
4/4 [==============================] - 0s - loss: 0.0141 - acc: 1.0000
Epoch 9999/10000
4/4 [==============================] - 0s - loss: 0.0141 - acc: 1.0000
Epoch 10000/10000
4/4 [==============================] - 0s - loss: 0.0141 - acc: 1.0000
---------------------------------------------
---------------------------------------------
0,0 : [[ 0.99890119]]
0,1 : [[ 0.01039063]]
1,0 : [[ 0.01757045]]
1,1 : [[ 0.97316718]]

ちゃんと学習できてるみたいですね!

誤差伝搬の理論的なところは以下の記事で、

www.tcom242242.net

rubyで今回の排他論理和を解きたければ以下の記事

www.tcom242242.net