Tensorflow筆記—2—張量,計算圖,會話

一.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))  #執行計算圖的節點運算

     

運行結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章