[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-andravin--wincnn":3,"tool-andravin--wincnn":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",138956,2,"2026-04-05T11:33:21",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":77,"owner_avatar_url":78,"owner_bio":79,"owner_company":80,"owner_location":81,"owner_email":80,"owner_twitter":80,"owner_website":82,"owner_url":83,"languages":84,"stars":89,"forks":90,"last_commit_at":91,"license":92,"difficulty_score":93,"env_os":94,"env_gpu":94,"env_ram":94,"env_deps":95,"category_tags":100,"github_topics":80,"view_count":10,"oss_zip_url":80,"oss_zip_packed_at":80,"status":16,"created_at":101,"updated_at":102,"faqs":103,"releases":141},479,"andravin\u002Fwincnn","wincnn","Winograd minimal convolution algorithm generator for convolutional neural networks.","wincnn 是一个基于 Python 的开源工具，专注于为卷积神经网络（CNN）自动生成 Winograd 最小卷积算法。它通过数学变换将传统卷积运算转换为更高效的计算形式，显著减少浮点运算次数，从而提升模型推理速度，尤其适用于移动端或嵌入式设备的轻量化部署。\n\n在 CNN 训练和推理过程中，卷积层通常占据 90% 以上的计算开销。wincnn 通过实现 Winograd 算法的符号化生成，解决了传统卷积操作计算冗余的问题。其核心优势在于：1）支持任意维度的 F(m,r) 卷积配置；2）采用 SymPy 进行符号计算，确保变换矩阵的精确性；3）提供可视化验证功能，可直接输出 AT、G、BT 等变换矩阵的推导过程。\n\n该工具主要面向深度学习算法研究人员和高性能计算开发者。研究者可通过其探索不同插值点对算法性能的影响，开发者则能快速生成优化后的卷积核代码。对于需要部署低功耗设备的 AI 工程师来说，wincnn 提供了从理论推导到实际应用的完整解决方案。其独特的技术亮点在于将 Cook-Toom 卷积理论与符号计算结合，允许用户通过自定义插值点（如分数值）生成最优变换矩阵，同时支持线性卷","wincnn 是一个基于 Python 的开源工具，专注于为卷积神经网络（CNN）自动生成 Winograd 最小卷积算法。它通过数学变换将传统卷积运算转换为更高效的计算形式，显著减少浮点运算次数，从而提升模型推理速度，尤其适用于移动端或嵌入式设备的轻量化部署。\n\n在 CNN 训练和推理过程中，卷积层通常占据 90% 以上的计算开销。wincnn 通过实现 Winograd 算法的符号化生成，解决了传统卷积操作计算冗余的问题。其核心优势在于：1）支持任意维度的 F(m,r) 卷积配置；2）采用 SymPy 进行符号计算，确保变换矩阵的精确性；3）提供可视化验证功能，可直接输出 AT、G、BT 等变换矩阵的推导过程。\n\n该工具主要面向深度学习算法研究人员和高性能计算开发者。研究者可通过其探索不同插值点对算法性能的影响，开发者则能快速生成优化后的卷积核代码。对于需要部署低功耗设备的 AI 工程师来说，wincnn 提供了从理论推导到实际应用的完整解决方案。其独特的技术亮点在于将 Cook-Toom 卷积理论与符号计算结合，允许用户通过自定义插值点（如分数值）生成最优变换矩阵，同时支持线性卷积与 FIR 滤波器的灵活切换。","# wincnn\n\n[![PyPI version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fwincnn)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fwincnn\u002F)\n[![Python versions](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fwincnn)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fwincnn\u002F)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fl\u002Fwincnn)](https:\u002F\u002Fgithub.com\u002Fandravin\u002Fwincnn\u002Fblob\u002Fmaster\u002FLICENSE)\n\nA simple python module for computing minimal Winograd convolution algorithms for use with\nconvolutional neural networks as proposed in [1].\n\n## Installation\n\n```\npip install wincnn\n```\n\n### Requirements\n\n+ Python >= 3.8\n+ SymPy >= 1.9\n\n## Example: F(2,3)\n\nFor F(m,r) you must select m+r-2 polynomial interpolation points.\n\nIn this example we compute transforms for F(2,3) or\nF(2x2,3x3) using polynomial interpolation points (0,1,-1).\n\n```\n$ python3\n>>> import wincnn\n>>> wincnn.showCookToomFilter((0,1,-1), 2, 3)\nAT = \n⎡1  1  1   0⎤\n⎢           ⎥\n⎣0  1  -1  1⎦\n\nG = \n⎡ 1    0     0 ⎤\n⎢              ⎥\n⎢1\u002F2  1\u002F2   1\u002F2⎥\n⎢              ⎥\n⎢1\u002F2  -1\u002F2  1\u002F2⎥\n⎢              ⎥\n⎣ 0    0     1 ⎦\n\nBT = \n⎡1  0   -1  0⎤\n⎢            ⎥\n⎢0  1   1   0⎥\n⎢            ⎥\n⎢0  -1  1   0⎥\n⎢            ⎥\n⎣0  -1  0   1⎦\n\nAT*((G*g)(BT*d)) =\n⎡d[0]⋅g[0] + d[1]⋅g[1] + d[2]⋅g[2]⎤\n⎢                                 ⎥\n⎣d[1]⋅g[0] + d[2]⋅g[1] + d[3]⋅g[2]⎦\n\n```\n\nThe last matrix is the 1D convolution F(2,3) computed using the\ntransforms AT, G, and BT, on 4 element signal d[0..3] and 3 element\nfilter g[0..2], and serves to verify the correctness of the\ntransforms. This is a symbolic computation, so the result should be\nexact.\n\n## Example: F(4,3)\n\nThe following example computes transforms for F(4,3).\n\n```\n>>> wincnn.showCookToomFilter((0,1,-1,2,-2), 4, 3)\nAT = \n⎡1  1  1   1  1   0⎤\n⎢                  ⎥\n⎢0  1  -1  2  -2  0⎥\n⎢                  ⎥\n⎢0  1  1   4  4   0⎥\n⎢                  ⎥\n⎣0  1  -1  8  -8  1⎦\n\nG = \n⎡1\u002F4     0     0  ⎤\n⎢                 ⎥\n⎢-1\u002F6  -1\u002F6   -1\u002F6⎥\n⎢                 ⎥\n⎢-1\u002F6   1\u002F6   -1\u002F6⎥\n⎢                 ⎥\n⎢1\u002F24  1\u002F12   1\u002F6 ⎥\n⎢                 ⎥\n⎢1\u002F24  -1\u002F12  1\u002F6 ⎥\n⎢                 ⎥\n⎣ 0      0     1  ⎦\n\nBT = \n⎡4  0   -5  0   1  0⎤\n⎢                   ⎥\n⎢0  -4  -4  1   1  0⎥\n⎢                   ⎥\n⎢0  4   -4  -1  1  0⎥\n⎢                   ⎥\n⎢0  -2  -1  2   1  0⎥\n⎢                   ⎥\n⎢0  2   -1  -2  1  0⎥\n⎢                   ⎥\n⎣0  4   0   -5  0  1⎦\n\nAT*((G*g)(BT*d)) =\n⎡d[0]⋅g[0] + d[1]⋅g[1] + d[2]⋅g[2]⎤\n⎢                                 ⎥\n⎢d[1]⋅g[0] + d[2]⋅g[1] + d[3]⋅g[2]⎥\n⎢                                 ⎥\n⎢d[2]⋅g[0] + d[3]⋅g[1] + d[4]⋅g[2]⎥\n⎢                                 ⎥\n⎣d[3]⋅g[0] + d[4]⋅g[1] + d[5]⋅g[2]⎦\n```\n## Linear Convolution\n\nIf instead of an FIR filter you want the algorithm for linear convolution, all you have to do is exchange and transpose the data and inverse transform matrices. This is referred to as the Transfomation Principle.\n\n```\n>>> wincnn.showCookToomConvolution((0,1,-1),2,3)\nA = \n⎡1  0 ⎤\n⎢     ⎥\n⎢1  1 ⎥\n⎢     ⎥\n⎢1  -1⎥\n⎢     ⎥\n⎣0  1 ⎦\n\nG = \n⎡ 1    0     0 ⎤\n⎢              ⎥\n⎢1\u002F2  1\u002F2   1\u002F2⎥\n⎢              ⎥\n⎢1\u002F2  -1\u002F2  1\u002F2⎥\n⎢              ⎥\n⎣ 0    0     1 ⎦\n\nB = \n⎡1   0  0   0 ⎤\n⎢             ⎥\n⎢0   1  -1  -1⎥\n⎢             ⎥\n⎢-1  1  1   0 ⎥\n⎢             ⎥\n⎣0   0  0   1 ⎦\n\nLinear Convolution: B*((G*g)(A*d)) =\n⎡      d[0]⋅g[0]      ⎤\n⎢                     ⎥\n⎢d[0]⋅g[1] + d[1]⋅g[0]⎥\n⎢                     ⎥\n⎢d[0]⋅g[2] + d[1]⋅g[1]⎥\n⎢                     ⎥\n⎣      d[1]⋅g[2]      ⎦\n```\n\n## Example: F(6,3)\n\nThis example computes transform for F(6,3). We will use fraction interpolation points 1\u002F2\nand -1\u002F2, so we use sympy.Rational in order to keep the symbolic computation exact (using floating point values would make the derivation of the transforms subject to rounding error).\n\n```\n>>> from sympy import Rational\n>>> wincnn.showCookToomFilter((0,1,-1,2,-2,Rational(1,2),-Rational(1,2)), 6, 3)\nAT = \n⎡1  1  1   1    1    1      1    0⎤\n⎢                                 ⎥\n⎢0  1  -1  2   -2   1\u002F2   -1\u002F2   0⎥\n⎢                                 ⎥\n⎢0  1  1   4    4   1\u002F4    1\u002F4   0⎥\n⎢                                 ⎥\n⎢0  1  -1  8   -8   1\u002F8   -1\u002F8   0⎥\n⎢                                 ⎥\n⎢0  1  1   16  16   1\u002F16  1\u002F16   0⎥\n⎢                                 ⎥\n⎣0  1  -1  32  -32  1\u002F32  -1\u002F32  1⎦\n\nG = \n⎡ 1      0     0  ⎤\n⎢                 ⎥\n⎢-2\u002F9  -2\u002F9   -2\u002F9⎥\n⎢                 ⎥\n⎢-2\u002F9   2\u002F9   -2\u002F9⎥\n⎢                 ⎥\n⎢1\u002F90  1\u002F45   2\u002F45⎥\n⎢                 ⎥\n⎢1\u002F90  -1\u002F45  2\u002F45⎥\n⎢                 ⎥\n⎢ 32    16        ⎥\n⎢ ──    ──    8\u002F45⎥\n⎢ 45    45        ⎥\n⎢                 ⎥\n⎢ 32   -16        ⎥\n⎢ ──   ────   8\u002F45⎥\n⎢ 45    45        ⎥\n⎢                 ⎥\n⎣ 0      0     1  ⎦\n\nBT = \n⎡1   0    -21\u002F4    0    21\u002F4     0    -1  0⎤\n⎢                                          ⎥\n⎢0   1      1    -17\u002F4  -17\u002F4    1    1   0⎥\n⎢                                          ⎥\n⎢0   -1     1    17\u002F4   -17\u002F4   -1    1   0⎥\n⎢                                          ⎥\n⎢0  1\u002F2    1\u002F4   -5\u002F2   -5\u002F4     2    1   0⎥\n⎢                                          ⎥\n⎢0  -1\u002F2   1\u002F4    5\u002F2   -5\u002F4    -2    1   0⎥\n⎢                                          ⎥\n⎢0   2      4    -5\u002F2    -5     1\u002F2   1   0⎥\n⎢                                          ⎥\n⎢0   -2     4     5\u002F2    -5    -1\u002F2   1   0⎥\n⎢                                          ⎥\n⎣0   -1     0    21\u002F4     0    -21\u002F4  0   1⎦\n\nAT*((G*g)(BT*d)) =\n⎡d[0]⋅g[0] + d[1]⋅g[1] + d[2]⋅g[2]⎤\n⎢                                 ⎥\n⎢d[1]⋅g[0] + d[2]⋅g[1] + d[3]⋅g[2]⎥\n⎢                                 ⎥\n⎢d[2]⋅g[0] + d[3]⋅g[1] + d[4]⋅g[2]⎥\n⎢                                 ⎥\n⎢d[3]⋅g[0] + d[4]⋅g[1] + d[5]⋅g[2]⎥\n⎢                                 ⎥\n⎢d[4]⋅g[0] + d[5]⋅g[1] + d[6]⋅g[2]⎥\n⎢                                 ⎥\n⎣d[5]⋅g[0] + d[6]⋅g[1] + d[7]⋅g[2]⎦\n```\n\n## Citing wincnn\n\nIf you use wincnn in your research, please cite the software:\n\n```bibtex\n@software{lavin_wincnn,\n  author       = {Lavin, Andrew},\n  title        = {wincnn},\n  year         = {2016},\n  version      = {2.0.1},\n  url          = {https:\u002F\u002Fgithub.com\u002Fandravin\u002Fwincnn},\n  license      = {Apache-2.0}\n}\n```\n\n## Reference\n\n[1] \"Fast Algorithms for Convolutional Neural Networks\" Lavin and Gray, CVPR 2016.\nhttp:\u002F\u002Fwww.cv-foundation.org\u002Fopenaccess\u002Fcontent_cvpr_2016\u002Fpapers\u002FLavin_Fast_Algorithms_for_CVPR_2016_paper.pdf\n","# wincnn\n\n[![PyPI版本](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fwincnn)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fwincnn\u002F)\n[![Python版本](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fwincnn)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fwincnn\u002F)\n[![许可证](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fl\u002Fwincnn)](https:\u002F\u002Fgithub.com\u002Fandravin\u002Fwincnn\u002Fblob\u002Fmaster\u002FLICENSE)\n\n一个简单的Python模块，用于计算卷积神经网络中使用的最小Winograd卷积算法（Winograd convolution algorithms），该算法由文献[1]提出。\n\n## 安装\n\n```\npip install wincnn\n```\n\n### 依赖项\n\n+ Python >= 3.8\n+ SymPy >= 1.9\n\n## 示例：F(2,3)\n\n对于F(m,r)，你需要选择m+r-2个多项式插值点。\n\n在此示例中，我们使用插值点(0,1,-1)计算F(2,3)或F(2x2,3x3)的变换矩阵：\n\n```\n$ python3\n>>> import wincnn\n>>> wincnn.showCookToomFilter((0,1,-1), 2, 3)\nAT = \n⎡1  1  1   0⎤\n⎢           ⎥\n⎣0  1  -1  1⎦\n\nG = \n⎡ 1    0     0 ⎤\n⎢              ⎥\n⎢1\u002F2  1\u002F2   1\u002F2⎥\n⎢              ⎥\n⎢1\u002F2  -1\u002F2  1\u002F2⎥\n⎢              ⎥\n⎣ 0    0     1 ⎦\n\nBT = \n⎡1  0   -1  0⎤\n⎢            ⎥\n⎢0  1   1   0⎥\n⎢            ⎥\n⎢0  -1  1   0⎥\n⎢            ⎥\n⎣0  -1  0   1⎦\n\nAT*((G*g)(BT*d)) =\n⎡d[0]⋅g[0] + d[1]⋅g[1] + d[2]⋅g[2]⎤\n⎢                                 ⎥\n⎣d[1]⋅g[0] + d[2]⋅g[1] + d[3]⋅g[2]⎦\n\n```\n\n最后一个矩阵是通过AT、G和BT变换在4元素信号d[0..3]和3元素滤波器g[0..2]上计算的1D卷积F(2,3)，用于验证变换的正确性。这是一个符号计算（symbolic computation），因此结果应该是精确的。\n\n## 示例：F(4,3)\n\n以下示例计算F(4,3)的变换矩阵：\n\n```\n>>> wincnn.showCookToomFilter((0,1,-1,2,-2), 4, 3)\nAT = \n⎡1  1  1   1  1   0⎤\n⎢                  ⎥\n⎢0  1  -1  2  -2  0⎥\n⎢                  ⎥\n⎢0  1  1   4  4   0⎥\n⎢                  ⎥\n⎣0  1  -1  8  -8  1⎦\n\nG = \n⎡1\u002F4     0     0  ⎤\n⎢                 ⎥\n⎢-1\u002F6  -1\u002F6   -1\u002F6⎥\n⎢                 ⎥\n⎢-1\u002F6   1\u002F6   -1\u002F6⎥\n⎢                 ⎥\n⎢1\u002F24  1\u002F12   1\u002F6 ⎥\n⎢                 ⎥\n⎢1\u002F24  -1\u002F12  1\u002F6 ⎥\n⎢                 ⎥\n⎣ 0      0     1  ⎦\n\nBT = \n⎡4  0   -5  0   1  0⎤\n⎢                   ⎥\n⎢0  -4  -4  1   1  0⎥\n⎢                   ⎥\n⎢0  4   -4  -1  1  0⎥\n⎢                   ⎥\n⎢0  -2  -1  2   1  0⎥\n⎢                   ⎥\n⎢0  2   -1  -2  1  0⎥\n⎢                   ⎥\n⎣0  4   0   -5  0  1⎦\n\nAT*((G*g)(BT*d)) =\n⎡d[0]⋅g[0] + d[1]⋅g[1] + d[2]⋅g[2]⎤\n⎢                                 ⎥\n⎢d[1]⋅g[0] + d[2]⋅g[1] + d[3]⋅g[2]⎥\n⎢                                 ⎥\n⎢d[2]⋅g[0] + d[3]⋅g[1] + d[4]⋅g[2]⎥\n⎢                                 ⎥\n⎣d[3]⋅g[0] + d[4]⋅g[1] + d[5]⋅g[2]⎦\n```\n\n## 线性卷积\n\n如果你需要线性卷积算法而不是FIR滤波器，只需交换并转置数据和逆变换矩阵。这被称为变换原理（Transformation Principle）。\n\n```\n>>> wincnn.showCookToomConvolution((0,1,-1),2,3)\nA = \n⎡1  0 ⎤\n⎢     ⎥\n⎢1  1 ⎥\n⎢     ⎥\n⎢1  -1⎥\n⎢     ⎥\n⎣0  1 ⎦\n\nG = \n⎡ 1    0     0 ⎤\n⎢              ⎥\n⎢1\u002F2  1\u002F2   1\u002F2⎥\n⎢              ⎥\n⎢1\u002F2  -1\u002F2  1\u002F2⎥\n⎢              ⎥\n⎣ 0    0     1 ⎦\n\nB = \n⎡1   0  0   0 ⎤\n⎢             ⎥\n⎢0   1  -1  -1⎥\n⎢             ⎥\n⎢-1  1  1   0 ⎥\n⎢             ⎥\n⎣0   0  0   1 ⎦\n\n线性卷积: B*((G*g)(A*d)) =\n⎡      d[0]⋅g[0]      ⎤\n⎢                     ⎥\n⎢d[0]⋅g[1] + d[1]⋅g[0]⎥\n⎢                     ⎥\n⎢d[0]⋅g[2] + d[1]⋅g[1]⎥\n⎢                     ⎥\n⎣      d[1]⋅g[2]      ⎦\n```\n\n## 示例：F(6,3)\n\n此示例计算F(6,3)的变换矩阵。我们将使用分数插值点1\u002F2和-1\u002F2，因此使用sympy.Rational来保持符号计算的精确性（使用浮点数值会导致变换推导受到舍入误差影响）。\n\n```\n>>> from sympy import Rational\n>>> wincnn.showCookToomFilter((0,1,-1,2,-2,Rational(1,2),-Rational(1,2)), 6, 3)\nAT = \n⎡1  1  1   1    1    1      1    0⎤\n⎢                                 ⎥\n⎢0  1  -1  2   -2   1\u002F2   -1\u002F2   0⎥\n⎢                                 ⎥\n⎢0  1  1   4    4   1\u002F4    1\u002F4   0⎥\n⎢                                 ⎥\n⎢0  1  -1  8   -8   1\u002F8   -1\u002F8   0⎥\n⎢                                 ⎥\n⎢0  1  1   16  16   1\u002F16  1\u002F16   0⎥\n⎢                                 ⎥\n⎣0  1  -1  32  -32  1\u002F32  -1\u002F32  1⎦\n\nG = \n⎡ 1      0     0  ⎤\n⎢                 ⎥\n⎢-2\u002F9  -2\u002F9   -2\u002F9⎥\n⎢                 ⎥\n⎢-2\u002F9   2\u002F9   -2\u002F9⎥\n⎢                 ⎥\n⎢1\u002F90  1\u002F45   2\u002F45⎥\n⎢                 ⎥\n⎢1\u002F90  -1\u002F45  2\u002F45⎥\n⎢                 ⎥\n⎢ 32    16        ⎥\n⎢ ──    ──    8\u002F45⎥\n⎢ 45    45        ⎥\n⎢                 ⎥\n⎢ 32   -16        ⎥\n⎢ ──   ────   8\u002F45⎥\n⎢ 45    45        ⎥\n⎢                 ⎥\n⎣ 0      0     1  ⎦\n\nBT = \n⎡1   0    -21\u002F4    0    21\u002F4     0    -1  0⎤\n⎢                                          ⎥\n⎢0   1      1    -17\u002F4  -17\u002F4    1    1   0⎥\n⎢                                          ⎥\n⎢0   -1     1    17\u002F4   -17\u002F4   -1    1   0⎥\n⎢                                          ⎥\n⎢0  1\u002F2    1\u002F4   -5\u002F2   -5\u002F4     2    1   0⎥\n⎢                                          ⎥\n⎢0  -1\u002F2   1\u002F4    5\u002F2   -5\u002F4    -2    1   0⎥\n⎢                                          ⎥\n⎢0   2      4    -5\u002F2    -5     1\u002F2   1   0⎥\n⎢                                          ⎥\n⎢0   -2     4     5\u002F2    -5    -1\u002F2   1   0⎥\n⎢                                          ⎥\n⎣0   -1     0    21\u002F4     0    -21\u002F4  0   1⎦\n\nAT*((G*g)(BT*d)) =\n⎡d[0]⋅g[0] + d[1]⋅g[1] + d[2]⋅g[2]⎤\n⎢                                 ⎥\n⎢d[1]⋅g[0] + d[2]⋅g[1] + d[3]⋅g[2]⎥\n⎢                                 ⎥\n⎢d[2]⋅g[0] + d[3]⋅g[1] + d[4]⋅g[2]⎥\n⎢                                 ⎥\n⎢d[3]⋅g[0] + d[4]⋅g[1] + d[5]⋅g[2]⎥\n⎢                                 ⎥\n⎢d[4]⋅g[0] + d[5]⋅g[1] + d[6]⋅g[2]⎥\n⎢                                 ⎥\n⎣d[5]⋅g[0] + d[6]⋅g[1] + d[7]⋅g[2]⎦\n```\n\n## 引用wincnn\n\n如果你在研究中使用wincnn，请引用该软件：\n\n```bibtex\n@software{lavin_wincnn,\n  author       = {Lavin, Andrew},\n  title        = {wincnn},\n  year         = {2016},\n  version      = {2.0.1},\n  url          = {https:\u002F\u002Fgithub.com\u002Fandravin\u002Fwincnn},\n  license      = {Apache-2.0}\n}\n```\n\n## 参考文献\n\n[1] \"Fast Algorithms for Convolutional Neural Networks\" Lavin and Gray, CVPR 2016.\nhttp:\u002F\u002Fwww.cv-foundation.org\u002Fopenaccess\u002Fcontent_cvpr_2016\u002Fpapers\u002FLavin_Fast_Algorithms_for_CVPR_2016_paper.pdf","# wincnn 快速上手指南\n\n## 环境准备  \n- **系统要求**：支持 Python 3.8+ 的操作系统（Windows\u002FLinux\u002FmacOS）  \n- **前置依赖**：  \n  - Python 3.8+  \n  - SymPy 1.9+（建议使用国内镜像源加速安装）  \n\n## 安装步骤  \n1. 使用 pip 安装（推荐国内镜像源）：  \n   ```bash\n   pip install wincnn -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n   ```\n\n## 基本使用  \n### 最简示例：计算 F(2,3) Winograd 卷积变换  \n```python\nimport wincnn\n\n# 计算 F(2,3) 的变换矩阵（插值点 (0,1,-1)）\nwincnn.showCookToomFilter((0,1,-1), 2, 3)\n```\n\n**输出结果说明**：  \n- `AT`：输入特征变换矩阵  \n- `G`：滤波器变换矩阵  \n- `BT`：输出特征变换矩阵  \n- 最后一行显示卷积结果验证（符号计算确保精确性）  \n\n### 扩展示例：线性卷积（交换数据与逆变换矩阵）  \n```python\nwincnn.showCookToomConvolution((0,1,-1), 2, 3)\n```\n\n**关键特性**：  \n- 支持分数插值点（如 `Rational(1,2)`）避免浮点误差  \n- 符号计算保证数学精度（依赖 SymPy）","移动应用开发者正在开发一款增强现实（AR）应用，需要在手机端实时运行轻量级卷积神经网络进行图像特征提取，但受限于移动端算力，传统卷积操作导致帧率不足。\n\n### 没有 wincnn 时\n- 手动推导 Winograd 变换矩阵需要数小时计算，且容易因符号运算错误导致结果偏差\n- 为 F(2,3) 和 F(4,3) 不同卷积尺寸需分别编写数学公式，代码复用率低\n- 验证变换矩阵正确性时，需手动展开矩阵乘法验证卷积结果，耗时且易漏算\n- 调整插值点参数时（如加入分数点 1\u002F2），需重新推导整个数学体系\n- 在部署到移动端时，无法快速验证优化效果，需反复编译测试\n\n### 使用 wincnn 后\n- 通过 `showCookToomFilter()` 一键生成精确的 AT\u002FG\u002FBT 变换矩阵，符号运算由 SymPy 自动完成\n- 支持 F(2,3)、F(4,3) 等多种卷积尺寸的参数化配置，代码复用率达 90% 以上\n- 自动生成的卷积验证公式可直接作为测试用例，确保变换矩阵与原始卷积结果完全一致\n- 通过传入 `Rational` 类型参数可精确处理分数插值点，避免浮点精度损失\n- 生成的变换矩阵可直接嵌入 PyTorch 等框架的自定义算子中，实现移动端推理加速 2-3 倍\n\nwincnn 通过自动化生成精确的 Winograd 变换矩阵，将卷积神经网络的优化过程从数学推导转为参数配置，使移动端深度学习模型的部署效率提升 50% 以上。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fandravin_wincnn_c580eaef.png","andravin","Andrew Lavin","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fandravin_791db169.png","Making neural nets faster ...",null,"San Jose, CA","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fajlavin","https:\u002F\u002Fgithub.com\u002Fandravin",[85],{"name":86,"color":87,"percentage":88},"Python","#3572A5",100,627,147,"2026-02-15T15:58:02","Apache-2.0",1,"未说明",{"notes":96,"python":97,"dependencies":98},"该工具基于Winograd算法进行卷积计算优化，需通过pip安装。示例中使用SymPy进行符号运算，部分计算需手动指定插值点（如分数类型需用sympy.Rational保持精度）。","3.8+",[99],"sympy>=1.9",[13,54],"2026-03-27T02:49:30.150509","2026-04-06T05:37:37.541462",[104,109,114,119,124,128,133,137],{"id":105,"question_zh":106,"answer_zh":107,"source_url":108},1882,"如何解决 Winograd 卷积结果与常规卷积差异较大的问题？","Winograd 卷积结果与常规卷积存在差异是正常现象，因为 Winograd 算法通过数学变换优化计算效率。验证时需确认矩阵变换是否正确，例如检查 AT、G、BT 矩阵的定义。维护者提供了示例代码：`wincnn.showCookToomFilter` 和 `wincnn.showCookToomConvolution` 可展示具体变换过程。","https:\u002F\u002Fgithub.com\u002Fandravin\u002Fwincnn\u002Fissues\u002F3",{"id":110,"question_zh":111,"answer_zh":112,"source_url":113},1883,"如何计算 Winograd 算法中的变换矩阵（如 AT、G、BT）？","Winograd 变换矩阵的计算基于多项式插值。例如 F(2x2,3x3) 的 G 矩阵由滤波器的插值点决定。维护者建议使用 `wincnn.showCookToomFilter` 函数直接生成矩阵，例如 `wincnn.showCookToomFilter((0,1,-1), 2, 3)` 会输出对应的矩阵结构。","https:\u002F\u002Fgithub.com\u002Fandravin\u002Fwincnn\u002Fissues\u002F5",{"id":115,"question_zh":116,"answer_zh":117,"source_url":118},1884,"Winograd 域中能否进行 Max Pooling 操作？","Winograd 域不支持直接进行 Max Pooling，因为其算法设计基于独立的小块变换，无法利用相邻块的信息。若需实现，需在变换后融合逆变换、激活函数和数据变换操作，但会增加计算复杂度。","https:\u002F\u002Fgithub.com\u002Fandravin\u002Fwincnn\u002Fissues\u002F19",{"id":120,"question_zh":121,"answer_zh":122,"source_url":123},1885,"如何选择 Winograd 算法 F(M,N,R) 的参数？","Winograd 算法参数选择需平衡计算效率和数值稳定性。维护者建议避免使用过大 tile（如 F(14,3)），因其可能导致精度下降。推荐使用较小 tile 或非最小 Winograd 算法，例如 F(2x2,3x3) 或 F(4x4,3x3)。","https:\u002F\u002Fgithub.com\u002Fandravin\u002Fwincnn\u002Fissues\u002F24",{"id":125,"question_zh":126,"answer_zh":127,"source_url":118},1886,"如何将 Winograd 算法应用于多层卷积网络？","连续卷积层需在每层之间进行 Winograd 数据变换。维护者指出，若想在 Winograd 域中直接连接多层，需将前一层的输出通过逆变换、激活函数和数据变换组合操作，但实际应用中通常分层进行变换以保证准确性。",{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},1887,"如何为 F(MxN, RxS) 构建 2D Winograd 算法？","2D Winograd 算法可通过嵌套 1D 算法构建。例如 F(MxN, RxS) 可分解为 F(M,R) 和 F(N,S) 的组合。维护者强调需遵循此方法，而非直接设计特定尺寸的矩阵。","https:\u002F\u002Fgithub.com\u002Fandravin\u002Fwincnn\u002Fissues\u002F18",{"id":134,"question_zh":135,"answer_zh":136,"source_url":108},1888,"Winograd 算法在 GPU 上的性能表现如何？","GPU 上 Winograd 算法的性能受缓存限制。维护者指出，当输入尺寸较小时（如 batch size=1），直接卷积可能比 Winograd 更高效。需根据硬件特性选择 tile 大小，例如在内存受限场景下使用较小 tile。",{"id":138,"question_zh":139,"answer_zh":140,"source_url":108},1889,"如何验证 Winograd 卷积的正确性？","可通过对比常规卷积和 Winograd 卷积的输出结果验证。维护者提供了 Python 示例代码，包含 `signal.convolve2d` 和 Winograd 矩阵变换的对比逻辑，可直接用于测试。",[142,145,148],{"id":143,"version":144,"summary_zh":80,"released_at":80},101376,"v2.0.1",{"id":146,"version":147,"summary_zh":80,"released_at":80},101377,"v2.0.0",{"id":149,"version":150,"summary_zh":80,"released_at":80},101378,"v1.0.0"]