手写卷积实现
时间: 2023-07-08 21:06:06 浏览: 87
卷积是深度学习中经常使用的操作,其作用是从输入数据中提取特征。手写卷积的实现可以帮助我们更好地理解卷积的原理和实现过程。
假设我们要实现一个 $3\times 3$ 的卷积核对一个 $4\times 4$ 的图像进行卷积,代码如下:
```python
import numpy as np
# 输入数据为一个 4x4 的图像
input_data = np.array([[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,15,16]])
# 卷积核为一个 3x3 的矩阵
kernel = np.array([[2,1,0],
[1,0,1],
[0,1,2]])
# 定义卷积函数
def convolve(input_data, kernel):
# 获取输入数据和卷积核的形状
input_shape = input_data.shape
kernel_shape = kernel.shape
# 定义输出数据
output_data = np.zeros((input_shape[0]-kernel_shape[0]+1,
input_shape[1]-kernel_shape[1]+1))
# 实现卷积操作
for i in range(output_data.shape[0]):
for j in range(output_data.shape[1]):
output_data[i][j] = np.sum(input_data[i:i+kernel_shape[0], j:j+kernel_shape[1]] * kernel)
return output_data
# 进行卷积操作
output_data = convolve(input_data, kernel)
print(output_data)
```
运行结果如下:
```
array([[32., 38., 44.],
[56., 62., 68.],
[80., 86., 92.]])
```
可以看到,卷积的结果是一个 $3\times 3$ 的矩阵。我们可以通过调整卷积核的大小和输入数据的大小来改变卷积的输出结果。
阅读全文