winograd卷积实践

news2025/1/17 0:55:39

winograd卷积基本原理参考

Winograd算法实现卷积原理_Luchang-Li的博客-CSDN博客_optimizing batched winograd convolution on gpus

winograd卷积图示:

注意这张图里面隐藏了input和output channel。实际上每个空间维度里面还包含了batch和in/out channel维度。 

输入数据格式为[n, h, w, c],input transform后格式原始的论文[Fast Algorithms for Convolutional Neural Networks]的格式是[ho/2*w0/2, 16, n, ci],实际也常用[n, ho/2*w0/2, 16, 1, ci]。ho, wo是输出height和width尺寸,除以2是因为两个相邻元素共享一个4x4矩阵。

输入变换是空间维乘以变换矩阵,由于每个空间维元素实际上对应于一个2维向量,实际上相当于每个空间维元素对应的的向量之间做各种乘加运算。

weight原始格式为[c0, ci, h, w],这里h = w = 3, 先处理为[h, w, ci, co], 然后weight transform转换后为[4*4, ci, co]。

转换后的输入和weight做batch矩阵乘得到数据格式为[n, ho/2*w0/2, 4*4, 1, co]。

[1, ci]与[ci, co]的矩阵乘可以考虑通过每个线程计算1x1*1x4大小矩阵乘(常用的方法是每个线程计算4x1*1x4或者8x1*1x4矩阵乘并沿着k方向循环,这里行数只有1,因此缩减到1x1*1x4,可参考[施工中] CUDA GEMM 理论性能分析与 kernel 优化 - 知乎)。

最后做输出transform得到格式为[n, ho/2*w0/2, 2*2, co],也就是[n, ho, wo, co]

端侧推理引擎如mnn由于通常没有或只有很少的shared mem,线程之间数据交换能力比较弱,通常按照这个流程把整个计算流程拆分为了三个步骤而不是写在一个完整的kernel:input transform, matmul, output transform。而权重在推理时是常量,可以通过常量折叠提前做好weight transform。

对于NHWC的数据,通常采用每个thread读取4x4,并且channel深度为4的输入数据做input transform。

卷积通过im2row+matmul的实现问题,其一是相邻的卷积框有重复的数据,对于3x3 stride=1,每个位置数据读取一次,写出9次,因此im2row写回和matmul读取数据量增大了9倍。

winograd input transform相当于4x4 kernel, stride = 2,input transform写回和matmul读取数据数据量相比输入增大4倍。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从pom文件里面找不到对应的Maven依赖,通过下面的方法完美解决

如下,我想获取gson对应的依赖 第一步:进入引入对应包的类里面 第二步:进入包:Ctrl 左键 ctrl左键点击gson后,会自动跳转到这个文件夹 第三步:打开依赖图 按箭头点击后,会出现下面的依赖图 …

[附源码]Python计算机毕业设计SSM基于Java的音乐网站(程序+LW)

环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 Maven管理等…

基于java+swing+mysql北方传统民居信息管理系统

基于javaswingmysql北方传统民居信息管理系统一、系统介绍二、功能展示1.用户登陆2.用户界面3.管理员界面4.民居信息修改5.民居信息详情三、系统实现1.ManageMainFrame.java四、其它1.其他系统实现一、系统介绍 用户:民居信息浏览、民居详细信息 管理员&#xff1a…

CDMP证书是什么样?CDMP证书有用吗?

随着数字化经济在我国的迅速开展,企业越来越重视数字人才的培养,致使越来越多得数字人通过考取CDMP证书来证明自己的能力。而一些犹豫观望的人,就会问。拿到CDMP证书,对你们真的有用吗?是纸质版证书还是电子版证书&…

PHP交流管理系统wamp运行定制开发mysql数据库html网页算机软件工程

一、源码特点 PHP交流管理系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库系统主要采用B/S模式开发,开发环境为PHP APACHE,数据库为mysql5.0 ,使用php语言开发 PHP交流管理系统wamp运…

想把iPad作为扩展屏,却发现macOS monterey随航功能不见了

居家办公最不爽的事情就是没有扩展屏,对于开发来说,效率是有影响的,于是便想着把iPad当作扩展屏来用 系统参数 mac: macOS monterey(12.4);M1 iPad: iPad Pro 第2代,应该…

