您好,登錄后才能下訂單哦!
今天小編給大家分享一下keras.layers.Conv2D()函數參數怎么使用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
這一層創建了一個卷積核,它與這一層的輸入卷積以產生一個輸出張量
當使用此層作為模型的第一層時,提供關鍵字參數 input_shape (整數元組,不包括樣本軸,不需要寫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):
filters
int 類型,表示卷積核個數,filters 影響的是最后輸入結果的的第四個維度的變化
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
表示卷積核的大小,如果是方陣可以直接寫成一個數,影響的是輸出結果中間兩個數據的維度
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) 步長,同樣會影響輸出的中間兩個維度,值得注意的是,括號里的數據可以不一致,分別控制橫坐標和縱坐標
x = Conv2D(64, 1, strides=(2, 2), name='conv1')(input) print(x.shape) OUTPUT: (4, 300, 300, 64)
padding
是否對周圍進行填充,same 即使通過 kernel_size 縮小了維度,但是四周會填充 0,保持原先的維度;valid 表示存儲不為 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
激活函數,如果 activation 不是 None,則它會應用于輸出
use_bias
boolean,表示是否使用偏置量,如果 use_bias 為真,則創建一個偏置項并添加到輸出中
data_format
用于規定 input_shape 的格式
如果不填寫,默認是 channels_last,否則可以填寫 channels_first。前者的會把 input_shape 這個三元組給識別成 (batch_size, height, width, channels),后者則會識別成 (batch_size, channels, height, width) 不過樣本軸 (batch_size) 不需要自己填寫
dilation_rate
int, tuple(int, int), list[int, int],指定用于擴展卷積的擴展率。可以是單個整數,為所有空間維度指定相同的值。該參數定義了卷積核處理數據時各值的間距。
在相同的計算條件下,該參數提供了更大的感受野。該參數經常用在實時圖像分割中。當網絡層需要較大的感受野,但計算資源有限而無法提高卷積核數量或大小時,可以考慮使用。
返回值
返回一個四維的張量
第一個數是 batch 的大小,也就是有幾組數據;后三個數表示一個張量的大小
參數 | 描述 |
inputs | 把上一層的輸出作為輸入(直接將上一層作為參數輸入即可) |
input_shape | 當作為模型的第一層時,需要指出輸入的形狀(samples,rows,cols,channels) ,只指出后三維即可,第一維度按batch_size自動指定 |
filters | 卷積過濾器的數量,對應輸出的維數--卷積核的數目(即輸出的維度) |
kernel_size | 整數,過濾器的大小,如果為一個整數則寬和高相同.單個整數或由兩個整數構成的list/tuple,卷積核的寬度和長度。如為單個整數,則表示在各個空間維度的相同長度 |
strides | 橫向和縱向的步長,如果為一個整數則橫向和縱向相同.單個整數或由兩個整數構成的list/tuple,為卷積的步長。如為單個整數,則表示在各個空間維度的相同步長。任何不為1的strides均與任何不為1的dilation_rata均不兼容 |
padding | 補0策略,為“valid”, “same”。“valid”代表只進行有效的卷積,即對邊界數據不處理。“same”代表保留邊界處的卷積結果,通常會導致輸出shape與輸入shape相同。 |
data_format | channels_last為(batch,height,width,channels),channels_first為(batch,channels,height,width).以128x128的RGB圖像為例,“channels_first”應將數據組織為(3,128,128),而“channels_last”應將數據組織為(128,128,3)。該參數的默認值是~/.keras/keras.json中設置的值,若從未設置過,則為“channels_last”。 |
dilation_rate | |
activation | 激活函數,如果不指定該參數,將不會使用任何激活函數(即使用線性激活函數:a(x)=x) |
use_bias | 是否使用偏差量,布爾值 |
kernel_initializer | 卷積核的初始化。 |
bias_initializer | 偏差向量的初始化。如果是None,則使用默認的初始值。 |
kernel_regularizer | 卷積核的正則項 |
bias_regularizer | 偏差向量的正則項 |
activity_regularizer | 輸出的正則函數 |
bias_constraint | 映射函數,當偏差向量被Optimizer更新后應用到偏差向量上。 |
trainable | Boolean類型。 |
name | 字符串,層的名字。 |
reuse | Boolean類型,表示是否可以重復使用具有相同名字的前一層的權重。 |
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 指出輸入的形狀(samples,rows,cols,channels) ,只指出后三維即可,第一維度按batch_size自動指定 # x_train (60000,28,28,1) >> input_shape=(60000,28,28,1) 第一維可以省略,自動根據batch_size指定 tf.keras.layers.Conv2D(filters=16,kernel_size=(5,5),activation="relu",input_shape=(28,28,1),padding="valid"),
以上就是“keras.layers.Conv2D()函數參數怎么使用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。