CNN濾波器


提交程序

分数: 100 (部分)
时间限制: 1.0s
内存限制: 256M

作者:
题目类型
允许的语言
C, C++

卷積神經網路(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

评论

目前没有评论。