卷积计算过程详解(含图示和代码)

什么是卷积?

        卷积是一种数学运算,通过两个函数f和g生成第三个函数,其本质是一种特殊的积分变换,表征函数f与g经过翻转和平移的重叠部分函数值乘积对重叠长度的积分。卷积在泛函分析中扮演重要角色,可以被看作是“滑动平均”的推广。在信号处理和图像处理等领域,卷积常用于描述一个动态过程,用简单的数学形式描述过去作用对当前的影响。

        在卷积神经网络中,卷积层的实现方式实际上是数学中定义的互相关 (cross-correlation)运算,与数学分析中的卷积定义有所不同。

        卷积核的计算过程可以用下面的数学公式表示,其中a代表输入图片, b代表输出特征图,w是卷积核参数,它们都是二维数组,\sum u,v表示对卷积核参数进行遍历并求和。

b[i,j]=\sum_{u,v}a[i+u,j+v]\cdot w[u,v]

卷积计算过程图解

卷积具体的计算过程如下图所示:

卷积计算代码详解

        下面使用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.]]

《完》

PS:本人学习笔记,水平有限,如有错误,欢迎指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/659776.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【大数据】Hadoop 2.X和1.X升级优化对比

目录 1.前言 2.hadoop 1.X的缺点和优化方向 3.解决NameNode的局限性 3.1.Hadoop HA 3.2.Haddop federation 4.yarn 5.周边组件 1.前言 本文是作者大数据系列中的一文,专栏地址: https://blog.csdn.net/joker_zjn/category_12631789.html?spm10…

扎气球最高分-第13届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第74讲。 扎气球最高分&…

图片怎样在线改像素大小?电脑快速修改图片大小的方法

在设计图片的时候下载的图片尺寸一般会比较大,在网上使用经常会因为尺寸的问题导致无法正常上传,那么如何快速在线改图片大小呢?想要修改图片尺寸可以在直接选择网上的图片改大小工具的功能来快速完成修改,操作简单方便使用&#…

FreeRTOS学习笔记-基于stm32(7)任务状态查询与任务时间统计API函数

1、FreeRTOS任务相关API函数 函数描述uxTaskPriorityGet()查询某个任务的优先级vTaskPrioritySet()改变某个任务的任务优先级uxTaskGetSystemState()获取系统中任务状态vTaskGetInfo()获取某个任务信息xTaskGetApplicationTaskTag()获取某个任务的标签(Tag)值xTaskGetCurrentT…

0.25W 1.5KVDC~3KVDC 隔离超小型单输出 DC/DC 电源模块——TKE-W25系列

TKE-W25系列隔离超小型单输出 DC/DC 电源模块是一款超小型单输出电源模块,工业级环境温度,用于PCB安装的国际标准结构。此系列产品小巧,效率高,低输出纹波,用于需要电压转换和隔离的场合,封装有SIP和DIP可选。

MiniPCIe/SATA双用插槽无法识别minipcie模块怎么回事!

在计算机和嵌入式系统设计中,MiniPCIe/SATA双用插槽作为一种高度集成的解决方案,提供了极大的灵活性与扩展能力。它不仅能够支持MiniPCIe接口的无线网卡、固态硬盘控制器等模块,还能适应SATA接口的硬盘或固态存储设备,大大丰富了系统配置的可能性。尽管设计初衷良好,但在实…

Java—二分查找

介绍 二分查找(Binary Search)是一种在有序数组中查找特定元素的搜索算法。其基本思想是将目标值与数组中间的元素进行比较: 如果目标值等于中间元素,则查找成功。如果目标值小于中间元素,则在数组左半部分继续进行二…

汽车悬架分为哪几类

汽车悬架分为哪几类 1)汽车的悬架系统可根据结构分为两种:独立悬架和非独立悬架,独立悬架根据构造又可以分为CDC运动悬架(CDC电磁悬架系统)和空气悬架; 2)当前比较火热的空气悬架,是独立悬架的一种; 3)前轮主要使用麦弗逊式独立悬架 和 双叉臂悬架,后轮主要使用多…

基于 DCT 的图像滤波

