[英]CNN with a dynamic input shape
大家好!
由於我正在嘗試制作一個將灰度圖像轉換為 rgb 圖像的完全卷積神經網絡,我想知道我是否可以在不同大小的圖像(不同像素和比率)上訓練和測試模型。 通常你只會下采樣或上采樣,這是我不想做的。 我聽說如果我使用完全卷積神經網絡可能是可能的,但我仍然不知道代碼會是什么樣子。 你能幫我一些代碼嗎?
為什么這是個問題?
就像我說的,輸入圖像不應該被下采樣,因為我沒有對任何東西進行分類。 我想生成一個與輸入圖像大小相同的新圖像。 所以應該不會有任何損失。
固定輸入形狀的代碼:
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(layers.MaxPooling2D((2, 2)))
...
圖片大小為 28*28px
我認為它可能如何工作:
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(None, None, 1)))
model.add(layers.MaxPooling2D((2, 2)))
...
具有不同尺寸的圖像
這是一個將灰度圖像轉換為 rgb 圖像的自動編碼器示例,但是這個具有固定的輸入形狀。
*我使用的是 TF 2.0 Alpha
我發現,卷積神經網絡根本不關心輸入形狀。 它關心的是內核大小、步幅和填充。 例如設置 kernel size = 3, stride = 1, padding = 1 不會改變張量的形狀。 說到pooling,一定要保證,加了padding = 1,這叫half/same padding ( http://deeplearning.net/software/theano/tutorial/conv_arithmetic.html )。 因此,可以制作一個能夠處理不同尺寸圖像的全卷積自編碼器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.