欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于keras中卷積層Conv2D的學(xué)習(xí)記錄

 更新時(shí)間:2023年02月21日 16:53:50   作者:擺爛的CV工程師  
這篇文章主要介紹了關(guān)于keras中卷積層Conv2D的學(xué)習(xí)記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

keras中卷積層Conv2D的學(xué)習(xí)

關(guān)于卷積的具體操作不細(xì)講,本文只是自己太懶了不想記手寫筆記。

由于自己接觸到的都是圖像

處理相關(guān)的工作,因此,在這里只介紹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)

此操作將二維向量進(jìn)行卷積,當(dāng)使用該層作為第一層時(shí),應(yīng)提供input_shape參數(shù)。

參數(shù)

  • filters:卷積核的數(shù)目(即輸出的維度)。
  • kernel_size:?jiǎn)蝹€(gè)整數(shù)或由兩個(gè)整數(shù)構(gòu)成的list/tuple,卷積核的寬度和長度。如為單個(gè)整數(shù),則表示在各個(gè)空間維度的相同長度。
  • strides:?jiǎn)蝹€(gè)整數(shù)或由兩個(gè)整數(shù)構(gòu)成的list/tuple,為卷積的步長。如為單個(gè)整數(shù),則表示在各個(gè)空間維度的相同步長。任何不為1的strides均與任何不為1的dilation_rata均不兼容。
  • padding:補(bǔ)0策略,為“valid”, “same”。“valid”代表只進(jìn)行有效的卷積,即對(duì)邊界數(shù)據(jù)不處理。“same”代表保留邊界處的卷積結(jié)果,通常會(huì)導(dǎo)致輸出shape與輸入shape相同。
  • activation:激活函數(shù),為預(yù)定義的激活函數(shù)名(參考激活函數(shù)),或逐元素(element-wise)的Theano函數(shù)。如果不指定該參數(shù),將不會(huì)使用任何激活函數(shù)(即使用線性激活函數(shù):a(x)=x)。
  • dilation_rate:?jiǎn)蝹€(gè)整數(shù)或由兩個(gè)個(gè)整數(shù)構(gòu)成的list/tuple,指定dilated convolution中的膨脹比例。任何不為1的dilation_rata均與任何不為1的strides均不兼容。
  • data_format:字符串,“channels_first”或“channels_last”之一,代表圖像的通道維的位置。該參數(shù)是Keras 1.x中的image_dim_ordering,“channels_last”對(duì)應(yīng)原本的“tf”,“channels_first”對(duì)應(yīng)原本的“th”。以128x128的RGB圖像為例,“channels_first”應(yīng)將數(shù)據(jù)組織為(3,128,128),而“channels_last”應(yīng)將數(shù)據(jù)組織為(128,128,3)。該參數(shù)的默認(rèn)值是~/.keras/keras.json中設(shè)置的值,若從未設(shè)置過,則為“channels_last”。
  • use_bias:布爾值,是否使用偏置項(xiàng)。
  • kernel_initializer:權(quán)值初始化方法,為預(yù)定義初始化方法名的字符串,或用于初始化權(quán)重的初始化器。
  • bias_initializer:權(quán)值初始化方法,為預(yù)定義初始化方法名的字符串,或用于初始化權(quán)重的初始化器。
  • kernel_regularizer:施加在權(quán)重上的正則項(xiàng),為Regularizer對(duì)象。
  • bias_regularizer:施加在偏置向量上的正則項(xiàng),為Regularizer對(duì)象。
  • activity_regularizer:施加在輸出上的正則項(xiàng),為Regularizer對(duì)象。
  • kernel_constraints:施加在權(quán)重上的約束項(xiàng),為Constraints對(duì)象。
  • bias_constraints:施加在偏置上的約束項(xiàng),為Constraints對(duì)象。

keras中conv2d,conv2dTranspose的Padding詳解

conv2d和conv2dTranspose屬于最常用的層,但在keras的實(shí)現(xiàn)中關(guān)于padding的部分有點(diǎn)模糊,周末趁著空閑做了一些嘗試,來實(shí)驗(yàn)padding的valid和same參數(shù)在實(shí)際過程中如何操作的。

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可以嘗試多組測(cè)試

padding在valid 和 same 間切換測(cè)試

Conv2d演示結(jié)論

padding 為valid則不進(jìn)行填充, 根據(jù)stride的滑動(dòng)大小來做平移, 則:

output_shape = ceil( (input_shape - (kernel_size - 1)) / stride )

