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入門 基本文法 |

コメント