wincnn API参考:cookToomFilter、filterVerify等4个公开函数与8个矩阵工具完整清单 wincnn API参考cookToomFilter、filterVerify等4个公开函数与8个矩阵工具完整清单【免费下载链接】wincnnWinograd minimal convolution algorithm generator for convolutional neural networks.项目地址: https://gitcode.com/gh_mirrors/wi/wincnnwincnn是一个 Python 编写的Winograd 最小卷积算法生成器专为卷积神经网络CNN加速而设计。它的核心能力是给定插值点、输出尺寸和滤波器尺寸一键推导 F(n, r) 变换矩阵组 AT、G、BT并可用filterVerify做精确的符号验证。本文带你完整掌握wincnn API 的 4 个公开函数、8 个矩阵工具与 4 个分数位置常量新手 3 分钟即可上手。 一句话认识 wincnn它解决什么问题直接卷积的计算量与滤波器尺寸平方成正比。Winograd 最小算法把卷积转成变换 → 逐元素乘法 → 逆变换乘法次数可被证明达到理论下界。wincnn 用 SymPy 做符号推导生成的矩阵精确无舍入误差特别适合 CNN 里大量出现的小尺寸卷积如 3×3。项目信息说明安装方式pip install wincnn运行要求Python ≥ 3.8SymPy ≥ 1.9源码位置wincnn.py单文件实现离线获取git clone https://gitcode.com/gh_mirrors/wi/wincnn wincnn API 核心4 个公开函数详解1️⃣ cookToomFilter一行代码生成变换矩阵这是 wincnn API 的核心入口源码见wincnn.py第 95–141 行。签名cookToomFilter(a, n, r, fractionsInFractionsInG)参数含义a插值点序列至少需要n r - 2个n输出尺寸r滤波器卷积核尺寸fractionsIn可选控制分数出现在哪块矩阵见下文常量表返回四元组 (AT, G, BT, f)形状一目了然矩阵形状作用ATn × (nr−1)数据前向变换G(nr−1) × r滤波器变换BT(nr−1) × n数据逆变换f对角矩阵分数放置系数最经典的 F(2,3) 用法只需一行wincnn.cookToomFilter((0, 1, -1), 2, 3)它得到的变换矩阵与 README 中 F(2,3)、F(4,3) 示例完全一致可以直接用于推导 2×2 输出、3×3 卷积核的 Winograd 算子。2️⃣ filterVerify符号级验证 FIR 滤波器filterVerify(n, r, AT, G, BT)wincnn.py第 144 行会计算AT · ((G·g) ⊙ (BT·d))返回一列符号表达式。若变换正确结果恒等于d 与 g 的标准线性卷积。由于是符号计算验证结论是严格的而非近似数值比较。3️⃣ convolutionVerify符号级验证线性卷积convolutionVerify(n, r, B, G, A)第 165 行计算B · ((G·g) ⊙ (A·d))。注意线性卷积算法与 FIR 算法用的是同一套变换——把 AT、BT 分别转置得到 A、B 即可这就是论文中说的Transformation Principle变换原理。4️⃣ showCookToomFilter / showCookToomConvolution一键打印两个演示函数第 185、218 行会打印全部矩阵并自动跑一次符号验证是新手最快理解 Winograd 变换结构的方式wincnn.showCookToomFilter((0, 1, -1), 2, 3) wincnn.showCookToomConvolution((0, 1, -1), 2, 3) 8 个矩阵工具函数完整清单变换矩阵并非凭空产生wincnn API 底层由一组矩阵构造工具拼装而成全部集中在wincnn.py前 90 行工具函数行号构造的矩阵作用At(a, m, n)16范德蒙幂矩阵元素为 a[i]ⁿ插值基础A(a, m, n)20数据变换矩阵在 At 上补一行单位行T(a, n)26伴随矩阵多项式乘法的核心Lx(a, n)32插值多项式列拉格朗德基函数L 的内部积木F(a, n)48节点差积拉格朗日插值的分母Fdiag(a, n)60对角矩阵F 的对角化版本FdiagPlus1(a, n)65带角单位行生成四元组中的 f 矩阵L(a, n)72拉格朗日插值矩阵由 Lx 与 F 相除得到Bt(a, n)79逆变换基础矩阵L × TB 的内部积木B(a, n)83数据逆变换矩阵在 Bt 上补一行单位行 其中Lx、Bt属于拼装L、B的内部构件日常使用无需直接调用。️ 4 个分数位置常量决定分数放哪wincnn.py第 89–92 行定义了 4 个常量控制有理分数落在哪块矩阵中——这对把算法落地到定点/整型推理很关键常量值分数所在位置FractionsInG0默认分数集中在 G 矩阵FractionsInA1分数集中在 AT 矩阵FractionsInB2分数集中在 BT 矩阵FractionsInF3分数全部抽到对角矩阵 f 中选FractionsInF时三块主矩阵全部是整数可先做整数乘法、最后再乘 f 中的分数便于硬件或低精度实现。✅ 快速自查用内置测试套件验证环境tests/test_wincnn.py内置 6 个 pytest 用例覆盖 F(2,3)、F(4,3)、F(6,3) 三组变换的期望矩阵以及filterVerify、convolutionVerify的符号验证。克隆仓库后运行pytest全绿即代表 wincnn API 工作正常。❓ 新手常见问题FAQ 精选插值点怎么选优先取小整数如(0, 1, -1, 2, -2)。若需分数插值点如 ±1/2请务必用sympy.Rational保持精确推导README 的 F(6,3) 示例就是这么做的。为什么比 FFT 更快Winograd 最小算法每个输入点只需 1 次实数乘法DFT 约需 1.5–2 次对小尺寸 3×3 卷积优势明显。支持 stride / 空洞卷积吗支持。可先用抽取分解decimation转成无步长卷积再套用 Winograd详见FAQ.md。变换变大不稳定Cook-Toom 算法数值稳定性随尺寸下降但 CNN 常用的小卷积中收益远大于代价这也是 FAQ 中被反复讨论的取舍点。 项目文件导航文件内容wincnn.py全部源码4 个公开函数 8 个矩阵工具 4 个常量tests/test_wincnn.pypytest 测试套件含期望变换矩阵README.mdF(2,3)、F(4,3)、F(6,3) 三个可运行示例FAQ.md算法原理、运算量分析、扩展卷积问答2464-supp.pdfCVPR 2016 原论文补充材料Winograd 综述CHANGELOG.md版本历史当前 2.0.1CITATION.cff学术引用信息按生成 → 验证 → 落地三步走cookToomFilter 出矩阵filterVerify / convolutionVerify 验正确性fractionsIn 定落地形态——这就是 wincnn API 的全部精华。【免费下载链接】wincnnWinograd minimal convolution algorithm generator for convolutional neural networks.项目地址: https://gitcode.com/gh_mirrors/wi/wincnn创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

