スポンサーリンク
説明というか現状までの理解については次回以降にして、今はとにかく結果が得られるコードが欲しいのでそれらしい物を書いた。
import tensorflow as tf import numpy as np from tensorflow.keras.optimizers import RMSprop # モデル作成 # Define the model. model = tf.keras.models.Sequential([ tf.keras.layers.InputLayer(input_shape=(2,)), # 入力層 要素数1、内容「2」のタプル tf.keras.layers.Dense(units=4, activation='sigmoid'), tf.keras.layers.Dense(units=4, activation='sigmoid'), tf.keras.layers.Dense(units=1, activation='linear') # 出力層 1出力。1出力の時はsoftmaxは使えない ]) model.compile( optimizer=RMSprop(), loss='mse' ) # トレーニング用入力 XY = np.array( [[0.0,0.0], [0.0,1.0], [1.0,0.0], [1.0,1.0]] ) # 正解データ T = np.array( [[0.0], [1.0], [1.0], [0.0]] ) # トレーニング model.fit(XY, T, epochs=3000, batch_size=4) print("------------------------------") # 出力値をしきい値処理 threshold = 0.5 # 検証用データをモデルに入力し、出力(予測値)を取り出す predict_y = model.predict( np.array( [[0,0]] ) ) print( predict_y , (predict_y > threshold).astype(np.int) ) predict_y = model.predict( np.array( [[1,0]] ) ) print( predict_y , (predict_y > threshold).astype(np.int) ) predict_y = model.predict( np.array( [[0,1]] ) ) print( predict_y , (predict_y > threshold).astype(np.int) ) predict_y = model.predict( np.array( [[1,1]] ) ) print( predict_y , (predict_y > threshold).astype(np.int) )
import tensorflow as tf import numpy as np from tensorflow.keras.optimizers import RMSprop # モデル作成 # Define the model. model = tf.keras.models.Sequential([ tf.keras.layers.InputLayer(input_shape=(2,)), # 入力層 要素数1、内容「2」のタプル tf.keras.layers.Dense(units=4, activation='sigmoid'), tf.keras.layers.Dense(units=4, activation='sigmoid'), tf.keras.layers.Dense(units=2, activation='softmax') # 出力層 softmaxの時は2個以上の出力 ]) model.compile( optimizer=RMSprop(), loss='mse' ) # トレーニング用入力 XY = np.array( [[0.0,0.0], [0.0,1.0], [1.0,0.0], [1.0,1.0]] ) # 正解データ (One Hot表現) T = np.array([[0.0, 1.0], [1.0, 0.0], [1.0, 0.0], [0.0, 1.0]]) # トレーニング model.fit(XY, T, epochs=3000, batch_size=4) print("------------------------------") # 出力値をしきい値処理 threshold = 0.5 # 検証用データをモデルに入力し、出力(予測値)を取り出す predict_y = model.predict( np.array( [[0,0]] ) ) print( predict_y , (predict_y > threshold).astype(np.int) ) predict_y = model.predict( np.array( [[1,0]] ) ) print( predict_y , (predict_y > threshold).astype(np.int) ) predict_y = model.predict( np.array( [[0,1]] ) ) print( predict_y , (predict_y > threshold).astype(np.int) ) predict_y = model.predict( np.array( [[1,1]] ) ) print( predict_y , (predict_y > threshold).astype(np.int) )
Denseを調べます
http://marupeke296.com/IKDADV_DL_No7_dense.html
ご注文は TensorFlow 2.x ですか??
https://hmx.hatenablog.jp/entry/2020/04/26/000000
光軒の集い
https://www.kouken-party.info/2017/10/25/python%E3%81%A8keras%E3%81%A7xor/
kerasでOne-hotのラベルを作成する
https://qiita.com/okj15/items/f081ac0928540f1579b5
【Python/Keras】ニューラルネットで論理演算(XOR)の学習
https://algorithm.joho.info/machine-learning/python-keras-neural-network-and-or/
Cannot train a neural network solving XOR mapping
https://stackoverflow.com/questions/34311586/cannot-train-a-neural-network-solving-xor-mapping