【深度学习】全连接层 (Full Connection,FC)
生活随笔
收集整理的這篇文章主要介紹了
【深度学习】全连接层 (Full Connection,FC)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Introduce
- 全連接層也是一種卷積層。
- 它的參數基本和卷積層的參數一樣,只是它的卷積核大小和原數據大小一致。
- 起到將學到的“分布式特征表示”映射到樣本標記空間的作用。
- 用 global average pooling 取代 FC,已經成為了大勢所趨。
Defect
摘自 全連接層的作用是什么:
目前由于全連接層參數冗余(僅全連接層參數就可占整個網絡參數80%左右),近期一些性能優異的網絡模型如ResNet和GoogLeNet等均用全局平均池化(global average pooling,GAP)取代FC來融合學到的深度特征,最后仍用softmax等損失函數作為網絡目標函數來指導學習過程。需要指出的是,用GAP替代FC的網絡通常有較好的預測性能。
Note:
- 那么為什么 全連接層參數冗余(僅全連接層參數就可占整個網絡參數80%左右) 呢?
因為全連接層的卷積核橫截面做得和 輸入的 feature map 一樣大。而常規卷積層的卷積核橫截面只有一個小滑窗那么大。很明顯,二者的參數數量級根本就不在一個level上。
Inner Product
在 Caffe 中,全連接層 的 type (層類型) 為 Inner Product 。
輸出一個簡單向量(把輸入數據blobs的width和height全變為1)。
Caffe學習系列(5):其它常用層及參數:
layer {name: "ip1"type: "InnerProduct"bottom: "pool2"top: "ip1"param {lr_mult: 1}param {lr_mult: 2}inner_product_param {num_output: 500weight_filler {type: "xavier"}bias_filler {type: "constant"}} }- lr_mult: 學習率的系數,最終的學習率是這個數乘以solver.prototxt配置文件中的base_lr。如果有兩個lr_mult, 則第一個表示權值的學習率,第二個表示偏置項的學習率。一般偏置項的學習率是權值學習率的兩倍。
必須設置的參數:
- num_output: 過濾器(filfter)的個數
其它參數:
- weight_filler: 權值初始化。 默認為“constant",值全為0,很多時候我們用"xavier"算法來進行初始化,也可以設置為”gaussian"
- bias_filler: 偏置項的初始化。一般設置為"constant",值全為0。
- bias_term: 是否開啟偏置項,默認為true, 開啟
Note:
- slim.fully_connected 無法顯示最終結果為1X1,而更像是降維,所以必須要先reshape到一個 [batch_size, -1] 的尺寸:x = tf.reshape(x, [input_shape[0], -1]) _pred = slim.fully_connected(x, num_outputs=output_num, activation_fn=None, scope='fc_final')
總結
以上是生活随笔為你收集整理的【深度学习】全连接层 (Full Connection,FC)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 'org.apache.ibatis.s
- 下一篇: 【资损】系统迭代过程中的兼容性设计