如何理解一維卷積神經網路的輸入?

本人使用keras 做1DCNN,在應用於一維信號的分析中,但是1Dcnn的輸入input_shape卻是二維的(sequence_length, dimensionality),對此我不太理解。就拿一維信號來說吧,sequence _length 是不是就是序列的長度,那dimensionality 呢?難道是1嗎?不太理解,希望能得到解答。還有,是否可以參考lstm中的輸入(time_steps,input)


感謝 @魚子醬的夏天 的邀請。

和題主一樣,讀書時一直偏重於信號類數據處理,我先拋出個問題:圖像不是平面數據么?不是2維么?為什麼圖像的input_shape=(width, height, channel)呢? channel 是什麼鬼?

哦哦,原來圖像表示要用rgb三個通道信息表示,後來發現還有rgba,rgba還不夠,我再加個紅外線、紫外線、x射線表示,組個七八個通道的圖像。那麼這到底是什麼呢?

我們實際上在運算中了解到,每個通道表示的信息經過「耦合」之後,就組成了圖像。那麼如果是聲音一維信號呢,就會有各種樂器伴奏、人的聲音伴奏,最直觀的例子就是多通道大合唱組成的一首歌,這是一維吧,也同樣是多通道融合出的一維數據。

如果說上述例子太特殊,說個人為的時間序列例子:股票數據,每一時刻包括股價、成交量、買盤賣盤等實時信息數據,這些數據應該是耦合的吧?所以,股票數據同樣是一維時間序列數據,但是可以包含多個通道的信息,這便是dimensionality

題注還談到了time_step,這個需要你了解下RNN的意思。也舉個最簡單的例子,以前做課程作業最喜歡預測溫度變化,我現在有每小時的溫度數據,想要做預測,如果我想用前六個小時去預測第七個小時溫度,那麼time_step就是6,如果我想用前12個小時去預測第13個小時溫度,那麼time_step就是12,你可以拿上48個小時的數據試一試,這個能一目了然。

如果你問我time_step取幾好呢?我只能說無可奉告,因為我從來不會因為用模型而去用模型,但是預測溫度這個例子當然是取24或12應該最好了,至於原因呢?


最後一維的dimensionality指channel,也可以叫feature,在圖像中代表rgb三通道,是一個像素點顏色的三個分量,在做卷積的時候會把在每個通道上得到的結果加起來,得到一個值,卷積核的輸出通道指卷積核的個數,比如8個,在圖像上卷積之後得到8層矩陣。通常的卷積操作都是各個通道的結果加起來,有時候不太合理,所以現在有了分通道卷積。

另外,word2vec 中的詞向量也可以看作詞的channel,代表著這個詞在各個維度上的feature大小。


推薦閱讀:

學習機器學習過程中都走過哪些彎路,怎樣避免走彎路?
有沒有可能做出在歐陸風雲里和頂尖人類玩家同等水準的AI?
做出「狼人殺」的 AI 有哪些難點?
b大的深度學習框架有什麼獨到之處?

TAG:深度學習DeepLearning | 卷積神經網路CNN | Keras |