一.TensorFlow的整體結構
- 搭建你的第一個神經網絡,總結搭建八股
- 基於TensorFlow的NN:用張量表示數據,用計算圖搭建神經網絡,用會話執行計算圖,優化線上的權重(參數),得到模型
- 張量(tensor):多維數組(列表)
- 階:表示張量的維數,左邊幾個括號就是幾階
·· 維 數 ···· 階 ········· 名 字 ········· 例 子 ············
·· 0-D ······ 0 ····· 標量 scalar ···· s=1 2 3
·· 1-D ······ 1 ····· 向量 vector ···· s=[1,2,3]
·· 2-D ······ 2 ····· 矩陣 matrix ···· s=[ [1,2,3], [4,5,6],[7,8,9] ]
·· n-D ······ n ····· 標量 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):搭建神經網絡的計算過程,是承載一個或多個計算機結點的一張圖,只搭建網絡,不運算
- 這裏要提到另一個概念:神經元 (模仿人體神經中的神經元傳輸電脈衝)
- 神經網絡的基本模型的神經元,神經元的基本模型其實就是數學中的乘加運算
- 我們搭建如下計算圖:
- X1,X2 表示輸入,W1,W2分別是X1到X2的權重
- 該計算圖表示:y = X1W1 + X2W2
具體代碼:
import tensorflow as tf
x = tf.constant([[1.0, 2.0]]) #1*2,一維張量tensor
w = tf.constant([[3.0], [4.0]]) #2*1,二維張量tensor
'''
構建計算圖,但不運算
y = XW
= x1*w1 + x2*w2
'''
# 矩陣相乘
y = tf.matmul(x, w) #1*1
print(y) #打印出來的結果只表示搭建神經網絡的計算過程
運行結果
三.會話
- 會話(Session):執行計算圖中的結點運算
-
用 with 結構實現,語法如下:
with tf.Session() as sess :
print(sess.run(y)) -
意思是:將 tf.Session 記爲 sess,調用 tf.Session 下的 run 方法執行 y,y 也就是上面的計算圖,也就是計算表達式
具體代碼:
-
import tensorflow as tf x = tf.constant([[1.0, 2.0]]) #1*2,一維張量tensor w = tf.constant([[3.0], [4.0]]) #2*1,二維張量tensor y = tf.matmul(x, w) #1*1 with tf.Session() as sess: print(sess.run(y)) #執行計算圖的節點運算