from microMLP import MicroMLP
# ニューラルネットワークの構築
# 入力が2次元、隠れ層が1つ、出力が1次元
# 活性化関数はハイパボリックタンジェント
# 全結合
mlp = MicroMLP.Create( neuronsByLayers = [2, 2, 1],
activationFuncName = MicroMLP.ACTFUNC_TANH,
layersAutoConnectFunction = MicroMLP.LayersFullConnect )
# MicroMLP内で扱える値の型([NNValueクラス](https://github.com/jczic/MicroMLP#using-micromlpnnvalue-class-))に変換
# Float, Int, Percent, Byte, Bool, AnalogSignalがある。
nnFalse = MicroMLP.NNValue.FromBool(False)
nnTrue = MicroMLP.NNValue.FromBool(True)
# 学習用データを設定
mlp.AddExample( [nnFalse, nnFalse], [nnFalse] )
mlp.AddExample( [nnFalse, nnTrue ], [nnTrue ] )
mlp.AddExample( [nnTrue , nnTrue ], [nnFalse] )
mlp.AddExample( [nnTrue , nnFalse], [nnTrue ] )
# 学習を実行
learnCount = mlp.LearnExamples()
# 推論を実行
print( "LEARNED :" )#
print( " - False xor False = %s" % mlp.Predict([nnFalse, nnFalse])[0].AsBool )
print( " - False xor True = %s" % mlp.Predict([nnFalse, nnTrue] )[0].AsBool )
print( " - True xor True = %s" % mlp.Predict([nnTrue , nnTrue] )[0].AsBool )
print( " - True xor False = %s" % mlp.Predict([nnTrue , nnFalse])[0].AsBool )