numpy手搓卷积

numpy实现卷积

1 卷积本质

  • 设计这样的一个 滤波器(filter,也称为kernel),用这个filter,往我们的图片上“盖”,覆盖一块跟filter一样大的区域之后,对应元素相乘,然后求和。计算一个区域之后,就向其他区域挪动,接着计算,直到把原图片的每一个角落都覆盖到了为止。这个过程就是 “卷积”。
  • 可以通过设计特定的filter,让它去跟图片做卷积,就可以识别出图片中的某些特征。
  • CNN(convolutional neural network),主要就是通过一个个的filter,不断地提取特征,从局部的特征到总体的特征,从而进行图像识别等等功能
  • filter中的参数是通过大量的数据,让机器自己去“学习”这些参数。

2 Padding方式

  • 每次卷积,图像都缩小,采用padding的方法。每次卷积前,先给图片周围都补一圈空白,让卷积之后图片跟原来一样大,同时,原来的边缘也被计算了更多次。
  • “让卷积之后的大小不变”的padding方式,称为 “Same”方式, 把不经过任何填白的,称为 “Valid”方式。
2.1 “Valid”方式

2.1 “Same”方式

2.3 Padding计算公式

3 多卷积核多通道

  • 在单核单通道的基础上执行多遍,然后把结果累加。
  • (1)一个循环是输入通道数对循环:把卷积核在每个通道数据上卷积,然后结果累加
  • (2)一个循环是核个数对循环:每个卷积核执行步骤(1),然后把结果累加,如下图

4 代码实现(循环计算实现和矩阵计算实现)

4.1 一维卷积

在 NumPy 中实现卷积操作可以通过使用 numpy.convolve 函数或手动编写卷积操作的代码来完成。以下是两种方法的示例:

方法一:使用 numpy.convolve 函数

numpy.convolve 函数用于执行一维卷积操作。首先,您需要定义一个卷积核(滤波器),然后将它应用于输入信号。下面是一个示例:

import numpy as np

# 定义输入信号
signal = np.array([1, 2, 3, 4, 5])

# 定义卷积核(滤波器)
kernel = np.array
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值