卷积计算过程详解(含图示和代码)
创作时间:
作者:
@小白创作中心
卷积计算过程详解(含图示和代码)
引用
CSDN
1.
https://blog.csdn.net/u014267900/article/details/139289257
本文是一篇关于卷积计算的详细教程,从概念解释、图示说明到代码实现,全面介绍了卷积计算的过程。适合对深度学习和图像处理感兴趣的读者阅读。
什么是卷积?
卷积是一种数学运算,通过两个函数f和g生成第三个函数,其本质是一种特殊的积分变换,表征函数f与g经过翻转和平移的重叠部分函数值乘积对重叠长度的积分。卷积在泛函分析中扮演重要角色,可以被看作是“滑动平均”的推广。在信号处理和图像处理等领域,卷积常用于描述一个动态过程,用简单的数学形式描述过去作用对当前的影响。
在卷积神经网络中,卷积层的实现方式实际上是数学中定义的互相关 (cross-correlation)运算,与数学分析中的卷积定义有所不同。
卷积核的计算过程可以用下面的数学公式表示,其中
代表输入图片,
代表输出特征图,
是卷积核参数,它们都是二维数组,
表示对卷积核参数进行遍历并求和。
卷积计算过程图解
卷积具体的计算过程如下图所示:
卷积计算代码详解
下面使用Python代码讲解二维矩阵卷积计算过程。
import numpy as np
def matrix_convolution_2d(matrix: [], kernal: []):
"""
二维矩阵卷积处理
:param matrix: 输入二维矩阵
:param kernal: 输入二维卷积核
:return: 输出卷积结果
"""
# 获取矩阵的行数和列数
_matrix = np.array(matrix)
_kernal = np.array(kernal)
rows = len(_matrix)
cols = len(_matrix[0])
# 获取卷积核的行数和列数
kh = len(_kernal)
kw = len(_kernal[0])
# 计算卷积结果矩阵的大小
r_rows = rows - kh + 1
c_cols = cols - kw + 1
# 创建一个卷积结果矩阵
convolution_result = np.empty((r_rows, c_cols))
for i in range(r_rows):
for j in range(c_cols):
# 获取当前子矩阵的切片
row_slice = slice(i, i + kh)
col_slice = slice(j, j + kw)
sub_matrix = _matrix[row_slice, col_slice]
# 进行卷积操作,卷积核和与子矩阵进行点积后求和
convolution_result[i][j] = np.sum(_kernal * sub_matrix)
return convolution_result
if __name__ == '__main__':
# 定义一个二维矩阵
matrix = [[1, 2,3],
[4,5,6],
[7,8,9]]
# 定义一个二维卷积核
kernal = [[0, 1], [2, 3]]
# 进行二维矩阵卷积处理
result = matrix_convolution_2d(matrix, kernal)
# 输出卷积处理结果
print(result)
计算结果:
[[25. 31.]
[43. 49.]]
热门推荐
癫痫发作如何急救护理
被误解到被理解,真正的倾转旋翼到底是什么?
为什么说碳排放管理员是朝阳行业里面最有“钱”途的工作
如何选择合适的租房房源?这种房源的安全性如何保障?
10部最佳反派起源电影
GB/T5464建筑材料及构件不燃性测试方法及所用检测仪器
螺杆式冷水机机组安装BE橡胶减震垫的专业解析
如何区分战略、战术、策略、策划?
探寻毛泽东母亲的真名
侦查案件如何侦查出来:法律实务中的线索发现与案件侦破
常见的连接装配——键连接
电脑扫盲之如何辨别显卡型号并更新驱动
Excel相减操作完全指南:从基础到高级应用
法律视角下的设备监理与管理合同检查
92号与95号汽油混加真相:省钱还是毁车?老司机必看燃油指南
费用审核是什么?流程、目的与实施方法详解
分散式微污染初期雨水复合生态处理技术:一种创新的环保解决方案
脂溢性皮炎患者饮食注意事项
沃尔沃的发源地是哪一个国家?
民航安检员解读:为什么我的充电宝不能带上飞机?
【Windows】解决Windows磁盘有锁和感叹号方法
Win10磁盘上出现黄色感叹号和小锁的解决办法
初中生英语作文万能句子,100个英语作文常用句型,提高写作水平
社会发展思考 — 从量变到质变
担保公司倒闭时,责任究竟由谁承担?
二进制为什么被认为是计算机中最快速的运算方式
股票追高的原因是什么?怎样避免盲目追高?
更换CPU时需要注意哪些事项?
如何在定制编译OpenWrt固件时排查错误
法国1855列级酒庄名单汇总