Tensorflow2 0筆記32 卷積神經網路

2022-09-14 16:42:19 字數 2212 閱讀 8472

本部落格為tensorflow2.0學習筆記,感謝北京大學微電子學院曹建老師

目錄​ 對一小批資料在網路各層的輸出做標準化處理,其具體實現方式如圖 5-10 所示。(標準化:使資料符合 0 均值,1 為標準差的分布。)

​ batch normalization 將神經網路每層的輸入都調整到均值為 0,方差為 1 的標準正態分佈,其目的是解決神經網路中梯度消失的問題,如圖 5-11 所示。

bn 操作的另乙個重要步驟是縮放和偏移,值得注意的是,縮放因子 γ 以及偏移因子 β都是可訓練引數,其作用如圖 5-12 所示。

​ bn 操作通常位於卷積層之後,啟用層之前,在 tensorflow 框架中,通常使用 keras 中的tf.keras.layers.batchnormalization 函式來構建 bn 層。

​ 在呼叫此函式時,需要注意的乙個引數是 training,此引數只在呼叫時指定,在模型進行前向推理時產生作用,當 training = true 時,bn 操作採用當前 batch 的均值和標準差;當training = false 時,bn 操作採用滑動平均(running)的均值和標準差。在 tensorflow 中, 通常會指定 training = false,可以更好地反映模型在測試集上的真實效果。

​ 滑動平均(running)的解釋:滑動平均,即通過乙個個 batch 歷史的疊加,最終趨向資料集整體分布的過程,在測試集上進行推理時,滑動平均的引數也就是最終儲存的引數。

​ 此外,tensorflow 中的 bn 函式其實還有很多引數,其中比較常用的是 momentum,即動量引數,與 sgd 優化器中的動量引數含義類似但略有區別,具體作用為滑動平均 running = momentum * running + (1 – momentum) * batch,一般設定乙個比較大的值,在tensorflow 框架中預設為 0.99。

​ 池化的作用是減少特徵數量(降維)。最大值池化可提取紋理,均值池化可保留背景特徵,如圖 5-13 所示。

​ 在tensorflow 框架下,可以利用 keras 來構建池化層,使用的是 tf.keras.layers.maxpool2d 函 數 和tf.keras.layers.**eragepooling2d 函 數 , 具 體 的 使 用 方 法 如 下 :

tf.keras.layers.maxpool2d(

pool_size = 池化核尺寸, strides = 池化步長,

padding = 『same』 or 『valid』

)tf.keras.layers.**eragepooling2d(

pool_size = 池化核尺寸,

strides = 池化步長,

​ 在 tensorflow 框架下,利用 tf.keras.layers.dropout 函式構建 dropout 層,引數為捨棄的概率(大於 0 小於 1)。

利用上述知識,就可以構建出基本的卷積神經網路(cnn)了,其核心思路為在 cnn中利用卷積核(kernel)提取特徵後,送入全連線網路。
​ 一般包括上述的卷積層、bn 層、啟用函式、池化層以及全連線層,如圖 5-15 所示。

​ 在此基礎上,可以總結出在 tensorflow 框架下,利用 keras 來搭建神經網路的「八股」套路,在主幹的基礎上,還可以新增其他內容,來完善神經網路的功能,如利用自己的和標籤檔案來自制資料集;通過旋轉、縮放、平移等操作對資料集進行資料增強;儲存模型檔案進行斷點續訓;提取訓練後得到的模型引數以及準確率曲線,實現視覺化等。

Tensorflow2 0筆記 自動求梯度(導數)

對於給定函式 y w aw 2 bw c 數學求導得 dy dw 2aw b 那麼,a,b,c,w 1,2,3,4 處的導數,dy dw 2 1 4 2 10 而在tensorflow2.0中,梯度可以自動求取。具體 如下 import tensorflow as tf a tf.constant ...

北京大學Tensorflow2 0筆記

目前很少用這個啟用函式,因為在深度神經網路中更新引數時需要從輸出層到輸入層逐層進行鏈式求導,而sigmoid函式倒數值為0 0.25之間,鏈式求導需要多層導數連續相乘,會出現多個0 0.25之間的連續相乘,結果趨於零,產生梯度消失,無法進行引數更新 使用中應避免負數特徵進入relu函式,否則會導致神...

TensorFlow2 0入門筆記 3

tensorflow2.0求梯度預設是eager模式,每行 順序執行,沒有了構建圖的過程 也取消了control dependency的用法 要乙個上下文管理器 context manager 來連線需要計算梯度的函式和變數,方便求解同時也提公升效率。from future import absol...