keras.layers.Conv2D()函數(shù)參數(shù)用法及說(shuō)明
tf.keras.layers.Conv2D() 函數(shù)
Conv2D (二維卷積層)
這一層創(chuàng)建了一個(gè)卷積核,它與這一層的輸入卷積以產(chǎn)生一個(gè)輸出張量
當(dāng)使用此層作為模型的第一層時(shí),提供關(guān)鍵字參數(shù) input_shape (整數(shù)元組,不包括樣本軸,不需要寫(xiě)batch_size)
def __init__(self, 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, ? ? ? ? ? ? ?**kwargs):
參數(shù)
filters
int 類型,表示卷積核個(gè)數(shù),filters 影響的是最后輸入結(jié)果的的第四個(gè)維度的變化
import tensorflow as tf from tensorflow.keras.layers import Conv2D input_shape = (4, 600, 600, 3) input = tf.random.normal(input_shape) x = keras.layers.Conv2D(64, (1, 1), strides=(1, 1), name='conv1')(input) print(x.shape) OUTPUT: (4, 600, 600, 64)
kernel_size
表示卷積核的大小,如果是方陣可以直接寫(xiě)成一個(gè)數(shù),影響的是輸出結(jié)果中間兩個(gè)數(shù)據(jù)的維度
x = Conv2D(64, (2, 2), strides=(1, 1), name='conv1')(input) #or Conv2D(64, 2, strides=(1, 1), name='conv1')(input) print(x.shape) OUTPUT: (4, 599, 599, 64)
strides
tuple (int, int) 步長(zhǎng),同樣會(huì)影響輸出的中間兩個(gè)維度,值得注意的是,括號(hào)里的數(shù)據(jù)可以不一致,分別控制橫坐標(biāo)和縱坐標(biāo)
x = Conv2D(64, 1, strides=(2, 2), name='conv1')(input) print(x.shape) OUTPUT: (4, 300, 300, 64)
padding
是否對(duì)周?chē)M(jìn)行填充,same 即使通過(guò) kernel_size 縮小了維度,但是四周會(huì)填充 0,保持原先的維度;valid 表示存儲(chǔ)不為 0 的有效信息
a = Conv2D(64, 1, strides=(2, 2), padding="same" , name='conv1')(input) b = Conv2D(64, 3, strides=(2, 2), padding="same" , name='conv1')(input) c = Conv2D(64, 3, strides=(1, 1), padding="same" , name='conv1')(input) d = Conv2D(64, 3, strides=(1, 1), padding="valid", name='conv1')(input) print(a.shape, b.shape, c.shape, d.shape) OUTPUT: (4, 300, 300, 64) (4, 300, 300, 64) (4, 600, 600, 64) (4, 598, 598, 64)
activation
激活函數(shù),如果 activation 不是 None,則它會(huì)應(yīng)用于輸出
use_bias
boolean,表示是否使用偏置量,如果 use_bias 為真,則創(chuàng)建一個(gè)偏置項(xiàng)并添加到輸出中
data_format
用于規(guī)定 input_shape 的格式
如果不填寫(xiě),默認(rèn)是 channels_last,否則可以填寫(xiě) channels_first。前者的會(huì)把 input_shape 這個(gè)三元組給識(shí)別成 (batch_size, height, width, channels),后者則會(huì)識(shí)別成 (batch_size, channels, height, width) 不過(guò)樣本軸 (batch_size) 不需要自己填寫(xiě)
dilation_rate
int, tuple(int, int), list[int, int],指定用于擴(kuò)展卷積的擴(kuò)展率??梢允菃蝹€(gè)整數(shù),為所有空間維度指定相同的值。該參數(shù)定義了卷積核處理數(shù)據(jù)時(shí)各值的間距。
在相同的計(jì)算條件下,該參數(shù)提供了更大的感受野。該參數(shù)經(jīng)常用在實(shí)時(shí)圖像分割中。當(dāng)網(wǎng)絡(luò)層需要較大的感受野,但計(jì)算資源有限而無(wú)法提高卷積核數(shù)量或大小時(shí),可以考慮使用。
- 返回值
返回一個(gè)四維的張量
第一個(gè)數(shù)是 batch 的大小,也就是有幾組數(shù)據(jù);后三個(gè)數(shù)表示一個(gè)張量的大小
tf.keras.layers.conv2D學(xué)習(xí)
| 參數(shù) | 描述 |
| inputs | 把上一層的輸出作為輸入(直接將上一層作為參數(shù)輸入即可) |
| input_shape | 當(dāng)作為模型的第一層時(shí),需要指出輸入的形狀(samples,rows,cols,channels) ,只指出后三維即可,第一維度按batch_size自動(dòng)指定 |
| filters | 卷積過(guò)濾器的數(shù)量,對(duì)應(yīng)輸出的維數(shù)--卷積核的數(shù)目(即輸出的維度) |
| kernel_size | 整數(shù),過(guò)濾器的大小,如果為一個(gè)整數(shù)則寬和高相同.單個(gè)整數(shù)或由兩個(gè)整數(shù)構(gòu)成的list/tuple,卷積核的寬度和長(zhǎng)度。如為單個(gè)整數(shù),則表示在各個(gè)空間維度的相同長(zhǎng)度 |
| strides | 橫向和縱向的步長(zhǎng),如果為一個(gè)整數(shù)則橫向和縱向相同.單個(gè)整數(shù)或由兩個(gè)整數(shù)構(gòu)成的list/tuple,為卷積的步長(zhǎng)。如為單個(gè)整數(shù),則表示在各個(gè)空間維度的相同步長(zhǎng)。任何不為1的strides均與任何不為1的dilation_rata均不兼容 |
| padding | 補(bǔ)0策略,為“valid”, “same”。“valid”代表只進(jìn)行有效的卷積,即對(duì)邊界數(shù)據(jù)不處理。“same”代表保留邊界處的卷積結(jié)果,通常會(huì)導(dǎo)致輸出shape與輸入shape相同。 |
| data_format | channels_last為(batch,height,width,channels),channels_first為(batch,channels,height,width).以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è)置過(guò),則為“channels_last”。 |
| dilation_rate | |
| activation | 激活函數(shù),如果不指定該參數(shù),將不會(huì)使用任何激活函數(shù)(即使用線性激活函數(shù):a(x)=x) |
| use_bias | 是否使用偏差量,布爾值 |
| kernel_initializer | 卷積核的初始化。 |
| bias_initializer | 偏差向量的初始化。如果是None,則使用默認(rèn)的初始值。 |
| kernel_regularizer | 卷積核的正則項(xiàng) |
| bias_regularizer | 偏差向量的正則項(xiàng) |
| activity_regularizer | 輸出的正則函數(shù) |
| bias_constraint | 映射函數(shù),當(dāng)偏差向量被Optimizer更新后應(yīng)用到偏差向量上。 |
| trainable | Boolean類型。 |
| name | 字符串,層的名字。 |
| reuse | Boolean類型,表示是否可以重復(fù)使用具有相同名字的前一層的權(quán)重。 |
keras.layers.convolutional.Conv2D(filters, # 卷積核數(shù)目
kernel_size, # 過(guò)濾器的大小
strides(1,1), # 步長(zhǎng)
padding='valid', # 邊界處理
data_format=None,
dilation_rate=(1,1),
activation=None, # 激活函數(shù)
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)# 設(shè)置訓(xùn)練模型
# input_shape 指出輸入的形狀(samples,rows,cols,channels) ,只指出后三維即可,第一維度按batch_size自動(dòng)指定
# x_train (60000,28,28,1) >> input_shape=(60000,28,28,1) 第一維可以省略,自動(dòng)根據(jù)batch_size指定
tf.keras.layers.Conv2D(filters=16,kernel_size=(5,5),activation="relu",input_shape=(28,28,1),padding="valid"),總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python numpy 反轉(zhuǎn) reverse示例
今天小編就為大家分享一篇python numpy 反轉(zhuǎn) reverse示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
python中常見(jiàn)進(jìn)制之間的轉(zhuǎn)換方式
這篇文章主要介紹了python中常見(jiàn)進(jìn)制之間的轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
python argparse 模塊命令行參數(shù)用法及說(shuō)明
這篇文章主要介紹了python argparse 模塊命令行參數(shù)用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
Python實(shí)現(xiàn)微信小程序自動(dòng)操作工具
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)微信小程序自動(dòng)化操作的小工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-01-01
Python實(shí)現(xiàn)打包成庫(kù)供別的模塊調(diào)用
這篇文章主要介紹了Python實(shí)現(xiàn)打包成庫(kù)供別的模塊調(diào)用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
基于Python數(shù)據(jù)結(jié)構(gòu)之遞歸與回溯搜索
今天小編就為大家分享一篇基于Python數(shù)據(jù)結(jié)構(gòu)之遞歸與回溯搜索,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
對(duì)python 判斷數(shù)字是否小于0的方法詳解
今天小編就為大家分享一篇對(duì)python 判斷數(shù)字是否小于0的方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
flask 實(shí)現(xiàn)上傳圖片并縮放作為頭像的例子
今天小編就為大家分享一篇flask 實(shí)現(xiàn)上傳圖片并縮放作為頭像的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
讓代碼變得更易維護(hù)的7個(gè)Python庫(kù)
今天小編就為大家分享一篇關(guān)于讓代碼變得更易維護(hù)的7個(gè)Python庫(kù),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10

