[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-ENOT-AutoDL--onnx2torch":3,"tool-ENOT-AutoDL--onnx2torch":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},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,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},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 真正成长为懂上",148568,2,"2026-04-09T23:34:24",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108111,"2026-04-08T11:23:26",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":10,"last_commit_at":59,"category_tags":60,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":77,"owner_email":77,"owner_twitter":77,"owner_website":78,"owner_url":79,"languages":80,"stars":85,"forks":86,"last_commit_at":87,"license":88,"difficulty_score":89,"env_os":90,"env_gpu":91,"env_ram":90,"env_deps":92,"category_tags":98,"github_topics":99,"view_count":32,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":103,"updated_at":104,"faqs":105,"releases":136},6053,"ENOT-AutoDL\u002Fonnx2torch","onnx2torch","Convert ONNX models to PyTorch.","onnx2torch 是一款专为深度学习开发者设计的开源转换工具，核心功能是将 ONNX 格式的模型无缝转换为 PyTorch 模型。在人工智能工作流中，许多模型以通用的 ONNX 格式交付，但研究人员往往需要在 PyTorch 框架下进行进一步的微调、实验或集成。onnx2torch 正是为了解决这一跨框架迁移难题而生，让用户无需手动重写网络结构，即可快速将模型“带回”PyTorch 生态。\n\n该工具的使用极为简便，只需调用一个简单的 `convert` 函数，传入 ONNX 模型路径或对象，即可得到对应的 PyTorch 模型。转换后的模型完全兼容原生 PyTorch 的操作习惯，支持直接在前向传播中使用，甚至可以通过标准接口再次导出为 ONNX 格式，实现了灵活的双向互通。其独特的技术亮点在于高度的可扩展性：如果遇到尚未支持的算子，用户可以轻松编写自定义的 PyTorch 层并通过装饰器注册，从而扩展工具的支持范围。\n\n目前，onnx2torch 已广泛验证了包括 DeepLabV3+、YOLOv5、ResNet 及 MobileNet 在内的多种主流分割、检测和分类模型。它非常","onnx2torch 是一款专为深度学习开发者设计的开源转换工具，核心功能是将 ONNX 格式的模型无缝转换为 PyTorch 模型。在人工智能工作流中，许多模型以通用的 ONNX 格式交付，但研究人员往往需要在 PyTorch 框架下进行进一步的微调、实验或集成。onnx2torch 正是为了解决这一跨框架迁移难题而生，让用户无需手动重写网络结构，即可快速将模型“带回”PyTorch 生态。\n\n该工具的使用极为简便，只需调用一个简单的 `convert` 函数，传入 ONNX 模型路径或对象，即可得到对应的 PyTorch 模型。转换后的模型完全兼容原生 PyTorch 的操作习惯，支持直接在前向传播中使用，甚至可以通过标准接口再次导出为 ONNX 格式，实现了灵活的双向互通。其独特的技术亮点在于高度的可扩展性：如果遇到尚未支持的算子，用户可以轻松编写自定义的 PyTorch 层并通过装饰器注册，从而扩展工具的支持范围。\n\n目前，onnx2torch 已广泛验证了包括 DeepLabV3+、YOLOv5、ResNet 及 MobileNet 在内的多种主流分割、检测和分类模型。它非常适合需要在不同框架间切换的算法工程师、科研人员以及希望复用现有 ONNX 模型的 PyTorch 用户，是提升模型开发效率的实用助手。","\u003Cdiv align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FENOT-AutoDL_onnx2torch_readme_d81d29b4005d.png\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FENOT-AutoDL_onnx2torch_readme_f68a38ca0b11.png\">\n\u003C\u002Fdiv>\n\n\u003Cp align=\"center\">\n    \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fonnx2torch\">\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FENOT-AutoDL_onnx2torch_readme_512ad79227b2.png\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Fonnx2torch\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fconda\u002Fvn\u002Fconda-forge\u002Fonnx2torch\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fonnx2torch\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002FENOT-AutoDL\u002Fonnx2torch?color=blue\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fonnx2torch\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fdm\u002Fonnx2torch?color=blue\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FENOT-AutoDL\u002Fonnx2torch\u002Fstargazers\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FENOT-AutoDL\u002Fonnx2torch.svg?style=social&label=Star&maxAge=2592000\" \u002F>\n    \u003C\u002Fa>\n    \u003Cbr>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpsf\u002Fblack\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode%20style-black-black?color=blue\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpre-commit\u002Fpre-commit\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpre--commit-enabled-blue?logo=pre-commit\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fconventionalcommits.org\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FConventional%20Commits-1.0.0-%23FE5196?logo=conventionalcommits&logoColor=white&color=blue\" \u002F>\n    \u003C\u002Fa>\n\u003C\u002Fp>\n\nonnx2torch is an ONNX to PyTorch converter.\nOur converter:\n\n- Is easy to use – Convert the ONNX model with the function call `convert`;\n- Is easy to extend – Write your own custom layer in PyTorch and register it with `@add_converter`;\n- Convert back to ONNX – You can convert the model back to ONNX using the `torch.onnx.export` function.\n\nIf you find an issue, please [let us know](https:\u002F\u002Fgithub.com\u002FENOT-AutoDL\u002Fonnx2torch\u002Fissues)!\nAnd feel free to create merge requests.\n\nPlease note that this converter covers only a limited number of PyTorch \u002F ONNX models and operations.\nLet us know which models you use or want to convert from ONNX to PyTorch [here](https:\u002F\u002Fgithub.com\u002FENOT-AutoDL\u002Fonnx2torch\u002Fdiscussions).\n\n## Installation\n\n```bash\npip install onnx2torch\n```\n\nor\n\n```bash\nconda install -c conda-forge onnx2torch\n```\n\n## Usage\n\nBelow you can find some examples of use.\n\n### Convert\n\n```python\nimport onnx\nimport torch\nfrom onnx2torch import convert\n\n# Path to ONNX model\nonnx_model_path = \"\u002Fsome\u002Fpath\u002Fmobile_net_v2.onnx\"\n# You can pass the path to the onnx model to convert it or...\ntorch_model_1 = convert(onnx_model_path)\n\n# Or you can load a regular onnx model and pass it to the converter\nonnx_model = onnx.load(onnx_model_path)\ntorch_model_2 = convert(onnx_model)\n```\n\n### Execute\n\nWe can execute the returned `PyTorch model` in the same way as the original torch model.\n\n```python\nimport onnxruntime as ort\n\n# Create example data\nx = torch.ones((1, 2, 224, 224)).cuda()\n\nout_torch = torch_model_1(x)\n\nort_sess = ort.InferenceSession(onnx_model_path)\noutputs_ort = ort_sess.run(None, {\"input\": x.numpy()})\n\n# Check the Onnx output against PyTorch\nprint(torch.max(torch.abs(outputs_ort - out_torch.detach().numpy())))\nprint(np.allclose(outputs_ort, out_torch.detach().numpy(), atol=1.0e-7))\n```\n\n## Models\n\nWe have tested the following models:\n\nSegmentation models:\n\n- [x] DeepLabV3+\n- [x] DeepLabV3 ResNet-50 (TorchVision)\n- [x] HRNet\n- [x] UNet (TorchVision)\n- [x] FCN ResNet-50 (TorchVision)\n- [x] LRASPP MobileNetV3 (TorchVision)\n\nDetection from MMdetection:\n\n- [x] [SSDLite with MobileNetV2 backbone](https:\u002F\u002Fgithub.com\u002Fopen-mmlab\u002Fmmdetection)\n- [x] [RetinaNet R50](https:\u002F\u002Fgithub.com\u002Fopen-mmlab\u002Fmmdetection)\n- [x] [SSD300 with VGG backbone](https:\u002F\u002Fgithub.com\u002Fopen-mmlab\u002Fmmdetection)\n- [x] [YOLOv3 d53](https:\u002F\u002Fgithub.com\u002Fopen-mmlab\u002Fmmdetection)\n- [x] [YOLOv5](https:\u002F\u002Fgithub.com\u002Fultralytics\u002Fyolov5)\n\nClassification from __TorchVision__:\n\n- [x] ResNet-18\n- [x] ResNet-50\n- [x] MobileNetV2\n- [x] MobileNetV3 Large\n- [x] EfficientNet-B{0, 1, 2, 3}\n- [x] WideResNet-50\n- [x] ResNext-50\n- [x] VGG-16\n- [x] GoogLeNet\n- [x] MnasNet\n- [x] RegNet\n\nTransformers:\n\n- [x] ViT\n- [x] Swin\n- [x] GPT-J\n\n#### :page_facing_up: List of currently supported operations can be founded [here](operators.md).\n\n## How to add new operations to converter\n\nHere we show how to extend onnx2torch with new ONNX operation, that supported by both PyTorch and ONNX\n\n\u003Cdetails>\n\u003Csummary>and has the same behaviour\u003C\u002Fsummary>\n\nAn example of such a module is [Relu](.\u002Fonnx2torch\u002Fnode_converters\u002Factivations.py)\n\n```python\n@add_converter(operation_type=\"Relu\", version=6)\n@add_converter(operation_type=\"Relu\", version=13)\n@add_converter(operation_type=\"Relu\", version=14)\ndef _(node: OnnxNode, graph: OnnxGraph) -> OperationConverterResult:\n    return OperationConverterResult(\n        torch_module=nn.ReLU(),\n        onnx_mapping=onnx_mapping_from_node(node=node),\n    )\n```\n\nHere we have registered an operation named `Relu` for opset versions 6, 13, 14.\nNote that the `torch_module` argument in `OperationConverterResult` must be a torch.nn.Module, not just a callable object!\nIf Operation's behaviour differs from one opset version to another, you should implement it separately.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>but has different behaviour\u003C\u002Fsummary>\n\nAn example of such a module is [ScatterND](.\u002Fonnx2torch\u002Fnode_converters\u002Fscatter_nd.py)\n\n```python\n# It is recommended to use Enum for string ONNX attributes.\nclass ReductionOnnxAttr(Enum):\n    NONE = \"none\"\n    ADD = \"add\"\n    MUL = \"mul\"\n\n\nclass OnnxScatterND(nn.Module, OnnxToTorchModuleWithCustomExport):\n    def __init__(self, reduction: ReductionOnnxAttr):\n        super().__init__()\n        self._reduction = reduction\n\n    # The following method should return ONNX attributes with their values as a dictionary.\n    # The number of attributes, their names and values depend on opset version;\n    # method should return correct set of attributes.\n    # Note: add type-postfix for each key: reduction -> reduction_s, where s means \"string\".\n    def _onnx_attrs(self, opset_version: int) -> Dict[str, Any]:\n        onnx_attrs: Dict[str, Any] = {}\n\n        # Here we handle opset versions \u003C 16 where there is no \"reduction\" attribute.\n        if opset_version \u003C 16:\n            if self._reduction != ReductionOnnxAttr.NONE:\n                raise ValueError(\n                    \"ScatterND from opset \u003C 16 does not support\"\n                    f\"reduction attribute != {ReductionOnnxAttr.NONE.value},\"\n                    f\"got {self._reduction.value}\"\n                )\n            return onnx_attrs\n\n        onnx_attrs[\"reduction_s\"] = self._reduction.value\n        return onnx_attrs\n\n    def forward(\n        self,\n        data: torch.Tensor,\n        indices: torch.Tensor,\n        updates: torch.Tensor,\n    ) -> torch.Tensor:\n        def _forward():\n            # ScatterND forward implementation...\n            return output\n\n        if torch.onnx.is_in_onnx_export():\n            # Please follow our convention, args consists of:\n            # forward function, operation type, operation inputs, operation attributes.\n            onnx_attrs = self._onnx_attrs(opset_version=get_onnx_version())\n            return DefaultExportToOnnx.export(\n                _forward, \"ScatterND\", data, indices, updates, onnx_attrs\n            )\n\n        return _forward()\n\n\n@add_converter(operation_type=\"ScatterND\", version=11)\n@add_converter(operation_type=\"ScatterND\", version=13)\n@add_converter(operation_type=\"ScatterND\", version=16)\ndef _(node: OnnxNode, graph: OnnxGraph) -> OperationConverterResult:\n    node_attributes = node.attributes\n    reduction = ReductionOnnxAttr(node_attributes.get(\"reduction\", \"none\"))\n    return OperationConverterResult(\n        torch_module=OnnxScatterND(reduction=reduction),\n        onnx_mapping=onnx_mapping_from_node(node=node),\n    )\n```\n\nHere we have used a trick to convert the model from torch back to ONNX by defining the custom `_ScatterNDExportToOnnx`.\n\n\u003C\u002Fdetails>\n\n## Opset version workaround\n\nIncase you are using a model with older opset, try the following workaround:\n\n[ONNX Version Conversion - Official Docs](https:\u002F\u002Fgithub.com\u002Fonnx\u002Fonnx\u002Fblob\u002Fmain\u002Fdocs\u002FPythonAPIOverview.md#converting-version-of-an-onnx-model-within-default-domain-aionnx)\n\n\u003Cdetails>\n\u003Csummary>Example\u003C\u002Fsummary>\n\n```python\nimport onnx\nfrom onnx import version_converter\nimport torch\nfrom onnx2torch import convert\n\n# Load the ONNX model.\nmodel = onnx.load(\"model.onnx\")\n# Convert the model to the target version.\ntarget_version = 13\nconverted_model = version_converter.convert_version(model, target_version)\n# Convert to torch.\ntorch_model = convert(converted_model)\ntorch.save(torch_model, \"model.pt\")\n```\n\n\u003C\u002Fdetails>\n\nNote: use this only when the model does not convert to PyTorch using the existing opset version. Result might vary.\n\n## Citation\n\nTo cite onnx2torch use `Cite this repository` button, or:\n\n```\n@misc{onnx2torch,\n  title={onnx2torch},\n  author={ENOT developers and Kalgin, Igor and Yanchenko, Arseny and Ivanov, Pyoter and Goncharenko, Alexander},\n  year={2021},\n  howpublished={\\url{https:\u002F\u002Fenot.ai\u002F}},\n  note={Version: x.y.z}\n}\n```\n\n## Acknowledgments\n\nThanks to Dmitry Chudakov [@cakeofwar42](https:\u002F\u002Fgithub.com\u002Fcakeofwar42) for his contributions.\\\nSpecial thanks to Andrey Denisov [@denisovap2013](https:\u002F\u002Fgithub.com\u002Fdenisovap2013) for the logo design.\n","\u003Cdiv align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FENOT-AutoDL_onnx2torch_readme_d81d29b4005d.png\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FENOT-AutoDL_onnx2torch_readme_f68a38ca0b11.png\">\n\u003C\u002Fdiv>\n\n\u003Cp align=\"center\">\n    \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fonnx2torch\">\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FENOT-AutoDL_onnx2torch_readme_512ad79227b2.png\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Fonnx2torch\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fconda\u002Fvn\u002Fconda-forge\u002Fonnx2torch\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fonnx2torch\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002FENOT-AutoDL\u002Fonnx2torch?color=blue\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fonnx2torch\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fdm\u002Fonnx2torch?color=blue\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FENOT-AutoDL\u002Fonnx2torch\u002Fstargazers\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FENOT-AutoDL\u002Fonnx2torch.svg?style=social&label=Star&maxAge=2592000\" \u002F>\n    \u003C\u002Fa>\n    \u003Cbr>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpsf\u002Fblack\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode%20style-black-black?color=blue\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpre-commit\u002Fpre-commit\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpre--commit-enabled-blue?logo=pre-commit\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fconventionalcommits.org\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FConventional%20Commits-1.0.0-%23FE5196?logo=conventionalcommits&logoColor=white&color=blue\" \u002F>\n    \u003C\u002Fa>\n\u003C\u002Fp>\n\nonnx2torch 是一个 ONNX 到 PyTorch 的转换器。\n我们的转换器：\n\n- 使用简单——只需调用 `convert` 函数即可转换 ONNX 模型；\n- 易于扩展——您可以在 PyTorch 中编写自定义层，并使用 `@add_converter` 注册它；\n- 可以转换回 ONNX——您可以使用 `torch.onnx.export` 函数将模型转换回 ONNX 格式。\n\n如果您发现任何问题，请[告知我们](https:\u002F\u002Fgithub.com\u002FENOT-AutoDL\u002Fonnx2torch\u002Fissues)！也欢迎您提交合并请求。\n\n请注意，此转换器仅支持有限数量的 PyTorch 和 ONNX 模型及操作。请在此处告诉我们您正在使用或希望从 ONNX 转换为 PyTorch 的模型：[这里](https:\u002F\u002Fgithub.com\u002FENOT-AutoDL\u002Fonnx2torch\u002Fdiscussions)。\n\n## 安装\n\n```bash\npip install onnx2torch\n```\n\n或者\n\n```bash\nconda install -c conda-forge onnx2torch\n```\n\n## 使用\n\n以下是一些使用示例。\n\n### 转换\n\n```python\nimport onnx\nimport torch\nfrom onnx2torch import convert\n\n# ONNX 模型路径\nonnx_model_path = \"\u002Fsome\u002Fpath\u002Fmobile_net_v2.onnx\"\n# 您可以传递 ONNX 模型路径来直接转换，或者...\ntorch_model_1 = convert(onnx_model_path)\n\n# 或者您也可以加载一个普通的 ONNX 模型并将其传递给转换器\nonnx_model = onnx.load(onnx_model_path)\ntorch_model_2 = convert(onnx_model)\n```\n\n### 执行\n\n我们可以像执行原始的 PyTorch 模型一样执行返回的 `PyTorch 模型`。\n\n```python\nimport onnxruntime as ort\n\n# 创建示例数据\nx = torch.ones((1, 2, 224, 224)).cuda()\n\nout_torch = torch_model_1(x)\n\nort_sess = ort.InferenceSession(onnx_model_path)\noutputs_ort = ort_sess.run(None, {\"input\": x.numpy()})\n\n# 将 ONNX 输出与 PyTorch 输出进行比较\nprint(torch.max(torch.abs(outputs_ort - out_torch.detach().numpy())))\nprint(np.allclose(outputs_ort, out_torch.detach().numpy(), atol=1.0e-7))\n```\n\n## 模型\n\n我们已经测试了以下模型：\n\n分割模型：\n\n- [x] DeepLabV3+\n- [x] DeepLabV3 ResNet-50 (TorchVision)\n- [x] HRNet\n- [x] UNet (TorchVision)\n- [x] FCN ResNet-50 (TorchVision)\n- [x] LRASPP MobileNetV3 (TorchVision)\n\n来自 MMdetection 的检测模型：\n\n- [x] [SSDLite，带有 MobileNetV2 主干网络](https:\u002F\u002Fgithub.com\u002Fopen-mmlab\u002Fmmdetection)\n- [x] [RetinaNet R50](https:\u002F\u002Fgithub.com\u002Fopen-mmlab\u002Fmmdetection)\n- [x] [SSD300，带有 VGG 主干网络](https:\u002F\u002Fgithub.com\u002Fopen-mmlab\u002Fmmdetection)\n- [x] [YOLOv3 d53](https:\u002F\u002Fgithub.com\u002Fopen-mmlab\u002Fmmdetection)\n- [x] [YOLOv5](https:\u002F\u002Fgithub.com\u002Fultralytics\u002Fyolov5)\n\n来自 __TorchVision__ 的分类模型：\n\n- [x] ResNet-18\n- [x] ResNet-50\n- [x] MobileNetV2\n- [x] MobileNetV3 Large\n- [x] EfficientNet-B{0, 1, 2, 3}\n- [x] WideResNet-50\n- [x] ResNext-50\n- [x] VGG-16\n- [x] GoogLeNet\n- [x] MnasNet\n- [x] RegNet\n\nTransformer 模型：\n\n- [x] ViT\n- [x] Swin\n- [x] GPT-J\n\n#### :page_facing_up: 当前支持的操作列表可以在这里找到 [operators.md]。\n\n## 如何向转换器添加新操作\n\n下面我们展示如何通过新增 ONNX 操作来扩展 onnx2torch，这些操作同时被 PyTorch 和 ONNX 支持。\n\n\u003Cdetails>\n\u003Csummary>且行为相同\u003C\u002Fsummary>\n\n此类模块的一个例子是 [Relu](.\u002Fonnx2torch\u002Fnode_converters\u002Factivations.py)\n\n```python\n@add_converter(operation_type=\"Relu\", version=6)\n@add_converter(operation_type=\"Relu\", version=13)\n@add_converter(operation_type=\"Relu\", version=14)\ndef _(node: OnnxNode, graph: OnnxGraph) -> OperationConverterResult:\n    return OperationConverterResult(\n        torch_module=nn.ReLU(),\n        onnx_mapping=onnx_mapping_from_node(node=node),\n    )\n```\n\n在这里，我们为 opset 版本 6、13 和 14 注册了一个名为 `Relu` 的操作。请注意，`OperationConverterResult` 中的 `torch_module` 参数必须是一个 `torch.nn.Module`，而不仅仅是一个可调用对象！如果操作的行为因 opset 版本不同而有所变化，则应分别实现。\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>但行为不同\u003C\u002Fsummary>\n\n此类模块的一个例子是 [ScatterND](.\u002Fonnx2torch\u002Fnode_converters\u002Fscatter_nd.py)\n\n```python\n\n# 建议对字符串类型的 ONNX 属性使用 Enum。\nclass ReductionOnnxAttr(Enum):\n    NONE = \"none\"\n    ADD = \"add\"\n    MUL = \"mul\"\n\n\nclass OnnxScatterND(nn.Module, OnnxToTorchModuleWithCustomExport):\n    def __init__(self, reduction: ReductionOnnxAttr):\n        super().__init__()\n        self._reduction = reduction\n\n    # 下面的方法应该以字典形式返回 ONNX 属性及其值。\n    # 属性的数量、名称和值取决于算子集版本；\n    # 该方法应返回正确的属性集合。\n    # 注意：为每个键添加类型后缀：reduction -> reduction_s，其中 s 表示“字符串”。\n    def _onnx_attrs(self, opset_version: int) -> Dict[str, Any]:\n        onnx_attrs: Dict[str, Any] = {}\n\n        # 在这里处理 opset 版本 \u003C 16 的情况，此时没有 \"reduction\" 属性。\n        if opset_version \u003C 16:\n            if self._reduction != ReductionOnnxAttr.NONE:\n                raise ValueError(\n                    \"opset \u003C 16 的 ScatterND 不支持\"\n                    f\"reduction 属性不等于 {ReductionOnnxAttr.NONE.value}，\"\n                    f\"但实际得到的是 {self._reduction.value}\"\n                )\n            return onnx_attrs\n\n        onnx_attrs[\"reduction_s\"] = self._reduction.value\n        return onnx_attrs\n\n    def forward(\n        self,\n        data: torch.Tensor,\n        indices: torch.Tensor,\n        updates: torch.Tensor,\n    ) -> torch.Tensor:\n        def _forward():\n            # ScatterND 的前向实现...\n            return output\n\n        if torch.onnx.is_in_onnx_export():\n            # 请遵循我们的约定，参数包括：\n            # 前向函数、操作类型、操作输入、操作属性。\n            onnx_attrs = self._onnx_attrs(opset_version=get_onnx_version())\n            return DefaultExportToOnnx.export(\n                _forward, \"ScatterND\", data, indices, updates, onnx_attrs\n            )\n\n        return _forward()\n\n\n@add_converter(operation_type=\"ScatterND\", version=11)\n@add_converter(operation_type=\"ScatterND\", version=13)\n@add_converter(operation_type=\"ScatterND\", version=16)\ndef _(node: OnnxNode, graph: OnnxGraph) -> OperationConverterResult:\n    node_attributes = node.attributes\n    reduction = ReductionOnnxAttr(node_attributes.get(\"reduction\", \"none\"))\n    return OperationConverterResult(\n        torch_module=OnnxScatterND(reduction=reduction),\n        onnx_mapping=onnx_mapping_from_node(node=node),\n    )\n```\n\n在这里，我们通过定义自定义的 `_ScatterNDExportToOnnx` 来实现将模型从 PyTorch 转换回 ONNX 的技巧。\n\n\u003C\u002Fdetails>\n\n## 算子集版本的 workaround\n\n如果您正在使用较旧算子集版本的模型，请尝试以下 workaround：\n\n[ONNX 版本转换 - 官方文档](https:\u002F\u002Fgithub.com\u002Fonnx\u002Fonnx\u002Fblob\u002Fmain\u002Fdocs\u002FPythonAPIOverview.md#converting-version-of-an-onnx-model-within-default-domain-aionnx)\n\n\u003Cdetails>\n\u003Csummary>示例\u003C\u002Fsummary>\n\n```python\nimport onnx\nfrom onnx import version_converter\nimport torch\nfrom onnx2torch import convert\n\n# 加载 ONNX 模型。\nmodel = onnx.load(\"model.onnx\")\n# 将模型转换为目标版本。\ntarget_version = 13\nconverted_model = version_converter.convert_version(model, target_version)\n# 转换为 PyTorch。\ntorch_model = convert(converted_model)\ntorch.save(torch_model, \"model.pt\")\n```\n\n\u003C\u002Fdetails>\n\n注意：仅在现有算子集版本无法将模型转换为 PyTorch 时才使用此方法。结果可能会有所不同。\n\n## 引用\n\n要引用 onnx2torch，请使用“引用此仓库”按钮，或：\n\n```\n@misc{onnx2torch,\n  title={onnx2torch},\n  author={ENOT 开发者以及 Kalgin, Igor、Yanchenko, Arseny、Ivanov, Pyoter 和 Goncharenko, Alexander},\n  year={2021},\n  howpublished={\\url{https:\u002F\u002Fenot.ai\u002F}},\n  note={版本：x.y.z}\n}\n```\n\n## 致谢\n\n感谢 Dmitry Chudakov [@cakeofwar42](https:\u002F\u002Fgithub.com\u002Fcakeofwar42) 的贡献。\\\n特别感谢 Andrey Denisov [@denisovap2013](https:\u002F\u002Fgithub.com\u002Fdenisovap2013) 的 logo 设计。","# onnx2torch 快速上手指南\n\n`onnx2torch` 是一个将 ONNX 模型转换为 PyTorch 模型的开源工具。它支持一键转换、自定义算子扩展，并允许将转换后的模型重新导出为 ONNX 格式。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**：Linux, macOS 或 Windows\n*   **Python 版本**：建议 Python 3.7+\n*   **前置依赖**：\n    *   `PyTorch` (torch)\n    *   `ONNX` (onnx)\n    *   `NumPy` (numpy)\n\n> **提示**：如果您尚未安装 PyTorch，请访问 [PyTorch 官网](https:\u002F\u002Fpytorch.org\u002F) 获取适合您环境的安装命令。国内用户可使用清华源加速安装：\n> ```bash\n> pip install torch torchvision torchaudio --index-url https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n> ```\n\n## 安装步骤\n\n您可以通过 `pip` 或 `conda` 进行安装。推荐国内用户使用镜像源以提升下载速度。\n\n### 方式一：使用 pip 安装（推荐）\n\n```bash\npip install onnx2torch -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 方式二：使用 conda 安装\n\n```bash\nconda install -c conda-forge onnx2torch\n```\n\n## 基本使用\n\n以下是将 ONNX 模型转换为 PyTorch 模型并进行推理验证的最简流程。\n\n### 1. 转换模型\n\n您可以直接传入 ONNX 文件路径，或者先加载 ONNX 模型对象再传入。\n\n```python\nimport onnx\nimport torch\nfrom onnx2torch import convert\n\n# 路径示例\nonnx_model_path = \"mobile_net_v2.onnx\"\n\n# 方法 A：直接传入文件路径\ntorch_model = convert(onnx_model_path)\n\n# 方法 B：传入已加载的 ONNX 模型对象\n# onnx_model = onnx.load(onnx_model_path)\n# torch_model = convert(onnx_model)\n\n# 将模型设置为评估模式并移至 GPU (可选)\ntorch_model.eval()\ntorch_model = torch_model.cuda()\n```\n\n### 2. 执行推理与验证\n\n转换后的 `torch_model` 是一个标准的 PyTorch `nn.Module`，可以直接用于推理。以下示例对比了 ONNX Runtime 和转换后 PyTorch 模型的输出结果。\n\n```python\nimport numpy as np\nimport onnxruntime as ort\n\n# 创建测试数据 (假设输入形状为 1x2x224x224)\nx = torch.ones((1, 2, 224, 224)).cuda()\n\n# 1. 运行 PyTorch 模型\nwith torch.no_grad():\n    out_torch = torch_model(x)\n\n# 2. 运行原始 ONNX 模型 (用于验证一致性)\nort_sess = ort.InferenceSession(onnx_model_path)\noutputs_ort = ort_sess.run(None, {\"input\": x.cpu().numpy()})\n\n# 3. 对比输出结果\n# 计算最大绝对误差\nmax_diff = torch.max(torch.abs(outputs_ort[0] - out_torch.detach().cpu().numpy()))\nprint(f\"Max difference: {max_diff}\")\n\n# 检查数值是否接近 (容差 1e-7)\nis_close = np.allclose(outputs_ort[0], out_torch.detach().cpu().numpy(), atol=1.0e-7)\nprint(f\"Outputs match: {is_close}\")\n```\n\n### 3. 重新导出为 ONNX (可选)\n\n如果需要将转换后的 PyTorch 模型再次导出为 ONNX 格式，可以使用原生 PyTorch 接口：\n\n```python\ndummy_input = torch.randn(1, 2, 224, 224).cuda()\ntorch.onnx.export(\n    torch_model, \n    dummy_input, \n    \"exported_model.onnx\",\n    opset_version=13,\n    input_names=['input'],\n    output_names=['output']\n)\n```","某计算机视觉团队在部署移动端模型时，收到合作伙伴提供的 ONNX 格式 YOLOv5 检测模型，但团队内部训练框架和自定义算子优化均基于 PyTorch 生态。\n\n### 没有 onnx2torch 时\n- **重构成本高昂**：开发人员不得不手动对照 ONNX 结构重新编写 PyTorch 代码，极易因层级对应错误导致权重加载失败。\n- **调试黑盒难解**：若推理结果出现偏差，难以定位是转换逻辑错误还是算子实现差异，排查过程如同“盲人摸象”。\n- **定制扩展受阻**：团队特有的后处理逻辑或修改过的网络层无法直接融入导入的模型，只能被迫维持双框架并行的混乱架构。\n- **迭代效率低下**：每次模型更新都需要重复繁琐的人工转换流程，严重拖慢了从算法验证到工程落地的节奏。\n\n### 使用 onnx2torch 后\n- **一键无缝迁移**：仅需调用 `convert` 函数传入 ONNX 文件路径，即可瞬间获得完整的 PyTorch 模型对象，保留所有预训练权重。\n- **精度严格对齐**：转换后的模型可直接与原 ONNX 推理结果进行数值比对（如 `allclose` 校验），确保误差控制在极低范围内。\n- **原生灵活开发**：获得的模型是标准的 PyTorch 模块，支持直接使用 `torch.onnx.export` 反向导出，也能自由添加自定义层或微调网络。\n- **生态完美融合**：团队可立即利用现有的 PyTorch 工具链进行剪枝、量化或分布式训练，彻底统一了技术栈。\n\nonnx2torch 通过自动化的高保真转换，消除了跨框架协作的壁垒，让开发者能专注于算法优化而非格式适配。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FENOT-AutoDL_onnx2torch_d81d29b4.png","ENOT-AutoDL","ENOT","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FENOT-AutoDL_062c520a.png","",null,"enot.ai","https:\u002F\u002Fgithub.com\u002FENOT-AutoDL",[81],{"name":82,"color":83,"percentage":84},"Python","#3572A5",100,735,90,"2026-04-06T12:08:22","Apache-2.0",1,"未说明","非必需（示例代码展示了在 CUDA 设备上运行的用法，但工具本身为模型格式转换库，不强制要求 GPU）",{"notes":93,"python":90,"dependencies":94},"该工具主要用于将 ONNX 模型转换为 PyTorch 模型。支持通过 pip 或 conda 安装。仅支持有限的 PyTorch\u002FONNX 模型和操作（具体支持的模型列表见文档，如 ResNet, YOLOv5, ViT 等）。如果模型使用的 OPSET 版本过旧，可能需要先使用 onnx 的版本转换功能进行升级。",[95,96,97],"onnx","torch","onnxruntime (用于示例验证)",[14],[95,100,101,102],"pytorch","convert","export","2026-03-27T02:49:30.150509","2026-04-10T09:01:49.146282",[106,111,116,121,126,131],{"id":107,"question_zh":108,"answer_zh":109,"source_url":110},27411,"遇到 \"IndexError: tensors used as indices must be long, byte or bool tensors\" 错误怎么办？","该错误通常是因为输入张量的数据类型不正确。PyTorch 要求用于索引的张量必须是 long、byte 或 bool 类型，而 ONNX 可能使用 int32。请确保在将数据转换为 PyTorch 张量时显式指定 `.long()` 或使用 `dtype=torch.int64`。例如：`tokens = torch.tensor(data).long()`。维护者已在主分支修复了相关转换逻辑，建议更新到最新版本。","https:\u002F\u002Fgithub.com\u002FENOT-AutoDL\u002Fonnx2torch\u002Fissues\u002F106",{"id":112,"question_zh":113,"answer_zh":114,"source_url":115},27412,"转换模型时遇到 \"KeyError: -2\" 或 \"NotImplementedError: BatchNorm operation with spatial rank == -2 is not implemented\" 错误如何解决？","这个问题通常是由 PyTorch 的追踪机制（tracing mechanism）引起的。最快且最简单的解决方案是将 PyTorch 升级到 1.13.x 或更高版本。用户反馈确认升级到 PyTorch 1.13.1 后问题解决。","https:\u002F\u002Fgithub.com\u002FENOT-AutoDL\u002Fonnx2torch\u002Fissues\u002F133",{"id":117,"question_zh":118,"answer_zh":119,"source_url":120},27413,"使用 onnx2torch 1.5.3+ 版本训练模型时，发现模型缺少参数（model.parameters() 为空）导致无法优化，怎么办？","这是 onnx2torch 1.5.3 版本中引入的一个回归问题，主要影响 GEMM 层参数的提取。该问题已在主分支修复，并包含在 1.5.6 及以后的版本中。请将 onnx2torch 升级到 1.5.6 或更高版本以解决此问题：`pip install --upgrade onnx2torch`。","https:\u002F\u002Fgithub.com\u002FENOT-AutoDL\u002Fonnx2torch\u002Fissues\u002F132",{"id":122,"question_zh":123,"answer_zh":124,"source_url":125},27414,"onnx2torch 是否支持 GatherND 操作符？","是的，GatherND 操作符已得到支持。维护者已在 PR #122 中实现了对 `batch_dims=0` 情况的支持。如果您使用的是较旧版本，请升级到包含此更新的版本。如果您的用例涉及更复杂的 `batch_dims`，可能需要进一步测试或提交具体案例。","https:\u002F\u002Fgithub.com\u002FENOT-AutoDL\u002Fonnx2torch\u002Fissues\u002F107",{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},27415,"onnx2torch 是否支持 LayerNorm 操作符？","是的，LayerNorm 操作符已得到支持。该功能已在 v1.5.9 版本中发布。LayerNorm 常见于 Transformer 模型，如果您之前遇到不支持的错误，请升级库：`pip install --upgrade onnx2torch`。","https:\u002F\u002Fgithub.com\u002FENOT-AutoDL\u002Fonnx2torch\u002Fissues\u002F126",{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},27416,"遇到 \"NotImplementedError: Converter is not implemented ... ArgMax\" 错误怎么办？","ArgMax 操作符之前未被支持，但现已实现。该功能已包含在 v1.5.15 及以后的版本中。请升级 onnx2torch 到最新版本以支持 ArgMax 操作符的转换。","https:\u002F\u002Fgithub.com\u002FENOT-AutoDL\u002Fonnx2torch\u002Fissues\u002F147",[137,142,147,152,157,162,167,172,177,182,187,192,197,202,207,212,217,222,227,232],{"id":138,"version":139,"summary_zh":140,"released_at":141},180561,"v1.5.15","```\r\n特性：squeeze-21\n特性：ArgMax 和 ArgMin\n```\n\n感谢 @rosemanmeilof 和 @ajstarna 的贡献。\n\n:蛋糕: ","2024-08-07T14:06:46",{"id":143,"version":144,"summary_zh":145,"released_at":146},180562,"v1.5.14","```\r\n特性：新增 isinf、isnan 和 nonzero 操作\n修复：简化 keepdim 的类型（从 int 改为 bool）\n```\n\n感谢 @karalinkw 和 @francis2tm 的贡献。\n\n:cake: ","2024-04-02T11:03:03",{"id":148,"version":149,"summary_zh":150,"released_at":151},180563,"v1.5.13","```\r\n修复：整数参数的 div 返回类型\n文档：主示例中缺少 [import onnx]\n```\n\n感谢 @seriousran 的贡献。\n\n:cake: ","2023-10-27T14:16:37",{"id":153,"version":154,"summary_zh":155,"released_at":156},180564,"v1.5.12","修复：在布尔值属性的情况下导出到 ONNX 的 ConstantOfShape 节点。","2023-10-09T21:25:05",{"id":158,"version":159,"summary_zh":160,"released_at":161},180565,"v1.5.11","```\r\n特性：DepthToSpace\r\n```\r\n\r\n感谢 @sushanthr 的贡献。\n\n:蛋糕:","2023-07-26T18:56:45",{"id":163,"version":164,"summary_zh":165,"released_at":166},180566,"v1.5.10","```\r\n chore: 修复中断的构建（缺少子模块）\r\n```\r\n\r\n:蛋糕: \r\n\r\n","2023-07-07T11:06:07",{"id":168,"version":169,"summary_zh":170,"released_at":171},180567,"v1.5.9","```\r\nfeat: 层归一化\r\n```\r\n\r\n:蛋糕: \r\n\r\n感谢 @JohnMasoner 的贡献。","2023-07-07T10:19:35",{"id":173,"version":174,"summary_zh":175,"released_at":176},180568,"v1.5.8","修复：将 Op Range 导出为 ONNX（保留动态输入）","2023-06-01T16:20:16",{"id":178,"version":179,"summary_zh":180,"released_at":181},180569,"v1.5.7","```\r\n特性：Mod\r\n特性：EyeLike\r\n特性：使 ONNX 节点命名更易读\r\n\r\n修复：GEMM 权重维度调换问题\r\n```\r\n:蛋糕: \r\n\r\n感谢 @JohnMasoner 和 @jan-haug 的贡献。","2023-05-26T18:23:50",{"id":183,"version":184,"summary_zh":185,"released_at":186},180570,"v1.5.6","```\r\n特性：InstanceNormalization\n特性：LeakyReLU 算子集 16\n特性：适用于算子集 16 的 RoIAlign\n特性：适用于算子集 16 的 ScatterND（仅支持 reduction 为 none）\n特性：GatherND（仅支持参数 batch_dims=0）\n\n修复：使用 torch.save 时出现的 lambda 未找到错误\n修复：将索引上转型为 int64\n修复：GEMM 维度拼写错误（nn.Linear 没有参数）\n\n文档：针对旧版算子集的 workaround\n```\n\n:蛋糕:\n\n感谢 @SuperSecureHuman 和 @JohnMasoner 的贡献。","2023-02-13T05:35:39",{"id":188,"version":189,"summary_zh":190,"released_at":191},180571,"v1.5.4","Minor release to support torch 1.13 export.","2022-11-14T12:06:20",{"id":193,"version":194,"summary_zh":195,"released_at":196},180572,"v1.5.3","FIXED: \r\n- Gemm operation updated according onnx specs","2022-09-16T05:58:51",{"id":198,"version":199,"summary_zh":200,"released_at":201},180573,"v1.5.2","Support for new OPS :rocket: :\r\n\r\n- [Dropout](https:\u002F\u002Fgithub.com\u002Fonnx\u002Fonnx\u002Fblob\u002Fmain\u002Fdocs\u002FOperators.md#Dropout)\r\n- [LRN](https:\u002F\u002Fgithub.com\u002Fonnx\u002Fonnx\u002Fblob\u002Fmain\u002Fdocs\u002FOperators.md#LRN)\r\n\r\nThanks @yan12125 and @monicathieu for their contributions.","2022-09-09T05:16:52",{"id":203,"version":204,"summary_zh":205,"released_at":206},180574,"v1.5.1","Include requirements.txt and exclude tests for sdist ","2022-09-01T05:12:34",{"id":208,"version":209,"summary_zh":210,"released_at":211},180575,"v1.5.0","### You've been waiting, you've asked... And here it is a new release(1.5.0)!  \r\n\r\nIn this release:\r\n- Fixed shape inference of big models (now you can load your lovely big language model, like gptj6B);\r\n- Fixed `BarchNorm` converter according `onnx` specs;\r\n- Added asymmetric padding for both `Conv` and `MaxPool`.\r\n\r\nThank you for your discussions and issues! We always ready to help you!","2022-08-30T08:22:24",{"id":213,"version":214,"summary_zh":215,"released_at":216},180576,"v1.4.1","Minor updates:\r\n* Fix prelu according onnx specs,\r\n* Fix Global average pooling.","2022-07-12T06:58:47",{"id":218,"version":219,"summary_zh":220,"released_at":221},180577,"v1.4.0",":rocket: New day - new release! :rocket:\r\nNew features in release 1.4.0:\r\n- Added operations:\r\n  - Einsum,\r\n  - Reciprocal,\r\n  - Neg,\r\n  - Prelu,\r\n  - Mean,\r\n  - Min,\r\n  - Max,\r\n  - CumSum,\r\n  - Sum.\r\n\r\n- Fixes:\r\n  - GlobalAveragePool compatible with PyTorch FX QAT,\r\n  - Compatibility with torch 1.12,\r\n  - Allow to ignore bs+ch dimensions for size input in Resize.\r\n  - Check roi only for tf_crop_and_resize mode.\r\n\r\n- Code style and workflows:\r\n  - [Pre-commit hook](https:\u002F\u002Fpre-commit.com\u002F),\r\n  - [Black code-style now is used in project](https:\u002F\u002Fblack.readthedocs.io\u002Fen\u002Fstable\u002Fthe_black_code_style\u002Findex.html),\r\n  - Linter and formatter with precommit hook,\r\n  - Code style checks for PRs in Github actions.\r\n\r\nWe thank all contributors for their work! Together we will make onnx2torch great! :star: 10^6","2022-07-06T05:12:58",{"id":223,"version":224,"summary_zh":225,"released_at":226},180578,"v1.3.0","New features in release 1.3.0:\r\n\r\n- Add `Pad` operation\r\n- Add `Hardswish`, `Celu`, `Elu`, `Selu`, `Softplus`, `Softsign` functions\r\n- Add `GatherElements` operation\r\n- Add new model tests\r\n\r\nFixes:\r\n\r\n- Fix `ConvTranspose` operation","2022-04-20T10:53:30",{"id":228,"version":229,"summary_zh":230,"released_at":231},180579,"v1.2.5","Hi!\r\nNew release 1.2.5. In this release we add:\r\n- ConvTranspose\r\n\r\nAnd fix:\r\n- RoiAlign export","2022-04-07T08:25:47",{"id":233,"version":234,"summary_zh":235,"released_at":236},180580,"v1.2.0","New features in release 1.2.0:\r\n- Support `VIT`, `SWIN`, `FasterRcnn` models;\r\n- add `RoiAlign` operation;\r\n- Add `Floor`, `Ceil`, `Round` and trigonometric functions;\r\n- New model tests for classification, detection and segmentation;\r\n\r\nFixes:\r\n- Fix `ScatterND` and its speed;\r\n- Fix names of plaseholders;\r\n- Fix optional arguments if last arguments are not passed;\r\n- Fix checking of empty inputs;\r\n- Fix avg pool operation;","2022-03-23T12:05:28"]