最新新闻

从场景标题到对白:Fountain剧本格式全部12种元素类型速查清单

从场景标题到对白:Fountain剧本格式全部12种元素类型速查清单

从场景标题到对白:Fountain剧本格式全部12种元素类型速查清单 【免费下载链接】Fountain An open source implementation of the Fountain screenplay formatting language. 项目地址: https://gitcode.com/gh_mirrors/foun/Fountain Fountain 是一种用纯文本…

2026/8/26 15:11:25
C++机器视觉缺陷检测源码(Halcon 64位 + Qt5.8 + VS2015)完整项目包

C++机器视觉缺陷检测源码(Halcon 64位 + Qt5.8 + VS2015)完整项目包

温馨提示:文末有联系方式 项目概述 本套源码是一套成熟稳定的工业级机器视觉缺陷检测解决方案,采用C语言开发,底层调用Halcon 64位图像处理库,前端基于Qt5.8构建跨平台图形界面,开发环境为Visual Studio 2015&#xff…

2026/8/26 15:11:25
零依赖仅3KB的文本高亮魔法:Fokus JavaScript高亮库完整入门指南

零依赖仅3KB的文本高亮魔法:Fokus JavaScript高亮库完整入门指南

零依赖仅3KB的文本高亮魔法:Fokus JavaScript高亮库完整入门指南 【免费下载链接】Fokus 项目地址: https://gitcode.com/gh_mirrors/fo/Fokus Fokus 是一款零依赖、体积仅约 3KB 的 JavaScript 文本高亮库:只要用户选中页面上的任意内容&#x…

2026/8/26 15:11:25
为什么query-json的错误消息这么友好?6种会教你修复的JSON查询错误详解

为什么query-json的错误消息这么友好?6种会教你修复的JSON查询错误详解

为什么query-json的错误消息这么友好?6种会教你修复的JSON查询错误详解 【免费下载链接】query-json Faster, simpler and more portable implementation of jq-inspired language in OCaml 项目地址: https://gitcode.com/gh_mirrors/qu/query-json query-j…

2026/8/26 15:11:25
MozStumbler完整指南:Mozilla开源WiFi嗅探工具如何众包构建全球定位数据库

MozStumbler完整指南:Mozilla开源WiFi嗅探工具如何众包构建全球定位数据库

MozStumbler完整指南:Mozilla开源WiFi嗅探工具如何众包构建全球定位数据库 【免费下载链接】MozStumbler Android Stumbler for Mozilla 项目地址: https://gitcode.com/gh_mirrors/mo/MozStumbler MozStumbler 是 Mozilla 开发的开源 Android WiFi嗅探工具&…

2026/8/26 15:11:25
Blender Launcher V2设置全解析:常规、外观、代理与启动参数五大类选项指南

Blender Launcher V2设置全解析:常规、外观、代理与启动参数五大类选项指南

Blender Launcher V2设置全解析:常规、外观、代理与启动参数五大类选项指南 【免费下载链接】Blender-Launcher-V2 Standalone client for managing official builds of Blender 3D and its popular forks 项目地址: https://gitcode.com/gh_mirrors/bl/Blender-L…

2026/8/26 15:06:24