iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 14
0

運作

我們先來看 Tensorflow 的運作流程:

  • Python 前端透過 Tensorflow 核心執行系統把產生的 DAG 圖分配到不同的裝置,增加執行效率。

  • Session 連結 Python 程式和 C++ Runtime ,並讓 Python 程式存取本機及遠端機器。

有向無環圖 DAG

全名爲 Directed acyclic graph ,是 Tensorflow 最重要的一個部分,負責把模型的細節生成出來,組成包含以下的基本元素

基本元素

  • node
    數學計算
  • edges
    資料的陣列,也就是 tensor

優勢

可移植性

  1. 語言
  2. 硬體

使用 Python 建立的模型可以轉換到 C++ 上做 低延遲預測,又或是模型可以在不同硬體(如電腦與手機)做轉換,這些都是 Tensorflow 在可移植性上面的優勢。

彈性

DAG 圖可以被產生、編譯、遠端執行、塞到很多裝置中。

最佳化

假設有兩個 node 都是 add,Tensorflow 會整合成同一個 node,這樣可以增加程式碼的效能。

圖會建立快取,因此可以執行多次。

Session

爲張量 z 賦值有兩種方式:

with tf.Session() as sess:
	print(sess.run(z))
with tf.Session() as sess:
	print(z.eval())

輸出結果都是相同的

Tensor

Slicing

x[列,行]

x[:,1] : 代表取得所有的列,第一行。

Reshape

tf.reshape():tf.reshape(x,[3,2])

把3列2欄的張量重新排列成2列3欄的張量

tf.get_variable()

Variable

  1. 透過 get_variabl e建立變數
  2. 透過參數初始化變數
  3. 把變數當做張量操作來建立有向無環圖
  4. 在 Session 內初始化變數
  5. 賦值任何張量

Placeholder

tf.placeholder:概念像是 c 語言的宣告式,宣告完不用馬上賦值,等到執行期間再說。

模式

惰性求值(Lazy Evaluation)

  1. 先建立有向無環圖(不會計算 c 的值)
c = tf.add(a,b)
  1. 進入 Session (透過 run 函式進行計算)
session = tf.Session()
numpy_c = session.run(c, feed_dict=....)

Eager mode(急需 Debug 時使用的模式)

流程

  1. import tf.eager
  2. call enable_eager_execution() 確認使用 eager 模式
  3. 做運算,並馬上顯示結果給你參考

上一篇
[Day 13] Docker 莫名奇妙的行爲 -DNAT
下一篇
[Day 15] 你會用 Vim 嗎? Vim 沒有那麼難!-指令觀念篇
系列文
30 天不間斷-資工隨筆大雜燴30

尚未有邦友留言

立即登入留言