CNN濾波器
卷積神經網路(Convolutional Neural Network, CNN)是一種常用於影像處理的深度學習模型。CNN 演算法的核心步驟之一是透過卷積層(Convolution Layer)來獲取截取圖片中的重要特徵。其算法是使用一個叫做濾波器(Filter)的小矩陣來逐步掃描整張圖片。當濾波器鎖定圖片某個局部區域時,將該區域每個像素值與濾波器中的權重相乘,並將結果相加得到該位置的特徵值,從而產生特徵圖(Feature Map)。
以步驟A為例,將\(m\)矩陣的第一列第一欄乘以\(f\)矩陣的第一列第二欄(\(m_{11} \times f_{11}\)),加上\(m\)矩陣的第一列第二欄乘以\(f\)矩陣的第一列第二欄(\(m_{12} \times f_{12}\)),依此類推。最後將所有數相加,成為\(F_{11}\)。
若以算式表示即為\(m_{11} \times f_{11} + m_{12} \times f_{12} + m_{13} \times f_{13} + ... + m_{33} \times f_{33} = F_{11}\)
請撰寫一個程式,模擬卷積層的運算過程。程式需讀入一個\(n \times n\)圖片矩陣 以及一個\(3\times3\)濾波器矩陣,並輸出計算後的特徵圖矩陣。
輸入格式
第一行為正整數 \(n\),代表圖片矩陣的大小。
接下來有\(n\)行,每行包含\(n\)個整數\(i\),表示圖片矩陣的每個像素值。
最後 3 行,每行包含 3 個整數\(j\),表示 \(3 \times 3\) 濾波器的每個權重值。
輸入限制
- \(100 \geq n \geq 3\)
- \(256 \geq i \geq 0\)
- \(4 \geq j \geq -4\)
輸出格式
輸出計算後的特徵圖矩陣。每行有\(n-2\)個元素,共\(n-2\)列,元素之間以空格分隔。
輸入範例
4
7 2 5 1
3 8 6 4
9 1 3 2
5 3 7 6
1 -1 1
-1 4 -1
1 -1 1
輸出範例
44 10
2 17
子題
#No. | 額外限制 | 分數 |
---|---|---|
1 | \(n=3\) | 30 |
2 | 無其他限制 | 70 |
评论