Keras中Conv1D的使用及說明
Conv1D
keras.layers.Conv1D(filters, kernel_size, strides=1, padding='valid', data_format='channels_last', dilation_rate=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)
1D 卷積層 (例如時序卷積)。
該層創(chuàng)建了一個卷積核,該卷積核以 單個空間(或時間)維上的層輸入進行卷積, 以生成輸出張量。 如果 use_bias 為 True, 則會創(chuàng)建一個偏置向量并將其添加到輸出中。 最后,如果 activation 不是 None,它也會應用于輸出。
當使用該層作為模型第一層時,需要提供 input_shape 參數(shù)(整數(shù)元組或 None),例如, (10, 128) 表示 10 個 128 維的向量組成的向量序列, (None, 128) 表示 128 維的向量組成的變長序列。
參數(shù)
filters
: 整數(shù),輸出空間的維度 (即卷積中濾波器的輸出數(shù)量)。kernel_size
: 一個整數(shù),或者單個整數(shù)表示的元組或列表, 指明 1D 卷積窗口的長度。strides
: 一個整數(shù),或者單個整數(shù)表示的元組或列表, 指明卷積的步長。 指定任何 stride 值 != 1 與指定 dilation_rate 值 != 1 兩者不兼容。padding
: “valid”, “causal” 或 “same” 之一 (大小寫敏感) “valid” 表示「不填充」。 “same” 表示填充輸入以使輸出具有與原始輸入相同的長度。 “causal” 表示因果(膨脹)卷積, 例如,output[t] 不依賴于 input[t+1:], 在模型不應違反時間順序的時間數(shù)據(jù)建模時非常有用。data_format
: 字符串, “channels_last” (默認) 或 “channels_first” 之一。輸入的各個維度順序。 “channels_last” 對應輸入尺寸為 (batch, steps, channels) (Keras 中時序數(shù)據(jù)的默認格式) 而 “channels_first” 對應輸入尺寸為 (batch, channels, steps)。dilation_rate
: 一個整數(shù),或者單個整數(shù)表示的元組或列表,指定用于膨脹卷積的膨脹率。 當前,指定任何 dilation_rate 值 != 1 與指定 stride 值 != 1 兩者不兼容。activation
: 要使用的激活函數(shù)。 如未指定,則不使用激活函數(shù) (即線性激活: a(x) = x)。use_bias
: 布爾值,該層是否使用偏置向量。kernel_initializer
: kernel 權(quán)值矩陣的初始化器 。bias_initializer
: 偏置向量的初始化器 。kernel_regularizer
: 運用到 kernel 權(quán)值矩陣的正則化函數(shù)。bias_regularizer
: 運用到偏置向量的正則化函數(shù)。activity_regularizer
: 運用到層輸出(它的激活值)的正則化函數(shù) 。kernel_constraint
: 運用到 kernel 權(quán)值矩陣的約束函數(shù)。bias_constraint
: 運用到偏置向量的約束函數(shù)。
輸入尺寸
3D 張量 ,尺寸為 (batch_size, steps, input_dim)
輸出尺寸
3D 張量,尺寸為 (batch_size, new_steps, filters)。 由于填充或窗口按步長滑動,steps 值可能已更改
輸入輸出尺寸的理解
一般在2D卷積中,輸入尺寸很直觀,為 (samples, rows, cols, channels),即為樣本數(shù),行數(shù)、列數(shù)和通道數(shù)四維信息,但是若以此推斷,在Conv1D總兩維信息就足夠,中間卻夾雜了一個steps,那這個steps如何去理解呢?
理解steps參數(shù),我們應該跳出圖像的思維,1D卷積通常施用在時序數(shù)據(jù)中,在時序數(shù)據(jù)的輸入中:
batch_size
: 輸入的樣本數(shù)steps
: 時間維度,個人認為可以理解成量化后的時間長度,也就是多少個時刻input_dim
: 每個時刻的特征數(shù)量
keras Conv1D 一維卷積的輸入維度
報錯情況
expected conv1d_1_input to have 3 dimensions, but got array with shape (1, 56)
問題原因
維數(shù)不匹配
解決方法
數(shù)組的維數(shù)是(1,56),但神經(jīng)網(wǎng)絡維數(shù)與數(shù)組維數(shù)相反,應該使用(56,1)或(None,1)
同時神經(jīng)網(wǎng)絡的輸入數(shù)據(jù)應改成三維,即reshape為(1,56,1)
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
提高python代碼可讀性利器pycodestyle使用詳解
鑒于 Python 在數(shù)據(jù)科學中的流行,我將深入研究 pycodestyle 的使用方法,以提高 Python 代碼的質(zhì)量和可讀性。如果你想提升代碼質(zhì)量,歡迎收藏學習,有所收獲,點贊支持2021-11-11Python筆記之a(chǎn) = [0]*x格式的含義及說明
這篇文章主要介紹了Python筆記之a(chǎn) = [0]*x格式的含義及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05關(guān)于python的bottle框架跨域請求報錯問題的處理方法
這篇文章主要介紹了關(guān)于python的bottle框架跨域請求報錯問題的處理方法,需要的朋友可以參考下2017-03-03