機器學習筆記22 神經網路 卷積神經網路

2021-08-28 11:54:06 字數 4056 閱讀 4995

【參考資料】

《面向機器智慧型的tensorflow實踐》

keras/example – mnist_cnn.py

keras中文文件

常用層卷積層

卷積理解就是之前影象處理裡用作檢測邊緣、檢測角點的運算元,例如:

輸入:[12

34]\begin 1 & 2 \\ 3 & 4 \end

[13​24

​]核:[2]

\begin 2 \end

[2​]

卷積:[1∗

22∗2

3∗24

∗2]\begin 1*2 & 2*2 \\ 3*2 & 4*2 \end

[1∗23∗

2​2∗

24∗2

​]輸出:[24

68]\begin 2 & 4 \\ 6 & 8 \end

[26​48

​]卷積處理時需要考慮(在tensorflow引數中)

跨度: 即不是每個影象區域都要進行卷積,可以跨過一些畫素

邊界填充:當卷積核(例如3*3的sobel卷積核)滑動到邊界時,考慮用0填充

*備註: 卷積作為整個網路的核心,理解是模擬生物學中的特徵,即我們的視覺神經只是做最簡單的邊緣檢測,然後在一層層的對接後,將簡單的邊界線抽象出複雜的形狀等資訊。 *

# 32 為輸出維度

# kernel_size為卷積核的大小,此時核的定義由

# kernel_initializer初始化,預設是glorot_uniform,一種基於均勻分布的隨機取值

# activation 為該卷積輸出的啟用函式

model.add(conv2d(32, kernel_size=(3, 3),

activation='relu',

input_shape=input_shape))

池化層

池化層層通過對輸入進行採用,比如在3*3的區域內取最大值,目的在於減少輸入尺寸、降低過擬合等。

#(2,2)表示在x、y軸上都使得輸出變為原圖的一半,進行最大值池化

model.add(maxpooling2d(pool_size=(2, 2)))

dropout層

為輸入資料施加dropout。dropout將在訓練過程中每次更新引數時按一定概率(rate)隨機斷開輸入神經元,dropout層用於防止過擬合。

# 0.25是要斷開的神經元比例

model.add(dropout(0.25))

flatten層

flatten層用來將輸入「壓平」,即把多維的輸入一維化,常用在從卷積層到全連線層的過渡。flatten不影響batch的大小。

dense層(全連線層)

# 128 表示該層的輸出維度

model.add(dense(128, activation='relu'))

備註:理解在全連線層之前的卷積和池化層可以理解為特徵的選取,即從原始空間對映到乙個新的特徵空間,但這個特徵真正意義上的分類是在全連線做的。

卷積神經網路程式(keras/mnist_cnn.py)

mnist是手寫數字識別庫

卷積神經網路筆記

一 卷積神經網路基礎 cnn是一種空間上共享引數的神經網路,它通過正向和反向傳播,自己學習識別物體。它可能有幾層網路構成,第一層是抽象層次的最底層,cnn一般把中的較小的部分識別成簡單的形狀,下一層將會上公升到更高的抽象層次,一般會識別更複雜的概念,以此類推,直至識別整個物體。cnn的學習方式 層次...

卷積神經網路筆記

卷積神經網路依舊是乙個可導的評分函式,該函式輸入為原始影象畫素,輸出是不同類別的評分。並假設輸入資料是影象,基於該假設,向結構中新增一些特有性質。常規神經網路的輸入是乙個向量,對大尺寸影象效果不好,效率低下,大量引數導致網路過擬合。神經元的各層三維排列 寬度,高度和深度 深度是指啟用函式資料體的第3...

學習筆記 卷積神經網路 一文讀懂卷積神經網路

一文讀懂卷積神經網路 原文 本文為 一文讀懂卷積神經網路 讀書筆記 圖中公式 對輸入項x 進行加權求和 最後加上偏移量 在影象處理方面相當於 影象矩陣a 與 權值矩陣b 卷積核 進行 aij bij 偏移量 得到乙個數值 2 卷積神經網路 為什麼要進行卷積 如果 畫素大小是1000 1000,隱含層...