1. 程式人生 > 程式設計 >關於keras.layers.Conv1D的kernel_size引數使用介紹

關於keras.layers.Conv1D的kernel_size引數使用介紹

今天在用keras添加捲積層的時候,發現了kernel_size這個引數不知怎麼理解,keras中文文件是這樣描述的:

kernel_size: 一個整數,或者單個整數表示的元組或列表, 指明 1D 卷積視窗的長度。

又經過多方查詢,大體理解如下:

因為是新增一維卷積層Conv1D(),一維卷積一般會處理時序資料,所以,卷積核的寬度為1,而kernel_size就是卷積核的長度了,這樣的意思就是這個卷積核是一個長方形的卷積核。

補充知識:tf.layers.conv1d函式解析(一維卷積)

一維卷積一般用於處理文字,所以輸入一般是一段長文字,就是詞的列表

函式定義如下:

tf.layers.conv1d(
inputs,filters,kernel_size,strides=1,padding='valid',data_format='channels_last',dilation_rate=1,activation=None,use_bias=True,kernel_initializer=None,bias_initializer=tf.zeros_initializer(),kernel_regularizer=None,bias_regularizer=None,activity_regularizer=None,kernel_constraint=None,bias_constraint=None,trainable=True,name=None,reuse=None
)

比較重要的幾個引數是inputs,kernel_size,下面分別說明

inputs : 輸入tensor, 維度(None,a,b) 是一個三維的tensor

None : 一般是填充樣本的個數,batch_size

a : 句子中的詞數或者字數

b :字或者詞的向量維度

filters : 過濾器的個數

kernel_size : 卷積核的大小,卷積核其實應該是一個二維的,這裡只需要指定一維,是因為卷積核的第二維與輸入的詞向量維度是一致的,因為對於句子而言,卷積的移動方向只能是沿著詞的方向,即只能在列維度移動

一個例子:

inputs = tf.placeholder('float',shape=[None,6,8])

out = tf.layers.conv1d(inputs,5,3)

說明: 對於一個樣本而言,句子長度為6個字,字向量的維度為8

filters=5,kernel_size=3, 所以卷積核的維度為3*8

那麼輸入6*8經過3*8的卷積核卷積後得到的是4*1的一個向量(4=6-3+1)

又因為有5個過濾器,所以是得到5個4*1的向量

畫圖如下:

關於keras.layers.Conv1D的kernel_size引數使用介紹

以上這篇關於keras.layers.Conv1D的kernel_size引數使用介紹就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。