TensorFlow筆記-03-張量,計算圖,會話

肖朋偉發表於2018-09-08

TensorFlow筆記-03-張量,計算圖,會話

  • 搭建你的第一個神經網路,總結搭建八股
  • 基於TensorFlow的NN:用張量表示資料,用計算圖搭建神經網路,用會話執行計算圖,優化線上的權重(引數),得到模型
  • 張量(tensor):多維陣列(列表)
  • 階:表示張量的維數

·· 維 數 ···· 階 ········· 名 字 ········· 例 子 ············
·· 0-D ······ 0 ····· 標量 scalar ···· s=1 2 3
·· 1-D ······ 0 ····· 向量 vector ···· s=[1,2,3]
·· 2-D ······ 0 ····· 矩陣 matrix ···· s=[ [1,2,3], [4,5,6],[7,8,9] ]
·· n-D ······ 0 ····· 標量 tensor ···· s=[[[[[....n個

  • 張量可以表示0階到n階的陣列(列表)
  • **資料型別:Tensorflow 的資料型別有 tf.float32,tf.int32 等

案例:兩個張量的加法

# 兩個張量的加法
import  tensorflow as tf

a = tf.constant([1.0, 2.0])
b = tf.constant([3.0, 4.0])

result = a+b
print(result)

執行結果:

這裡寫圖片描述

  • 結果分析:
    這裡寫圖片描述

計算圖

  • 計算圖(Graph):搭建神經網路的計算過程,是承載一個或多個計算機結點的一張圖,只搭建網路,不運算
  • 這裡要提到另一個概念:神經元 (不是很好理解,慢慢就懂了)
  • 神經網路的基本模型的神經元,神經元的基本模型其實就是數學中的乘加運算
  • 我們搭建如下計算圖:
    TensorFlow筆記-03-張量,計算圖,會話
  • X1,X2 表示輸入,W1,W2分別是X1到X2的權重
  • 該計算圖表示:y = X1W1 + X2W2
    (不能理解就記住,該計算圖表示上面的這種含義)

  • 程式碼tf03檔案:https://xpwi.github.io/py/TensorFlow/tf03.py
# 兩個張量的加法
import  tensorflow as tf

# x 是一個一行兩列的張量
x = tf.constant([[1.0, 2.0]])
# x 是一個兩行一列的張量
w = tf.constant([[3.0], [4.0]])

'''
構建計算圖,但不運算
y = XW
 = x1*w1 + x2*w2
'''
# 矩陣相乘
y = tf.matmul(x, w)
print(y)

執行結果

Tensor("MatMul:0", shape=(1, 1), dtype=float32)

會話

  • 會話(Session):執行計算圖中的結點運算
  • 我們用 with 結構實現,語法如下:

    with tf.Session() as sess :
    print(sess.run(y))

  • 意思是:將 tf.Session 記為 sess,呼叫 tf.Session 下的 run 方法執行 y,y 也就是上面的計算圖,也就是那個表示式

  • 程式碼04檔案:https://xpwi.github.io/py/TensorFlow/tf04.py
# 兩個張量的加法
import  tensorflow as tf

# x 是一個一行兩列的張量
x = tf.constant([[1.0, 2.0]])
# x 是一個兩行一列的張量
w = tf.constant([[3.0], [4.0]])

'''
構建計算圖,但不運算
y = XW
 = x1*w1 + x2*w2
'''
# 矩陣相乘
y = tf.matmul(x, w)
print(y)

# 會話:執行節點運算
with tf.Session() as sess:
    print(sess.run(y))

執行結果

  • y = 1.03.0 + 2.04.0 = 11
    這裡寫圖片描述
  • 我們可以看到列印出了運算結果

更多文章:Tensorflow 筆記


  • 本筆記不允許任何個人和組織轉載

相關文章