深度學習中卷積和池化的一些總結

2021-07-05 06:24:39 字數 1542 閱讀 4730

**:     深度學習的一些好部落格

最近完成了hinton的深度學習課程的卷積和池化的這一章節了,馬上就要結束了。這個課程的作業我寫的最有感受,待我慢慢說來。

1:裡面有幾個理解起來的難點,乙個是卷積,可以這麼來理解。

這幅圖是對乙個5*5的矩陣a進行3*3的矩陣b的卷積,那麼就從最上角到右下角,生成卷積之後的矩陣的大小是(5-3+1)*(5-3+1)的矩陣,生成之後的矩陣的元素值,是之前的兩個矩陣對應元素的乘積之和,這個在matlab中有現成的命令,但是用之前需要注意下,比如在圖中這樣的b的話要首先進行b中元素左右和上下的對調才可以滿足右側矩陣的結果。這個是matlab中進行卷積計算的命令要求的,並且這個命令還有第三個引數,如圖中使用的是valid引數值,具體的用法還請doc來了解吧。

2:說下池化,其實池化很容易理解,先看圖:

比如上方左側矩陣a是20*20的矩陣要進行大小為10*10的池化,那麼左側圖中的紅色就是10*10的大小,對應到右側的矩陣,右側每個元素的值,是左側紅色矩陣每個元素的值得和再處於紅色矩陣的元素個數,也就是平均值形式的池化。

3:上面說了下卷積和池化,再說下計算中需要注意到的。在**中使用的是彩色圖,彩色圖有3個通道,那麼對於每乙個通道來說要單獨進行卷積和池化,有乙個地方尤其是進行卷積的時候要注意到,隱藏層的每乙個值是對應到一幅圖的3個通道穿起來的,所以分3個通道進行卷積之後要加起來,正好才能對應到乙個隱藏層的神經元上,也就是乙個feature上去。

ps:在做這個實驗的過程中,遇到了個2b的問題。我的**中對convolution和pooling的check都過去了,但是準確率只有25%,反正中間使用了很多方法來找我的錯誤,最後都沒找到,最終和同學的**對比,乙個檔案乙個檔案的替換來跑(為了快速找到問題,把資料規模以及隱藏層的個數都調小了的),最終發現是池化的時候的問題,我把問題原因貼在這裡,在池化的過程中,**應該是這樣子的:

而我寫成了(注意紅色部分)

但是這個**被check過了沒問題,我去看了下check的**,這個**是給出的:

也就是這個測試矩陣的features為1,numimages也是1,所以在我的**中這個問題正好被隱藏掉了,導致我的check是顯示congratulations的,因為也導致我就壓根沒想到是這個地方錯誤的。。

以後變數名一定要注意,不要弄如此類似的了,一不小心就搞錯了,還有不要太相信這個裡面的check的**了,有錯誤還是多仔細檢查每乙個步驟,並且check的**起碼也要具備共性才有說服力!

pytorch NLP中的卷積和最大池化

import torch import torch.nn as nn 卷積 torch.manual seed 6 x torch.randn 4,3,5 batch size,seq len,hidden x x.unsqueeze 1 batch size,channel 1,seq len,h...

深度學習框架Lasagne的一些總結和技巧

深度學習框架也用過幾個了,一直比較喜歡的是lasagne,因為其設計哲學是不迴避底層 theano 而且封裝得比較靈活,不像keras那樣完全一套自己的邏輯,底層藉口暴露的太少,導致想做自己的模型的時候用keras非常費力。從某種意義上說,個人覺得lasagne其實不太能稱得上是乙個神經網路的框架,...

卷積神經網路的一些細節思考(卷積 池化層的作用)

卷積神經網路由卷積核來提取特徵,通過池化層對顯著特徵進行提取,經過多次的堆疊,得到比較高階的特徵,最後可以用分類器來分類。這是cnn的乙個大概流程,其具體實現的結構是豐富多樣的,但總的思想是統一的。cnn整個的計算過程,最重要的有兩點 組合性和區域性不變性 平移 旋轉 尺度放縮 每個卷積核可以看做某...