22
はじめてのAIプログラム学習キット4 グーグル開発のTensorflowPythonの基礎をマスター、体験 Tensorflow学習編(Pi4B版) スペクトラム・テクノロジー株式会社 https://spectrum-tech.co.jp [email protected] V1.0 2020/2/14 all rights reserved 2019 spectrum technology co. 1 抜粋版

はじめてのAIプログラム学習キット4 · 2020. 2. 18. · ①.Tensorflow概要 • Tensorflowとは • TensorFlowは、Googleが開発したディープラーニングのオープン・ソース・ソ

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

はじめてのAIプログラム学習キット4グーグル開発のTensorflow、Pythonの基礎をマスター、体験

Tensorflow学習編(Pi4B版)

スペクトラム・テクノロジー株式会社

https://[email protected]

V1.0 2020/2/14

all rights reserved 2019 spectrum technology co. 1

抜粋版

学習キット• Raspberry Pi運用マニュアル ページ

• RaspberryPiについて 3• Linux基本コマンド 4• RaspberryPi基本操作 5• 日常運用(ウイルススキャン、更新) 6

• Python環境(Python設定、仮想環境) 8• Tensorflow学習プログラム ページ

① Tensorflow概要、操作方法 11② Tensorboard(プログラムの可視化) 14

• scalar, graph, image, embedded(3D), histogram③ Jupyter notebook(機械学習) 21

• 基本分類、テキスト分類、回帰

④ Deep learningの代表的な方法• 線形回帰 25• ロジスティック回帰 26• DNN(Deep Neural network: ディープニューラルネットワーク) 27• CNN(Convolutional Neural Network:畳み込みニューラルネットワーク) 28• RNN(Recurrent Neural Network:再帰型ニューラルネットワーク) 30

⑤ 応用例• 文字認識:MNIST 31• 画像認識:CIFAR-10 37• クラス分類:iris 38• 自然言語処理:word2vec 39• 言語認識:seq2seq 40

⑥ What-ifツール 41• 参考:Jupyter notebook 47

公式サイト:https://www.tensorflow.org/tutorials/日本語サイト:http://tensorflow.classcat.com/

all rights reserved 2020 spectrum technology co. 2

抜粋版のためページと内容が異なります。

RaspberryPi運用マニュアル

1. Raspberry Piについて既に全世界で1000万台以上販売された手のひらサイズのコンピュータです。

LinuxベースのRasbianOSで動作しております。

2. Linux基本コマンド① システム関係

• 起動:電源を入れると自動で起動します。

• 再起動:# reboot又は、menu>shutdown>reboot;左上のメニューから

• 終了: # shutdown又は、menu>shutdown>shutdown;左上のメニューから

• ログアウト # exit又は、menu>shutdown>logout;左上のメニューから

• 日本語/英語の入力切替:キーボードのCTLとjを同時に押します(コントロール:左下とj)

3all rights reserved 2020 spectrum technology co.

RaspberryPi運用マニュアル

3. Raspberry Piの基本操作① 表示画面と内容

4all rights reserved 2020 spectrum technology co.

トップ画面(上段のタスクバーで選択)• メニュー• ブラウザ• ファイルマネジャ• ターミナル• マルチ画面選択

• VNC• 日本語入力• BLE• LAN/WiFi• 音量• 回線効率• 時刻

Anthyが出ない場合は、一度Japaneseを選択後、再度

Anthyを選択してください。

RaspberryPi運用マニュアル4. 日常運用

② インストール済パッケージの更新リスト、アップグレード• Linuxの場合は、頻繁に更新が発生します。アップグレードを定期的に実施してください。

• 更新前には、バックアップを取ることをお勧めします。特にアップグレードはまれに動作不良、戻せない状態が発生します。自己責任で実施してください。

5

更新リスト取得# apt-get updateアップグレード実施# apt-get upgrade

all rights reserved 2020 spectrum technology co.

Python環境①.概要

• Pythonの設定• Python2,3 を切り替えて使用可能

• Pyenv を使用してバージョンを確認、*のところが使用中のバージョン

• バージョン切替は pyenv global 3.6.9

all rights reserved 2018 spectrum technology co. 6

pi@raspberrypi:~ $ pyenv versions* system (set by /home/pi/.pyenv/version)2.7.163.5.43.6.93.7.3

pi@raspberrypi:~ $ pyenv global 3.6.9pi@raspberrypi:~ $ pyenv versionssystem (set by /home/pi/.pyenv/version)2.7.163.5.4

*3.6.93.7.3

(注)Rootでは、pyenvは動作しません

デスクトップ上の「よく使うコマンド集.txt」でコピペして使ってください

Tensorflow 学習プログラム①.Tensorflow概要• Tensorflowとは

• TensorFlowは、Googleが開発したディープラーニングのオープン・ソース・ソフトウエアで2015年11月に公開されました。

• 特徴は、分散型GPUで動作し、プログラム言語は、Pythonで動作します。プラットフォームはLinuxからWindowsまでマルチ環境をサポート

• 用途は、画像認識、文字認識、自然言語処理など多岐にわたります。

• 比較表 https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software