如果是same模式則 會(huì)進(jìn)行左右上下的補(bǔ)齊, 其中左,上依次補(bǔ)齊 flood (kernel_size -1 ) / 2 , 右下補(bǔ)齊ceil (( kernel_size - 1) /2 ) ,補(bǔ)齊后進(jìn)行的操作就是類似valid下的滑動(dòng)卷積

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的設(shè)置為valid則,保持最小相交的原則上下左右均填充kernel_size大小,如果stride設(shè)置為非1,起實(shí)際的作用和dilation_rate一樣均是在矩陣中進(jìn)行填充(實(shí)際滑動(dòng)是永遠(yuǎn)都是1) 具體填充出來的矩陣大小是 (input_size -1) * stride + 1 + 2 * (kernel_size - 1)

之后就是按照這個(gè)矩陣做著類似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 )  右下補(bǔ)齊 flood (( kernel_size ) /2 )  這里conv2d

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實(shí)現(xiàn)破解網(wǎng)站登錄密碼(帶token驗(yàn)證)

    Python實(shí)現(xiàn)破解網(wǎng)站登錄密碼(帶token驗(yàn)證)

    這篇文章主要為大家介紹一個(gè)Python暴力破解網(wǎng)站登錄密碼腳本(帶token驗(yàn)證),文中的過程講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,感興趣的可以學(xué)習(xí)一下
    2022-02-02
  • 用Python快速讀取Excel數(shù)據(jù)

    用Python快速讀取Excel數(shù)據(jù)

    嘿,想學(xué)會(huì)用Python快速讀取Excel數(shù)據(jù)嗎?不用擔(dān)心,這個(gè)指南將帶你輕松掌握這項(xiàng)技能,讓我們一起開始吧!
    2023-12-12
  • 如何利用pygame實(shí)現(xiàn)簡(jiǎn)單的五子棋游戲

    如何利用pygame實(shí)現(xiàn)簡(jiǎn)單的五子棋游戲

    這篇文章主要給大家介紹了關(guān)于如何利用pygame實(shí)現(xiàn)簡(jiǎn)單的五子棋游戲的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用pygame具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 詳解Python中的內(nèi)置常量的使用

    詳解Python中的內(nèi)置常量的使用

    Python作為一種功能強(qiáng)大的編程語言,提供了豐富的內(nèi)置常量來簡(jiǎn)化編程過程,本文將深入探討Python中的內(nèi)置常量,并提供豐富的示例代碼來演示其用法,希望對(duì)大家有所幫助
    2024-03-03
  • OpenCV 圖像梯度的實(shí)現(xiàn)方法

    OpenCV 圖像梯度的實(shí)現(xiàn)方法

    梯度簡(jiǎn)單來說就是求導(dǎo)。本文主要介紹了OpenCV 圖像梯度的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Python命令行庫click的具體使用

    Python命令行庫click的具體使用

    本文主要介紹了Python命令行庫click的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Python邊緣檢測(cè)之prewitt,sobel和laplace算子詳解

    Python邊緣檢測(cè)之prewitt,sobel和laplace算子詳解

    這篇文章主要為大家詳細(xì)介紹了Python邊緣檢測(cè)中prewitt、sobel和laplace算子的使用方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-04-04
  • 對(duì)Python獲取屏幕截圖的4種方法詳解

    對(duì)Python獲取屏幕截圖的4種方法詳解

    今天小編就為大家分享一篇對(duì)Python獲取屏幕截圖的4種方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 利用Python還原方陣游戲詳解

    利用Python還原方陣游戲詳解

    這篇文章的靈感來源于我玩游戲的時(shí)候,看見一個(gè)大佬在游戲里面建造了“還原方陣游戲”,就感覺很牛掰,就想著python不是有矩陣嗎,可以還原一下呢,感興趣的小伙伴可以了解一下
    2023-01-01
  • Python中的套接字編程是什么?

    Python中的套接字編程是什么?

    不可否認(rèn),互聯(lián)網(wǎng)已成為“存在之魂”,其活動(dòng)以“連接”或“網(wǎng)絡(luò)”為特征.使用套接字的最關(guān)鍵的基礎(chǔ)之一,使這些網(wǎng)絡(luò)成為可能.本文涵蓋了有關(guān)使用Python進(jìn)行套接字編程的所有領(lǐng)域.套接字可以幫助您建立這些連接,而Python無疑可以簡(jiǎn)化連接,需要的朋友可以參考下
    2021-06-06

最新評(píng)論