需求分析 对于图像去噪这一需求,我们可以通过DCT(离散余弦变换)算法来实现。DCT是一种基于频域的变换技术,可以将图像从空间域转换为频域,然后通过滤波等处理方式进行去噪。 针对这一需求,我们需要进行以下…

香港优才计划申请时间要多久?各流程申请周期规划,再晚就来不及了!

香港优才计划申请时间要多久?各流程申请周期规划,再晚就来不及了! 2024年是香港优才计划不限配额的最后一年,明年政策如何变化还未可知,但如果明年又设置限额了,那么今年最后的机会一定要抓住了。 在这里…

美业SaaS收银系统源码-美团/口碑核销时报错:该商品未在美团/口碑上架怎么办?

美业SaaS系统 连锁多门店美业收银系统源码 多门店管理 / 会员管理 / 预约管理 / 排班管理 / 商品管理 / 活动促销 PC管理后台、手机APP、iPad APP、微信小程序 1. 可能是门店未做映射 • 美团门店映射:需要在【PC运营后端】-【渠道商品】-【美团点评门店管理】&…

elementUI type=“selection“多选框选中 删除 回显 赋值问题 回显数组改变选中状态未改变

业务需求&#xff1a; 点击查询弹列表框 勾选列表选项保存 可删除可重新查询列表添加 遇到的问题&#xff1a;删除之后查询列表selection回显问题 解决&#xff1a;row-click配合:reserve-selection"true"使用 <el-tableref"refPlanTable":data"…

AI时代的服装设计师--AIGC

AI时代的服装设计师--AIGC AIGCAIGC设计能替代真正的设计师吗森马T恤设计AIGC优势、优化 本文记录于去年参加的一次森马T恤设计活动的感受。 AIGC 可以说&#xff0c;近期以来&#xff0c;随着ChatGPT的不断发展&#xff0c;从ChatGPT-3到ChatGPT-4的飞速发展&#xff0c;AIGC…

【Spring Cloud】分布式配置

目录 未来的开发场景为什么需要配置中心配置实时生效配置管理流程 开源配置中心基本介绍DisconfSpring Cloud ConfigApolloNacos Spring Cloud Config介绍配置管理工具体系 案例需求编写 Config Server1.创建配置文件2.创建项目3.添加依赖4.添加注解5.修改配置文件application.…

selenium web 网页测试自动化需要哪些技术?

引言&#xff1a; 在当今互联网时代&#xff0c;网页测试自动化成为了确保软件质量和提高效率的重要手段之一。Selenium是一种功能强大且广泛应用的工具&#xff0c;可用于实现网页测试自动化。本文将带您了解Selenium Web网页测试自动化所需的技术和步骤&#xff0c;以便您从零…

伦敦银和现货白银是一回事吗

伦敦银和现货白银不能直接完全地画上等号&#xff0c;但如果投资者所指指的是国际市场上的现货白银交易&#xff0c;那么二者应该是等同的——因为在国际贵金属投资市场上&#xff0c;现货白银的别称就是伦敦银&#xff0c;伦敦银和现货白银指的其实是同一回事。 因为早在很多个…

MySQL学习——连接服务器和输入查询

MySQL是一个流行的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;由瑞典的MySQL AB公司开发&#xff0c;后来被Oracle公司收购。它使用SQL&#xff08;结构化查询语言&#xff09;作为访问和操作数据库的标准语言。 要查看 mysql 客户端程序提供的选项列表&a…

firebase如何自定义上传日志

我们可以很轻松的得到2个代码&#xff1a; Firebase.crashlytics.log(str) Firebase.crashlytics.recordException(ex)这就是firebase提供的自定义日志和excption上传的方法。 但是如果你认为log函数调用后&#xff0c;直接就能查看到日志就错了。 我们在这个page是找不到日志…

Ableton Live 11 Suite for Mac:音乐创作的全能伙伴

在数字音乐创作的广阔天地中&#xff0c;Ableton Live 11 Suite for Mac无疑是一颗璀璨的明星。作为一款专业的音乐制作软件&#xff0c;它集合了音频录制、编辑、混音、母带制作等全方位功能&#xff0c;为Mac用户提供了无与伦比的音乐创作体验。 Ableton Live 11 Suite拥有直…