網站首頁 編程語言 正文
引言
所有的層都具有的參數,如name, type, bottom, top和transform_param請參看我的前一篇文章:Caffe卷積神經網絡數據層及參數
本文只講解視覺層(Vision Layers)的參數,視覺層包括Convolution, Pooling,Local Response Normalization (LRN), im2col等層。
1、Convolution層:
就是卷積層,是卷積神經網絡(CNN)的核心層。
層類型:Convolution
lr_mult: 學習率的系數,最終的學習率是這個數乘以solver.prototxt配置文件中的base_lr。
如果有兩個lr_mult, 則第一個表示權值的學習率,第二個表示偏置項的學習率。一般偏置項的學習率是權值學習率的兩倍。
在后面的convolution_param中,我們可以設定卷積層的特有參數。
必須設置的參數:
- num_output: 卷積核(filter)的個數
- kernel_size: 卷積核的大小。如果卷積核的長和寬不等,需要用kernel_h和kernel_w分別設定
其它參數:
- stride: 卷積核的步長,默認為1。也可以用stride_h和stride_w來設置。
- pad: 擴充邊緣,默認為0,不擴充。 擴充的時候是左右、上下對稱的,比如卷積核的大小為5*5,那么pad設置為2,則四個邊緣都擴充2個像素,即寬度和高度都擴充了4個像素,這樣卷積運算之后的特征圖就不會變小。也可以通過pad_h和pad_w來分別設定。
- weight_filler: 權值初始化。 默認為“constant",值全為0,很多時候我們用"xavier"算法來進行初始化,也可以設置為”gaussian"
- bias_filler: 偏置項的初始化。一般設置為"constant",值全為0。
- bias_term: 是否開啟偏置項,默認為true, 開啟
group: 分組,默認為1組。如果大于1,我們限制卷積的連接操作在一個子集內。如果我們根據圖像的通道來分組,那么第i個輸出分組只能與第i個輸入分組進行連接。
如果設置stride為1,前后兩次卷積部分存在重疊。如果設置pad=(kernel_size-1)/2,則運算后,寬度和高度不變。
示例:
layer {
name: "conv1"
type: "Convolution"
bottom: "data"
top: "conv1"
param {
lr_mult: 1
}
param {
lr_mult: 2
}
convolution_param {
num_output: 20
kernel_size: 5
stride: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
2、Pooling層
也叫池化層,為了減少運算量和數據維度而設置的一種層。
層類型:Pooling
必須設置的參數:
kernel_size: 池化的核大小。也可以用kernel_h和kernel_w分別設定。
其它參數:
- pool: 池化方法,默認為MAX。目前可用的方法有MAX, AVE, 或STOCHASTIC
- pad: 和卷積層的pad的一樣,進行邊緣擴充。默認為0
- stride: 池化的步長,默認為1。一般我們設置為2,即不重疊。也可以用stride_h和stride_w來設置。
示例:
layer {
name: "pool1"
type: "Pooling"
bottom: "conv1"
top: "pool1"
pooling_param {
pool: MAX
kernel_size: 3
stride: 2
}
}
pooling層的運算方法基本是和卷積層是一樣的。
如果設置stride為2,前后兩次卷積部分不重疊。100*100的特征圖池化后,變成50*50.
3、Local Response Normalization (LRN)層
此層是對一個輸入的局部區域進行歸一化,達到“側抑制”的效果。可去搜索AlexNet或GoogLenet,里面就用到了這個功能
層類型:LRN
參數:全部為可選,沒有必須
- local_size: 默認為5。如果是跨通道LRN,則表示求和的通道數;如果是在通道內LRN,則表示求和的正方形區域長度。
- alpha: 默認為1,歸一化公式中的參數。
- beta: 默認為5,歸一化公式中的參數。
- norm_region: 默認為ACROSS_CHANNELS。有兩個選擇,ACROSS_CHANNELS表示在相鄰的通道間求和歸一化。WITHIN_CHANNEL表示在一個通道內部特定的區域內進行求和歸一化。與前面的local_size參數對應。
歸一化公式:對于每一個輸入, 去除以
得到歸一化后的輸出
示例:
layers {
name: "norm1"
type: LRN
bottom: "pool1"
top: "norm1"
lrn_param {
local_size: 5
alpha: 0.0001
beta: 0.75
}
}
4、im2col層
如果對matlab比較熟悉的話,就應該知道im2col是什么意思。它先將一個大矩陣,重疊地劃分為多個子矩陣,對每個子矩陣序列化成向量,最后得到另外一個矩陣。
看一看圖就知道了:
在caffe中,卷積運算就是先對數據進行im2col操作,再進行內積運算(inner product)。這樣做,比原始的卷積操作速度更快。
看看兩種卷積操作的異同:
原文鏈接:https://www.cnblogs.com/denny402/p/5071126.html
相關推薦
- 2022-09-15 Python淺析迭代器Iterator的使用_python
- 2022-12-07 React?Context?變遷及背后實現原理詳解_React
- 2022-06-22 golang?API請求隊列的實現_Golang
- 2022-03-26 .NET?6中使用DateOnly和TimeOnly類型_ASP.NET
- 2022-10-21 Rust?入門之函數和注釋實例詳解_相關技巧
- 2022-03-26 asp.net?core?中優雅的進行響應包裝的實現方法_實用技巧
- 2022-12-15 C++?boost?scoped_ptr智能指針詳解_C 語言
- 2023-07-03 Python實現曲線的肘部點檢測詳解_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支