日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達者為師

網(wǎng)站首頁 編程語言 正文

keras.layers.Conv2D()函數(shù)參數(shù)用法及說明_python

作者:SP?FA ? 更新時間: 2023-05-26 編程語言

tf.keras.layers.Conv2D() 函數(shù)

Conv2D (二維卷積層)

這一層創(chuàng)建了一個卷積核,它與這一層的輸入卷積以產(chǎn)生一個輸出張量

當(dāng)使用此層作為模型的第一層時,提供關(guān)鍵字參數(shù) input_shape (整數(shù)元組,不包括樣本軸,不需要寫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 類型,表示卷積核個數(shù),filters 影響的是最后輸入結(jié)果的的第四個維度的變化

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

表示卷積核的大小,如果是方陣可以直接寫成一個數(shù),影響的是輸出結(jié)果中間兩個數(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) 步長,同樣會影響輸出的中間兩個維度,值得注意的是,括號里的數(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

是否對周圍進行填充,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

激活函數(shù),如果 activation 不是 None,則它會應(yīng)用于輸出

  • use_bias

boolean,表示是否使用偏置量,如果 use_bias 為真,則創(chuàng)建一個偏置項并添加到輸出中

  • data_format

用于規(guī)定 input_shape 的格式

如果不填寫,默認(rèn)是 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],指定用于擴展卷積的擴展率。可以是單個整數(shù),為所有空間維度指定相同的值。該參數(shù)定義了卷積核處理數(shù)據(jù)時各值的間距。

在相同的計算條件下,該參數(shù)提供了更大的感受野。該參數(shù)經(jīng)常用在實時圖像分割中。當(dāng)網(wǎng)絡(luò)層需要較大的感受野,但計算資源有限而無法提高卷積核數(shù)量或大小時,可以考慮使用。

  • 返回值

返回一個四維的張量

第一個數(shù)是 batch 的大小,也就是有幾組數(shù)據(jù);后三個數(shù)表示一個張量的大小

tf.keras.layers.conv2D學(xué)習(xí)

參數(shù) 描述
inputs 把上一層的輸出作為輸入(直接將上一層作為參數(shù)輸入即可)
input_shape 當(dāng)作為模型的第一層時,需要指出輸入的形狀(samples,rows,cols,channels) ,只指出后三維即可,第一維度按batch_size自動指定
filters 卷積過濾器的數(shù)量,對應(yīng)輸出的維數(shù)--卷積核的數(shù)目(即輸出的維度)
kernel_size 整數(shù),過濾器的大小,如果為一個整數(shù)則寬和高相同.單個整數(shù)或由兩個整數(shù)構(gòu)成的list/tuple,卷積核的寬度和長度。如為單個整數(shù),則表示在各個空間維度的相同長度
strides 橫向和縱向的步長,如果為一個整數(shù)則橫向和縱向相同.單個整數(shù)或由兩個整數(shù)構(gòu)成的list/tuple,為卷積的步長。如為單個整數(shù),則表示在各個空間維度的相同步長。任何不為1的strides均與任何不為1的dilation_rata均不兼容
padding 補0策略,為“valid”, “same”。“valid”代表只進行有效的卷積,即對邊界數(shù)據(jù)不處理。“same”代表保留邊界處的卷積結(jié)果,通常會導(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è)置過,則為“channels_last”。
dilation_rate  
activation 激活函數(shù),如果不指定該參數(shù),將不會使用任何激活函數(shù)(即使用線性激活函數(shù):a(x)=x)
use_bias 是否使用偏差量,布爾值
kernel_initializer 卷積核的初始化。
bias_initializer 偏差向量的初始化。如果是None,則使用默認(rèn)的初始值。
kernel_regularizer 卷積核的正則項
bias_regularizer 偏差向量的正則項
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, # 過濾器的大小
                                  strides(1,1),  # 步長
                                  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自動指定
    # x_train (60000,28,28,1)  >> input_shape=(60000,28,28,1)  第一維可以省略,自動根據(jù)batch_size指定
    tf.keras.layers.Conv2D(filters=16,kernel_size=(5,5),activation="relu",input_shape=(28,28,1),padding="valid"),

總結(jié)

原文鏈接:https://blog.csdn.net/SP_FA/article/details/119181599

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新