Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

2018年01月27日 TensorFlowの計算グラフの理解

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 12 Anzeige

2018年01月27日 TensorFlowの計算グラフの理解

Herunterladen, um offline zu lesen

発表日:2018年01月27日
イベント名: AITCオープンラボ TensorFlow勉強会シリーズ2 成果報告会
イベントURL:http://aitc.jp/events/20180127-OpenLab/info.html
タイトル:TensorFlowの計算グラフの理解
発表者:吉田 裕之氏

TensorFlowによるニューラルネットワークの実装は、「計算グラフ」を構築
するコードの記述になります。
本発表では、TensorFlow利用の基礎知識として、計算グラフの考え方と仕組
みを解説します。

発表日:2018年01月27日
イベント名: AITCオープンラボ TensorFlow勉強会シリーズ2 成果報告会
イベントURL:http://aitc.jp/events/20180127-OpenLab/info.html
タイトル:TensorFlowの計算グラフの理解
発表者:吉田 裕之氏

TensorFlowによるニューラルネットワークの実装は、「計算グラフ」を構築
するコードの記述になります。
本発表では、TensorFlow利用の基礎知識として、計算グラフの考え方と仕組
みを解説します。

Anzeige
Anzeige

Weitere Verwandte Inhalte

Diashows für Sie (20)

Anzeige

Weitere von aitc_jp (20)

Aktuellste (20)

Anzeige

2018年01月27日 TensorFlowの計算グラフの理解

  1. 1. AITC TensorFlow勉強会シリーズ2 成果報告会 TensorFlowの 計算グラフの理解 2018年1月27日 富士通 吉田 TensorFlow, the TensorFlow logo and any related marks are trademarks of Google Inc. 1
  2. 2. TensorFlowの計算グラフ • TensorFlowでは、ニューラルネットワークを「計算グラフ」で表現 • 計算グラフ:「Tensorオブジェクト」をノードとする有向グラフ • Tensorオブジェクトの要素 • 名前、shape、dtype • Tensorの種類 • constant、operation、Variable、placeholder、他 • TensorとTensorを”演算”すると、実際に演算するのではなく、operation Tensorが作られる • 実際の演算は、Sessionを開始してから、runで実行する 2
  3. 3. 例1:constantとoperation import tensorflow as tf one = tf.constant(1, name="one") two = tf.constant(2, name="two") three = one + two print one print three with tf.Session() as sess: print sess.run([one, two, three]) // 出力結果 Tensor("one:0", shape=(), dtype=int32) Tensor("add:0", shape=(), dtype=int32) [1, 2, 3] 名前がone、値が1のconstant 名前がone、値が1のconstant :nは同じ名前に付ける通番 足し算するoperation、名前のデフォルトはadd Sessionを開始してrunする runで計算結果を得る 3
  4. 4. 例1:constantとoperation • 計算グラフ one two add • TensorBoardの表示 4
  5. 5. 例2:Variableとglobal_variables_initializer var5 = tf.Variable(5, name="var5") initializer = tf.global_variables_initializer() print var5 with tf.Session() as sess: initializer.run() print sess.run(var5) // 出力結果 <tf.Variable 'var5:0' shape=() dtype=int32_ref> 5 名前がvar5、初期値が5のVariable 全Variableの初期化を管理するoperation runで計算結果を得る 名前がvar5のVariable runする度に全Variableを初期化する 5
  6. 6. 例2:Variableとglobal_variables_initializer • 計算グラフ var5init • TensorBoardの表示 重なってるのは何かの偶然 6
  7. 7. 例3:Variableへの代入 assigned = tf.assign(var5,three+var5, name="assigned") print assigned mult = two * var5 with tf.Session() as sess: initializer.run() print sess.run(mult) print sess.run([assigned, mult]) print sess.run(mult) initializer.run() print sess.run(mult) // 出力結果 Tensor("assigned:0", shape=(), dtype=int32_ref) 10 // 2*5 [8, 10] // 3+5, 2*5 16 // 2*(3+5) 10 // 2*5 threeとvar5を足して、var5に代入するoperation • multだけrunするとassignは評価されない • run実行中は代入されない • run実行後に代入される • initializerで初期化される 7
  8. 8. 例3:Variableへの代入 • 計算グラフ var5init one two add add_1 • TensorBoardの表示 assignedmult 8
  9. 9. 例4:placeholderを使ったデータ入力 phold = tf.placeholder(tf.int32, name="phold") add3 = phold + three print phold with tf.Session() as sess: for n in range(0, 4): print sess.run(add3,{phold: n}) // 出力結果 Tensor("phold:0", dtype=int32) 3 4 5 6 7 名前がpholdのint32用のplaceholder 連想リストでplaceholderにデータを入れる 名前がpholdのint32用のplaceholder 9
  10. 10. 例4:placeholderを使ったデータ入力 • 計算グラフ one two add add_1 • TensorBoardの表示 phold 10
  11. 11. 例5:全結合(mnist) x = tf.placeholder(tf.float32, [None, 784], name="input") W = tf.Variable(tf.truncated_normal([784, 10], stddev=0.1), name="weight") b = tf.Variable(tf.zeros([10]), name="bias") y = tf.add(tf.matmul(x, W), b, name="logits") x * W + b バッチサイズ✕(28✕ 28)の入力 (28✕28)✕10の重みを正規分布で初期化 10個のバイアスを0で初期化 11
  12. 12. 例5:全結合(mnist) • 計算グラフ MatMul logits • TensorBoardの表示 input weight bias 12

×