こんにちは。株式会社マックスネット 人工知能・AI開発チームのIsoです。
さて、お次はpythonのNumpyとよばれるものを少々動かしてみましょう。
*********
Numpyとはpythonで計算式をサクッとやりたい時に、非常に重宝するライブラリイです。
要は複雑な計算を簡単なコードでやってくれる便利もののことです。
まずは下記のコードをpythonのインタプリタで入れてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#numpyをimportします。で、省略形のnpで使うよって宣言します >>>import numpy as np # xに0と1を代入 >>>x = np.array([0,1]) # wに0.5を配列で代入 >>>w = np.array([0.5,0.5]) #バイアスに-0.7を代入 >>>b = -0.7 # wとxをそれぞれ掛ける >>>w*x # wとxをそれぞれ掛けて、総和を取る >>>np.sum(w*x) # wとxをそれぞれ掛けて、総和を取り、バイアスを足す >>>np.sum(w*x) + b |
詳細はそれぞれのコメントを見てください。
ここで前回のAND演算のコードです。
1 2 3 4 5 6 7 |
def AND(x1, x2): w1, w2, zzz = 0.5, 0.5, 0.7 tmp = x1*w1 + x2*w2 if tmp <= zzz: return 0 elif tmp > zzz: return 1 |
上記のコードはそれぞれの入力値が少ないので、簡単に書けますが、
これが10や20あったら大変ですよね。
このNumpyを使えば、配列で計算できるので、記述が簡潔になるんですね。
それでは、さきほどのAND演算をNumpyで書き直してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
def AND(x1, x2): #それぞれの変数に値を代入 x = np.array([x1,x2]) w = np.array([0.5,0.5]) b = -0.7 #xとwをそれぞれ掛けて、バイアスを足す zzz = np.sum(w*x) + b #もし、zzzが0以下なら0を返す if zzz <= 0: return 0 #それ以外の値なら1を返す else: return 1 |
これも詳細はコメントを見てください。
Numpyを使ったので、シンプルでわかりやすくなりましたね。
こいつを実際に動かしてみましょう。
下記のコードをコピーして
pythonのインタプリタ上にペーストします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import numpy as np def AND(x1, x2): #それぞれの変数に値を代入 x = np.array([x1,x2]) w = np.array([0.5,0.5]) b = -0.7 #xとwをそれぞれ掛けて、バイアスを足す zzz = np.sum(w*x) + b #もし、zzzが0以下なら0を返す if zzz <= 0: return 0 #それ以外の値なら1を返す else: return 1 |
では、実行します。
>>> AND(1,1)
1
>>> AND(1,0)
0
>>> AND(0,1)
0
>>> AND(0,0)
0
真理値表通りでしたね。
これからディープラーニングを学んでいくと、Numpyは頻繁に出てきます。
こいつの使い方は、ぜひマスターしてしまいましょう。