all rights reserved 2019 spectrum technology co. 7

ディープラーニング・ソフト

開発元 プログラム言語 分散対応 対応OS GPU対応

備考

Tensorflow Google Python, c++ 〇 Linux, mac,windows

Chainer(開発中止2020/1/21)

Preferred network(日本) python ? linux 〇 Pytorchへ移行

Caffe Berkeleyvision C++ ? Linux, mac,windows

〇 Pytorchへ併合

Theano モントリオール大学 python ? Linux, mac,windows

Pytorch facebook python, c++ ? Linux, mac,windows

MXNet MS, AWS python, c++,java ? Linux, mac,windows

Tensorflow 学習プログラム③.Tensorboard(プログラムの可視化)• Tensorflowのひとつの特徴としてプログラムを可視化できる

Tensorboardが準備されています。データフロー、誤差、精度などがグラフで表示され非常に分かりやすい。

• Tensorboardはグーグルのchromeで動作します。ローカルホストにアクセスすると表示されます。pyhton実行後にアクセスしてください。

• Graph例• 四則演算:1_const.py• データフロー図が可視化(右図)

• node3 = tf.add(node1, node2)の例

• tensorboard --logdir=data1でコマンド入力後

• http://pc名:6006へchromeからアクセス

• Graphタグで表示• CTL-Cでグラフは終了します。

出典:https://www.tensorflow.org/guide/summaries_and_tensorboard

• python 1_const.py• tensorboard --logdir=data1

all rights reserved 2019 spectrum technology co. 8

Py36の仮想環境に切り替えて試験してください

$ cd /home/pi/Documents/tensorflow/study

Tensorflow 学習プログラム③.Tensorboard(プログラムの可視化)• Graph例

• 直線回帰:2_linear_reg.py• linear_model = W * x + b• optimizer = tf.train.GradientDescentOptimizer(0.01)• tensorboard --logdir=data2• 複雑なフローも可視化(右図)

• 現バージョンは、画面が小さく表示

独立したノード

name_scopeでまとめた

ノード

データフロー

凡例

制御フロー

all rights reserved 2019 spectrum technology co. 9

$ cd /home/pi/Documents/tensorflow/study

Tensorflow 学習プログラム③.Tensorboard(プログラムの可視化)• Graph例

• データフロー図解説

• name_scopeでまとめた例:with tf.name_scope(‘loss’):複数のフローをまとめると分かりやすい、Wも同様に定義。ダブルクリックで詳細が表示

all rights reserved 2019 spectrum technology co. 10

$ cd /home/pi/Documents/tensorflow/study

Tensorflow 学習プログラム③.Tensorboard(プログラムの可視化)• Scala例1

• loss(誤差)グラフ表示:3_scala.py• 1000回の学習により誤差が3から0.26まで減少(下図)

• csvでデータを取り出し可能:時刻は、1970/1/1が基準の秒数のため変換が必要

• tensorboard --logdir=data3

出典:http://qiita.com/sergeant-wizard/items/af7a3bd90e786ec982d2

all rights reserved 2019 spectrum technology co. 11

$ cd /home/pi/Documents/tensorflow/study

Tensorflow 学習プログラム③.Tensorboard(プログラムの可視化)• Scala例2、image例

• 複数学習係数によるグラフ表示:4_hyper_scala.py• 複数を同時に表示し比較が可能(下図)

• MNISTのデータ使用しているため約1時間かかります。

• tensorboard --logdir=./cnnからローカルホストにアクセスして表示

• 文字認識画像もimageタグで確認

スライダを動かすと画像が確

all rights reserved 2019 spectrum technology co. 12

新しいバージョンは、<>で切り替えて表示さ

せます。

$ cd /home/pi/Documents/tensorflow/study

Tensorflow 学習プログラム④.Jupyter notebook(機械学習基本)• 基本分類

• https://www.tensorflow.org/tutorials/keras/basic_classification• Tensorflowのホームページの基本分類のページのコピーボタンを押す

• Jupyter notebookに貼り付け、Run,数字が出るまで待ち。結果表示

• 後は、ホームページどうりに学習

• 1_basic_classification.ipynb

all rights reserved 2019 spectrum technology co. 13

出典:TensorFlow 機械学習の実践https://www.tensorflow.org/tutorials/keras

$ cd /home/pi/Documents/notebooks

Tensorflow 学習プログラム⑤.Deep learningの代表的な方法• 線形回帰:11_linear_reg.py

• モデル:y = tf.matmul(x,a) y=x*a• 誤差関数(loss):平均二乗誤差(y_-y)^2の誤差が小さくなる。y_:出力、y:シュミレーション値

• 最適化:最急降下法

• 可視化:tensorboard --logdir=data11 確認できます。

出典:TensorFlow を使った機械学習ことはじめ (GDG京都機械学習勉強会) https://www.slideshare.net/ToruUenoyama/tensorflow-gdg

all rights reserved 2019 spectrum technology co. 14

$ cd /home/pi/Documents/tensorflow/study

Tensorflow 学習プログラム⑤.Deep learningの代表的な方法

