爲什麼有全連接層的卷積網絡輸入圖片尺寸需要固定的

一句話:

全連接層的一個神經元對應一個輸入。

換句話說,

 

全連接層要求固定的輸入維度。

 

數學推導:

 

  大家都知道, z=wx+b,全連接神經網絡結構一旦固定,需要學習的參數w是固定的,例如 輸入圖像是 28*28 = 784,w 的轉置= (500,784),===> 輸出矩陣的shape:(500,1),如果輸入圖像的大小改變,但是w的大小並不會改變,因此,無法計算。

這裏沒有理解是因爲暗含這樣一份個知識點:

卷積到全連接,所有卷積會一條接一條變成一個全連接的上層 X,比如上面的  28*28 = 784,z=wx+b,如果尺寸不固定,多出來一個 785,就沒法 和 w(500,784)去相乘了,有些人就要問了,那我此時改變w爲(500,785) 不行嘛?也可以,但是,你訓練要很多個step,甚至 epoch(pass)去更新,那,尺寸不固定,這一個step這個神經元訓練到了,下一回沒訓練到,那就沒法收斂了。

 

後續:

在小羣裏,魚哥看完我文章直接說是扯淡,他說 輸入必須固定,是resnet以前的結構的玩法,之後的玩法(好像也不是resnet),可以通過 1*1 卷積 升降維 fix 任何 tensor(解釋,也就是通過 1*1 卷積 產生下面幾篇參考裏提到的 spp結構?還是他確實沒搞懂?又成爲了一個問題)

爲何含有全連接層的網絡,需要固定輸入圖片大小?

所以,在引入預訓練模型的時候,如果要自定義輸入圖片的大小,則需要去掉後面的全連接層的頭,附帶還需要去掉連接的什麼層,給大家留個課後作業,以及,自己定義的輸入圖片尺寸設計怎麼樣的 全連接層和softmax層,以及是否可以引入

spp層的方法,大家課後思索。

爲何含有全連接層的網絡,需要輸入圖片有固定尺寸?

 

提問:

我有個疑問,既然全連接層維度大小是事先預定的,那麼爲什麼不能根據輸入圖像尺寸大小,去指定我們的全連接層維度?爲什麼要圖像尺寸去匹配全連接層維度大小,而不是全連接層維度大小去匹配圖像尺寸,這樣不就能不固定輸入了嗎?

對的,可以這麼理解,但是訓練數據的順序都是隨機打亂的,如果你訓練數據不能保證尺寸大小一樣,那就不能保證同一批的數據抵達fc層的時候尺寸一樣了,所以泛化出來就是所有訓練集尺寸就是固定尺寸了

我之前理解的是輸入的圖片大小就得是固定的尺寸,其實是指同一批輸入的每張圖片大小必須是固定的

從兩個方面將你可能更好理解點,一方面按照你的思路是沒有問題的,就是我有一批圖片尺寸,然後調整全連接層的大小,也能完成訓練,但是這樣可能會有一個問題,原先的框架可能是作者經過N多次訓練出來的相對較好的參數結果;另一方面,其實這邊說的固定尺寸可以這麼理解,有一批輸入圖像,他們的尺寸必須是統一大小的,而不能像faster rcnn那樣可能同時支持不同尺寸的圖片。

所以,對於工業質檢,一般相機的分辨率都是固定,那麼,可以指定分辨率,或者,前期可以用

傳統方法 找到相應的 ROI ,再裁剪 該部分(尺寸固定),再送入 深度學習模型推理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章