Pythonの深層学習モジュール「TensorFlow」を用いて、「AND」「OR」「NOR」「NAND」演算を学習する方法についてソースコード付きでまとめました。
TensorFlowでバージョン確認
Pythonの深層学習モジュール「TensorFlow」で、「AND」「OR」「NOR」「NAND」演算を学習します。
サンプルコード(Python + TensorFlow)
サンプルプログラムのソースコードです。(AND演算)
# -*- coding:utf-8 -*- import tensorflow as tf import numpy as np # 繰り返し学習回数(1000回) epochs = 1000 # 訓練データの用意 # 入力データ x_train = [[0, 0], [0, 1], [1, 0], [1, 1]] y_train = [0, 0, 0, 1] y_train = tf.keras.utils.to_categorical(y_train, 2) # テストデータ(正解ラベル)をクラスベクトルに変換 # モデルの作成 x = tf.placeholder("float", [None, 2]) # 入力信号 W = tf.Variable(tf.zeros([2, 2])) # 重みW b = tf.Variable(tf.zeros([2])) # バイアスb y = tf.nn.softmax(tf.matmul(x, W) + b) # 出力信号y(=活性化関数:ソフトマックス関数) # 教師信号(正解のラベルデータ) y_ = tf.placeholder("float", [None, 2]) # 誤差関数 cross_entropy = -tf.reduce_sum(y_ * tf.log(y)) # 勾配降下法で最適化(クロスエントロピーの最小化) train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) # tensorflow.Sessionの起動 sess = tf.Session() # 変数の初期化 init = tf.initialize_all_variables() sess.run(init) # 繰り返し学習 for step in range(epochs ): # x,yに値を渡して学習 sess.run(train_step, feed_dict={x: x_train, y_: y_train}) # 学習結果の検証 # テストデータの用意 x_test = x_train for x_input in x_test: y_pred = sess.run(y, feed_dict = {x: [x_input]}) # 出力をベクトルから整数値に変換 y_pred = np.argmax(y_pred, axis=1) print(x_input, y_pred)
■実行結果
[0, 0] [0] [0, 1] [0] [1, 0] [0] [1, 1] [1]
参考
■OR演算を学習させたい場合
x_train = [[0, 0], [0, 1], [1, 0], [1, 1]] y_train = [0, 1, 1, 1]
■NOR演算を学習させたい場合
x_train = [[0, 0], [0, 1], [1, 0], [1, 1]] y_train = [1, 0, 0, 0]
■NAND演算を学習させたい場合
x_train = [[0, 0], [0, 1], [1, 0], [1, 1]] y_train = [1, 1, 1, 0]
– | 関連記事 |
---|---|
1 | ■【Python/TensorFlow入門】ディープラーニングの使い方 |
2 | ■【機械学習入門】アルゴリズム&プログラミング |
3 | ■Python入門 基本文法 |
コメント