• ボストンの不動産予測モデル• ボストンの不動産価格を、価格を推定するモデル。学習:404、訓練:102のデータを使って予測データを推定

• Cd /home/pi/Documents/tensorflow/study/boston• DNN(deep neural network)の場合:boston.py• モデル:model= tf.estimator.DNNRegressor ()• 誤差関数(loss):Mean square error• 予測データの価格算出:6か所の不動産価格の予測を算出:単位:1000USD

• グラフ表示:boston_graph.py• 出典に表示されているグラフが順番に出ます。グラフを一度閉じると次のグラフが表示されます。

出典:tensorflow regression examplehttps://www.tensorflow.org/tutorials/keras/basic_regression?hl=ja

all rights reserved 2019 spectrum technology co. 15

10000回実施

説明サイトがなくなりました。関連のURL

です。

$ cd /home/pi/Documents/tensorflow/study/boston

Tensorflow 学習プログラム⑤.Deep learningの代表的な方法• Cd /home/pi/Documents/tensorflow/study/cifar10• Convolutional neural network:cifar10_train.py

• cifar10は画像認識のベンチマークテスト用に準備された10分類の6万枚• airplane, automobile, bird, cat, deer, dog, frog, horse, ship, and truck.

• モデル: convolutional neural network cifar-10使用

• 誤差関数(loss):クロスエントロピー

• 最適化:最急降下法

• 可視化:tensorboard --logdir=cifar10_train 確認できます。200回で約30分かかります。本来は10万回

cnn

出典:Convolutional Neural Networks by tensorflowhttps://www.tensorflow.org/tutorials/deep_cnn

all rights reserved 2019 spectrum technology co. 16

$ cd /home/pi/Documents/tensorflow/study/cifar10

Tensorflow 学習プログラム⑥.応用例• 文字認識;MNIST A)

• mnist.py:基本形• mnistのテストデータの0-19番目(20個分)までの画像とラベルを表示

• 56-64行までのプログラム:不要の場合はコメントアウトしてください。;tkinterの問題で非表示

テストデータの元のものと学習して予測したデータで正答率を算出・15個のデータで3個の間違い

Accuracy (for test data): 0.79True Label: [7 2 1 0 4 1 4 9 5 9 0 6 9 0 1]Est Label: [7 0 1 0 4 1 4 9 9 9 0 8 9 0 1]

all rights reserved 2019 spectrum technology co. 17

$ cd /home/pi/Documents/tensorflow/study/mnist$ python mnist.py

Tensorflow 学習プログラム⑥.応用例

• 文字認識;MNIST B)• mnist_softmax.py:正解率が0.92へ tensorboard --logdir=data2• モデルがsoftmaxからmatmulに不安定なため修正:34行目

出典:MNIST For ML Beginners by tensorflowhttp://tensorflow.classcat.com/2016/03/09/tensorflow-cc-mnist-for-ml-beginners/https://www.tensorflow.org/get_started/mnist/beginners

all rights reserved 2019 spectrum technology co. 18

$ cd /home/pi/Documents/tensorflow/study/mnist

Tensorflow 学習プログラム⑥.応用例• クラス分類:iris/iris.py

• irisの3種類(setosa、 versicolor、 virginica)で花弁などの幅と大きさから新種の2種類がどれに属するのかを推定する

A) iris.py: 学習データ:120件、試験データ:30件 DNNモデルtensorboard --logdir=iris_model 正解率:96% 2000回

出典:tf.contrib.learn Quickstart by tensorflowhttps://www.tensorflow.org/tutorials/eager/custom_training_walkthrough?hl=ja

all rights reserved 2019 spectrum technology co. 19

$ cd /home/pi/Documents/tensorflow/study/iris

Tensorflow 学習プログラム⑦.What-ifツール(Web版)

• 概要• コードを作成せずに機械学習モデルを調査できるツールです。モデルの理解、デバッグ、公平性の確保に役立ちます。TensorBoard と Jupyter ノートブックまたは Colab ノートブックで使用できます。

• 年収データ:http://archive.ics.uci.edu/ml/datasets/Census+Income• Web版で簡単にデモを見れます。データの中身が可視化できます。

all rights reserved 2019 spectrum technology co. 20

Wit hphttps://pair-code.github.io/what-if-tool/index.htmlGithubhttps://github.com/tensorflow/tensorboard/tree/master/tensorboard/plugins/interactive_inference

Tensorflow 学習プログラム⑦.What-ifツール(Colab版)

• Colab版でWhat-ifのツールの使い方がわかります。• https://pair-code.github.io/what-if-tool/index.html#demos• Jupyterの簡易版です。動作させるために、Tensorflow_model_serverなどの設定が必要です。Jupyter版の方をお勧めします。

all rights reserved 2019 spectrum technology co. 21

Wit hphttps://pair-code.github.io/what-if-tool/index.htmlGithubhttps://github.com/tensorflow/tensorboard/tree/master/tensorboard/plugins/interactive_inference

順番にチェック

①. jupyter notebook• 運用方法

• chromeのブラウザから操作

• プログラムを入力し▶を押すだけ

all rights reserved 2019 spectrum technology co. 22