TensorFlowの基本、
第7回
題目:TensorFlow上の回帰問題
発表者:NANDEDKAR PARTH SHIRISH
1
今日の流れ
1.計算用デバイスの設定
2.MNISTのための(単層)回帰モデル
3.ロジスティク回帰モデルの記述方法
4.ロジスティク回帰のプログラム全体
5.MNISTのための複数層モデル
2
1.計算用デバイスの設定
 46ページの例のプログラムを考える
実際に存在する標準関数でなく、入力を得ることを表すだけ
3
Cのread(),Javaの
getline()みたい
feed_dict=「作
業型」の変数
1.計算用デバイスの設定
 46ページの例で、
セッションsessは右の
計算グラフを作成
計算を開始
4
Computational Graph:
計算流れ図
1.計算用デバイスの設定
 GPUは並列処理が得意で、デフォルトのデバイス
 特定のデバイスの設定
(forでも利用可)
forの上記の文より、1,2番目のGPUは並列(非依存的)
に処理をする
5
1.計算用デバイスの設定
 複数のデバイスの例
1,2番目のGPUは並列(非依存的)に処理
cはリスト型と定義。
6
1.計算用デバイスの設定
 セッション型のsessの設定の2項目
デバイス名の表示 withが失敗すると、開い
ているデバイスを探す
7
2.MNISTのロジスティク回帰モデル
 第1回輪講の桁の識別のデータセットはMNIST
モデルの記法
x=入力データ、28*28ピクセル
b=Bias、各ニューロンに1つ
W=各入力の神経から結果までの重み
8
復習:複数層
ニューラル
ネットワーク
(2つの層、
1つの隠れ層)
9
2.MNISTの回帰:単層ニューラル
ネットワーク (1つの層、
0つの隠れ層)
出力 1 2 10
W1,1 W784,10
W2,1
W784,2
10
神経回路網の(線型的)ニューロン
段階1 段階2
段階3
段階4
段階5
bias定数C
を加算
+bias定数C(適当に)
11
復習:ロジスティク関数 12
回帰問題:
夫々の確率の出力ベクトル
分類問題:出力は0や1、又は「グループ
a」,「b」,「c」だけ
softmax法で0から1の確立を得る
softmax法
13
回帰問題:出力ベクトル
0から1までの
確率が出力
車の確率
動物の確率
人間の確率
。
。
14
2.MNISTのロジスティク回帰
出力 1 2 10
W1,1 W784,10
W2,1
W784,2
15
3.ロジスティク回帰の記述方法
手順1.推論:現在のW,bから
の計算(softmax適用)
手順2.ロス関数値の計算: 手順1の出力ベクト
ル、入力の結果間のKullback-Leibler情報量
16
3.ロジスティク回帰の記述方法
手順3.学習:勾配落下法で最適解を得る。
重みWの更新する。
手順4.評価:どの%があっていたか。
手順1の出力ベクトル、入力結果から。
17
3.ロジスティク回帰の記述方法
手順1.推論:現在のW,bから
の計算
引数x=
前回の輪講の変数宣言
softmax適用
18
3.ロジスティク回帰の記述方法
手順2.ロス関数値の計算:
Kullback-Leibler情報量法:
2つの確率分布間の「距離」
分布 P=Q なら , DKL=0 !!
公式は「Shannon情報量」と似ている
19
3.ロジスティク回帰の記述方法
手順2.ロス関数値の計算:Kullback-Leibler情報量法
引数output=手順1の出力ベクトル
引数y=MNISTに入った正しい結果のデータ
の計算 ???
∑と同様
E(X);期待値と同様
20
3.ロジスティク回帰の記述方法
手順3.学習:勾配落下法で最適解を得る。重みWの更
新する。
引数cost=手順2の出力ベクトル
引数global_step= Wの更新関数にバッチ番号を教える
勾配落下法のoperation(関数型)
Wの更新(自動、
global_stepは増分)
21
3.ロジスティク回帰の記述方法
手順4.評価:どの%があっていたか。
引数y=MNISTに入った正しい結果のデータ
tf.equal関数
output,yの最大値のindexが等しいかをチェック
Wの更新(自動、global_stepは増分)
22
3.ロジスティク回帰の記述方法
手順4.評価:どの%があっていたか。
Output[96] : 0.45 0.121 0.999 0.08 …......... 0.04
y [96]: 0 0 1 0 0
この結果、
Correct_prediction[96] = TRUE
tf.cast関数:Correct_prediction内の
TRUE/FALSEの比率
23
4.全体プログラムの枠
手順1.パラメター設定:学習速度β;バッチ内
の標本数;学習用バッチ数
手順2.Computational Graphの作成:
各バッチに利用されるinference()、loss()、
training()、evaluate()を「sess.run()」の実行で
適用できるように!!!
24
4.全体プログラムの枠
手順1.パラメター設定
手順2.Computational Graphの作成
手順3.バッチ毎のループの作成
手順4.標本毎のループの作成
25
4.全体プログラム
手順2.
Computational
Graphの作成:
全部はsess.run()
で適用
26
4.全体プログラム
手順2.Computational Graphの作成:
27
4.ロジスティク回帰の記述方法
手順3.バッチ毎のループの作成
28
4.ロジスティク回帰の記述方法
手順4.標本毎のループの作成
29
4.ロジスティク回帰の記述方法
手順4.標本毎のループの作成
30
5.MNISTのための複数層モデル
変更されない関数. loss()、training()、evaluate()、
変更される関数. inference()のみ
2つの隠れ層
256784 10256
31
5.MNISTのための複数層モデル
inference ():
層の概念を抽象化したlayer関数を導入
32
5.MNISTのための複数層モデル
50ページのlayer():前半の輪講でやったもの
33
5.MNISTのための複数層モデル
layer()
34
複数層の
Computational
Model
簡単!
35

Deep Learning Demonstration using Tensorflow (7th lecture)