網站首頁 編程語言 正文
keras中卷積層Conv2D的學習
關于卷積的具體操作不細講,本文只是自己太懶了不想記手寫筆記。
由于自己接觸到的都是圖像
處理相關的工作,因此,在這里只介紹2D卷積。
keras.layers.convolutional.Conv2D(filters,kernel_size,strides(1,1),? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? padding='valid', ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? data_format=None, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dilation_rate=(1,1), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? activation=None, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? use_bias=True, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? kernel_initializer='glorot_uniform', ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? bias_initializer='zeros', ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? kernel_regularizer=None, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? bias_regularizer=None, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? activity_regularizer=None, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? kernel_constraint=None, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? bias_constraint=None)
此操作將二維向量進行卷積,當使用該層作為第一層時,應提供input_shape參數。
參數
-
filters
:卷積核的數目(即輸出的維度)。 -
kernel_size
:單個整數或由兩個整數構成的list/tuple,卷積核的寬度和長度。如為單個整數,則表示在各個空間維度的相同長度。 -
strides
:單個整數或由兩個整數構成的list/tuple,為卷積的步長。如為單個整數,則表示在各個空間維度的相同步長。任何不為1的strides均與任何不為1的dilation_rata均不兼容。 -
padding
:補0策略,為“valid”, “same”。“valid”代表只進行有效的卷積,即對邊界數據不處理。“same”代表保留邊界處的卷積結果,通常會導致輸出shape與輸入shape相同。 -
activation
:激活函數,為預定義的激活函數名(參考激活函數),或逐元素(element-wise)的Theano函數。如果不指定該參數,將不會使用任何激活函數(即使用線性激活函數:a(x)=x)。 -
dilation_rate
:單個整數或由兩個個整數構成的list/tuple,指定dilated convolution中的膨脹比例。任何不為1的dilation_rata均與任何不為1的strides均不兼容。 -
data_format
:字符串,“channels_first”或“channels_last”之一,代表圖像的通道維的位置。該參數是Keras 1.x中的image_dim_ordering,“channels_last”對應原本的“tf”,“channels_first”對應原本的“th”。以128x128的RGB圖像為例,“channels_first”應將數據組織為(3,128,128),而“channels_last”應將數據組織為(128,128,3)。該參數的默認值是~/.keras/keras.json中設置的值,若從未設置過,則為“channels_last”。 -
use_bias
:布爾值,是否使用偏置項。 -
kernel_initializer
:權值初始化方法,為預定義初始化方法名的字符串,或用于初始化權重的初始化器。 -
bias_initializer
:權值初始化方法,為預定義初始化方法名的字符串,或用于初始化權重的初始化器。 -
kernel_regularizer
:施加在權重上的正則項,為Regularizer對象。 -
bias_regularizer
:施加在偏置向量上的正則項,為Regularizer對象。 -
activity_regularizer
:施加在輸出上的正則項,為Regularizer對象。 -
kernel_constraints
:施加在權重上的約束項,為Constraints對象。 -
bias_constraints
:施加在偏置上的約束項,為Constraints對象。
keras中conv2d,conv2dTranspose的Padding詳解
conv2d和conv2dTranspose屬于最常用的層,但在keras的實現中關于padding的部分有點模糊,周末趁著空閑做了一些嘗試,來實驗padding的valid和same參數在實際過程中如何操作的。
conv2D演示代碼
conv2D部分
v_input = np.ones([1,5,5,1]) kernel = np.ones([3,3]) stride = 1 model = Sequential() model.add(Conv2D(1, kernel_size=(3, 3), activation='relu', padding="valid" , # "same" strides = 1, # dilation_rate = 1, kernel_initializer = keras.initializers.Ones(), input_shape=v_input.shape[1:]))
其中stride可以嘗試多組測試
padding在valid 和 same 間切換測試
Conv2d演示結論
padding 為valid則不進行填充, 根據stride的滑動大小來做平移, 則:
output_shape = ceil( (input_shape - (kernel_size - 1)) / stride )
如果是same模式則 會進行左右上下的補齊, 其中左,上依次補齊 flood (kernel_size -1 ) / 2 , 右下補齊ceil (( kernel_size - 1) /2 ) ,補齊后進行的操作就是類似valid下的滑動卷積
output_shape = ceil (input_shape / stride)
-
ceil
表示上取整 -
flood
表示下取整
CONV2Dtranspose演示代碼
v_input = np.ones([1,5,5,1]) kernel = np.ones([3,3]) stride = 1 model = Sequential() model.add(Conv2DTranspose(1, kernel_size=(3, 3), activation='relu', padding="valid" , # "same" strides = 1, # dilation_rate = 1, kernel_initializer = keras.initializers.Ones(), input_shape=v_input.shape[1:]))
如果padding的設置為valid則,保持最小相交的原則上下左右均填充kernel_size大小,如果stride設置為非1,起實際的作用和dilation_rate一樣均是在矩陣中進行填充(實際滑動是永遠都是1) 具體填充出來的矩陣大小是 (input_size -1) * stride + 1 + 2 * (kernel_size - 1)
之后就是按照這個矩陣做著類似conv2d valid的卷積 則:
output_shape = (input_size -1) * stride + 1 + 2 * (kernel_size - 1) - (kernel_size -1) = (input_size - 1) * stride + kernel_size
如果padding為same的話則output_shape = input_shape * stride
其中原始矩陣左上padding = ceil (( kernel_size ) /2 ) 右下補齊 flood (( kernel_size ) /2 ) 這里conv2d
總結
原文鏈接:https://blog.csdn.net/qq_42216010/article/details/99446039
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2023-04-01 Android自定義View事件分發流程詳解_Android
- 2022-02-17 uni-app的 tabBar添加陰影
- 2022-11-28 詳解Rust中的變量與常量_Rust語言
- 2022-05-11 使用git命令上傳代碼_其它綜合
- 2022-07-22 用C語言根據天數輸出對應的年、月、日
- 2022-04-16 Python繪制時鐘的示例代碼_python
- 2022-09-14 jquery實現計算器小功能_jquery
- 2022-10-26 如何查看git分支從哪個源分支拉的_相關技巧
- 欄目分類
-
- 最近更新
-
- 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同步修改后的遠程分支