はじめての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• 複雑なフローも可視化(右図)
• 現バージョンは、画面が小さく表示
W
b
独立したノード
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