ニューラルネットワーク:人間の脳の神経細胞であるニューロンの動きを元にプログラム化。
ニューロンの動き:複数のデータを入力し、1つの出力結果を出す。それを模したプログラム=パーセプトロン
データ入力するときに重み付けを掛ける。それらを合計し、ある一定値(バイアス)以上なら1を出力、そうでないなら0を出力。
# ANDの例 def and_gate(x1, x2): w1 = 0.3 # 重み1 w2 = 0.3 # 重み2 b = 0.5 # バイアス a = x1 * w1 + x2 * w2 if a <= b: y = 0 else: y = 1 return y # 出力 print(and_gate(1, 1))
# ORの例 def or_gate(x1, x2): w1 = 0.7 # 重み1 w2 = 0.7 # 重み2 b = 0.3 # バイアス a = x1 * w1 + x2 * w2 if a <= b: y = 0 else: y = 1 return y # 出力
画像は多次元配列(Tensor)と見なすことができる。これを入力とし出力を出す。最終的にはいくつかの箱のうちのどれか1つが1になるように計算を行う。1になったところが正解となる。
例:28×28の画像に書かれた数字を何の数か認識する。28×28=784要素の配列と見なすことが出来る。これを最終的に10個の要素の配列にし、そのうちのどれかが1になる。
これを多重に行っていく。一番最初が入力層、最後が出力層と呼ばれる。中間が中間層(隠れ層)と呼ぶ。この中間層を大量に設けて処理するのがディープラーニング。
例:上の例で最初784要素の配列を4段階の層を使って最終的に10個の要素の配列にする。784→64→32→16→10 のように減らしていく。
ディープラーニングにも対応した機械学習ライブラリである「Tensorflow」の環境を構築する。
pip install "tensorflow~=2.0" pip install "tensorflow-hub[make_image_classifier]~=0.6"
http://download.tensorflow.org/example_images/flower_photos.tgz
以下のコマンドで解凍する。
tar -zxvf flower_photos.tgz
複数行でのコマンド実行のためPowerShellを使用。画像は C:\work\flower_photos にあるものとする。
make_image_classifier ` --image_dir C:\work\flower_photos ` --labels_output_file labels.txt ` --tflite_output_file model.tflite `
labels.txtにラベルが、model.tfliteにTensorFlow Lite用のモデルファイルが出力される
Epoch:1回の学習。回数が多すぎると過学習を起こす。
accuracy 正解率
loss 損失関数の評価値:求めた答えと実際がどれだけずれているか
python google_images_download.py -k "cat"