分享 2022 年最受欢迎的黑科技工具(一)

Hello, everybody ,2022 年最受欢迎的黑科技工具(一),收藏一波吧,您的在看、转发、点赞就是对tuonioooo最大的支持! 1.Hijacker 项目地址:https://github.com/chrisk44/Hijacker Hijacker是渗透…

Python基础(七):条件语句深入了解

文章目录 条件语句深入了解 一、了解条件语句 二、if 语法 1、语法 2、快速体验 三、实例(上网) 1、简单版 2、进阶版 四、if...else... 1、语法 2、实用版:网吧上网 五、多重判断 1、语法 2、实例:工龄判断 六、…

Kotlin高仿微信-第6篇-主页-我的

Kotlin高仿微信-项目实践58篇详细讲解了各个功能点,包括:注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。 Kotlin高仿…

【信管2.3】项目生命周期

项目生命周期上一篇文章内容有点多呀,消化完了吗?其实吧,最主要的就是那三种组织形式而已,别的真没什么,记住它们的优缺点和项目经理的权力大小就可以了。今天我们轻松点,虽说还是挺重要的,但要…

在 Docker 容器内集成 Crontab 定时任务

本文内容Crontab 基础知识Crontab 日志问题参考链接有时候,我们需要在容器内执行某种定时任务。譬如,Kerberos 客户端从 KDC 中获取到的 TGT 默认有效期为 10 个小时,一旦这个票据失效,我们将无法使用单点登录功能。此时&#xff…

谈前端测试的重要性

如果正确完成前端测试,将使我们的用户感到满意,并在使用我们的应用程序时获得良好的性能体验。 根据 Bob 大叔的说法,测试是系统的一部分;许多开发人员认为相反,因为他们没有部署。他宣称这是一个灾难性的观点&#x…

数据可视化之平台数据分析

一 前言 近年来,随着网络技术和电子商务的发展,对科学数据分析的研究提出了更高的要求,数据分析技术随之发展起来。我们可以通过数据分析技术,发现大量金融、通信和商业数据中隐含的规律,从而为决策提供依据。这已成为…

HTML5期末考核大作业 基于HTML+CSS+JavaScript仿王者荣耀首页 游戏网站开发 游戏官网设计与实现

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

Native 内存warp

Native 启动-动态/静态&libc &linker https://www.cnblogs.com/ilocker/p/4645308.html https://www.cnblogs.com/ilocker/p/4645308.html 修改LD_PRELOAD hook java native 库函数 https://blog.csdn.net/m0_57036414/article/details/126811772 Native malloc_debug …

如何用潜类别混合效应模型(Latent Class Mixed Model ,LCMM)分析老年痴呆年龄数据

全文下载链接:http://tecdat.cn/?p24647线性混合模型假设 N 个受试者的群体是同质的,并且在群体水平上由独特的曲线 Xi(t)β 描述(点击文末“阅读原文”获取完整代码数据)。相关视频背景和定义相比之下,潜在类别混合模…

国鸿氢能冲刺港股:年亏损7亿 云浮工业园与青岛城投是股东

雷递网 雷建平 11月28日国鸿氢能科技(嘉兴)股份有限公司(简称:“国鸿氢能”)日前递交招股书,准备在港交所上市。年亏损7亿国鸿氢能成立于2015年6月,是一家以氢燃料电池为核心产品的企业&#x…

MySQL监控主从复制

show slave status; show slave status; 不够准确 使用下面的

JetpackCompose从入门到实战学习笔记3——Text的简单使用

JetpackCompose从入门到实战学习笔记3——Text的简单使用 上一篇文章我们讲解了modifier的一些简单用法,本篇就开始讲解基础控件Text的一些简单用法. 1.源码分析: Composable fun Text(text: AnnotatedString,//要显示的文本modifier: Modifier Modi…

【PAT乙级】一百一十道真题刷后大汇总——C/C++

技巧总结避免精度丢失查询数据是否存在容器之间的比较是否相等缓存区中字符残留问题巧妙输入巧妙使用hash数组简单数学质数俩数最大公约与最小公倍数因子常用的头文件及其内部函数< map >< set >< pair >< string >< vector >< algorithm >…