[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-szagoruyko--diracnets":3,"tool-szagoruyko--diracnets":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 真正成长为懂上",143909,2,"2026-04-07T11:33:18",[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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[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":78,"owner_email":78,"owner_twitter":79,"owner_website":80,"owner_url":81,"languages":82,"stars":91,"forks":92,"last_commit_at":93,"license":78,"difficulty_score":10,"env_os":94,"env_gpu":95,"env_ram":94,"env_deps":96,"category_tags":102,"github_topics":78,"view_count":32,"oss_zip_url":78,"oss_zip_packed_at":78,"status":17,"created_at":103,"updated_at":104,"faqs":105,"releases":141},5012,"szagoruyko\u002Fdiracnets","diracnets","Training Very Deep Neural Networks Without Skip-Connections","DiracNets 是一个基于 PyTorch 的开源项目，旨在探索如何在没有“跳跃连接”（Skip-Connections）的情况下训练极深的神经网络。传统深度网络如 ResNet 依赖跳跃连接来解决梯度消失问题并提升性能，但这使得网络结构复杂且难以解释。DiracNets 通过一种独特的权重参数化方法解决了这一难题：它将卷积核表示为“狄拉克δ函数”与可学习权重的加权和。这种设计让原本难以训练的深层普通网络（Plain Networks）能够稳定收敛，仅需 28 层即可达到相当于千层 ResNet 的精度。\n\n该项目特别适合深度学习研究人员和对网络架构可解释性有追求的开发者。其核心亮点在于训练完成后的模型可以“折叠”成标准的卷积层，最终得到结构简洁、类似 VGG 的线性网络，既保留了深层特征提取能力，又消除了复杂的旁路连接，便于部署和分析。代码库提供了完整的训练脚本、模块化组件以及在 CIFAR 和 ImageNet 数据集上的预训练模型，帮助用户快速复现论文结果或进行进一步的架构实验。如果你希望深入理解深度网络的本质，或尝试构建更纯粹、透明的深层模型，DiracNets 提供了一个","DiracNets 是一个基于 PyTorch 的开源项目，旨在探索如何在没有“跳跃连接”（Skip-Connections）的情况下训练极深的神经网络。传统深度网络如 ResNet 依赖跳跃连接来解决梯度消失问题并提升性能，但这使得网络结构复杂且难以解释。DiracNets 通过一种独特的权重参数化方法解决了这一难题：它将卷积核表示为“狄拉克δ函数”与可学习权重的加权和。这种设计让原本难以训练的深层普通网络（Plain Networks）能够稳定收敛，仅需 28 层即可达到相当于千层 ResNet 的精度。\n\n该项目特别适合深度学习研究人员和对网络架构可解释性有追求的开发者。其核心亮点在于训练完成后的模型可以“折叠”成标准的卷积层，最终得到结构简洁、类似 VGG 的线性网络，既保留了深层特征提取能力，又消除了复杂的旁路连接，便于部署和分析。代码库提供了完整的训练脚本、模块化组件以及在 CIFAR 和 ImageNet 数据集上的预训练模型，帮助用户快速复现论文结果或进行进一步的架构实验。如果你希望深入理解深度网络的本质，或尝试构建更纯粹、透明的深层模型，DiracNets 提供了一个极具价值的参考实现。","DiracNets\n=========\n\n### v2 update (January 2018):\n\nThe code was updated for DiracNets-v2 in which we removed NCReLU by adding per-channel `a` and `b` multipliers without weight decay.\nThis allowed us to significantly simplify the network, which is now folds into a simple chain of convolution-ReLU layers, like VGG.\nOn ImageNet DiracNet-18 and DiracNet-34 closely match corresponding ResNet with the same number of parameters.\n\nSee v1 branch for DiracNet-v1.\n\n-----\n\nPyTorch code and models for *DiracNets: Training Very Deep Neural Networks Without Skip-Connections*\n\n\u003Chttps:\u002F\u002Farxiv.org\u002Fabs\u002F1706.00388>\n\nNetworks with skip-connections like ResNet show excellent performance in image recognition benchmarks, but do not benefit from increased depth, we are thus still interested in learning __actually__ deep representations, and the benefits they could bring. We propose a simple weight parameterization, which improves training of deep plain (without skip-connections) networks, and allows training plain networks with hundreds of layers. Accuracy of our proposed DiracNets is close to Wide ResNet (although DiracNets need more parameters to achieve it), and we are able to match ResNet-1000 accuracy with plain DiracNet with only 28 layers. Also, the proposed Dirac weight parameterization can be folded into one filter for inference, leading to easily interpretable VGG-like network.\n\nDiracNets on ImageNet:\n\u003Cimg src=http:\u002F\u002Fimagine.enpc.fr\u002F~zagoruys\u002Fimg\u002Fdiracnet_imagenet.svg>\n\n\n## TL;DR\n\nIn a nutshell, Dirac parameterization is a sum of filters and scaled Dirac delta function:\n\n```\nconv2d(x, alpha * delta + W)\n```\n\nHere is simplified PyTorch-like pseudocode for the function we use to train plain DiracNets (with weight normalization):\n\n```python\ndef dirac_conv2d(input, W, alpha, beta)\n    return F.conv2d(input, alpha * dirac(W) + beta * normalize(W))\n```\n\nwhere `alpha` and `beta` are per-channel scaling multipliers, and `normalize` does l_2 normalization over each feature plane.\n\n\n## Code\n\nCode structure:\n\n├── [README.md](README.md)          # this file\u003Cbr>\n├── [diracconv.py](diracconv.py)    # modular DiracConv definitions\u003Cbr>\n├── [test.py](test.py)              # unit tests\u003Cbr>\n├── [diracnet-export.ipynb](diracnet-export.ipynb) # ImageNet pretrained models\u003Cbr>\n├── [diracnet.py](diracnet.py)      # functional model definitions\u003Cbr>\n└── [train.py](train.py)            # CIFAR and ImageNet training code\u003Cbr>\n\n### Requirements\n\nFirst install [PyTorch](https:\u002F\u002Fpytorch.org), then install [torchnet](https:\u002F\u002Fgithub.com\u002Fpytorch\u002Ftnt):\n\n```\npip install git+https:\u002F\u002Fgithub.com\u002Fpytorch\u002Ftnt.git@master\n```\n\nInstall other Python packages:\n\n```\npip install -r requirements.txt\n```\n\nTo train DiracNet-34-2 on CIFAR do:\n\n```\npython train.py --save .\u002Flogs\u002Fdiracnets_$RANDOM$RANDOM --depth 34 --width 2\n```\n\nTo train DiracNet-18 on ImageNet do:\n\n```bash\npython train.py --dataroot ~\u002FILSVRC2012\u002F --dataset ImageNet --depth 18 --save .\u002Flogs\u002Fdiracnet_$RANDOM$RANDOM \\\n                --batchSize 256 --epoch_step [30,60,90] --epochs 100 --weightDecay 0.0001 --lr_decay_ratio 0.1\n```\n\n\n### nn.Module code\n\nWe provide `DiracConv1d`, `DiracConv2d`, `DiracConv3d`, which work like `nn.Conv1d`, `nn.Conv2d`, `nn.Conv3d`, but have Dirac-parametrization inside (our training code doesn't use these modules though).\n\n\n### Pretrained models\n\nWe fold batch normalization and Dirac parameterization into `F.conv2d` `weight` and `bias` tensors for simplicity. Resulting models are as simple as VGG or AlexNet, having only nonlinearity+conv2d as a basic block.\n\nSee [diracnets.ipynb](diracnets.ipynb) for functional and modular model definitions.\n\nThere is also folded DiracNet definition in `diracnet.py`, which uses code from PyTorch model_zoo and downloads pretrained model from Amazon S3:\n\n```python\nfrom diracnet import diracnet18\nmodel = diracnet18(pretrained=True)\n```\n\nPrintout of the model above:\n\n```\nDiracNet(\n  (features): Sequential(\n    (conv): Conv2d (3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3))\n    (max_pool0): MaxPool2d(kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), dilation=(1, 1), ceil_mode=False)\n    (group0.block0.relu): ReLU()\n    (group0.block0.conv): Conv2d (64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group0.block1.relu): ReLU()\n    (group0.block1.conv): Conv2d (64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group0.block2.relu): ReLU()\n    (group0.block2.conv): Conv2d (64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group0.block3.relu): ReLU()\n    (group0.block3.conv): Conv2d (64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (max_pool1): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), dilation=(1, 1), ceil_mode=False)\n    (group1.block0.relu): ReLU()\n    (group1.block0.conv): Conv2d (64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group1.block1.relu): ReLU()\n    (group1.block1.conv): Conv2d (128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group1.block2.relu): ReLU()\n    (group1.block2.conv): Conv2d (128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group1.block3.relu): ReLU()\n    (group1.block3.conv): Conv2d (128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (max_pool2): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), dilation=(1, 1), ceil_mode=False)\n    (group2.block0.relu): ReLU()\n    (group2.block0.conv): Conv2d (128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group2.block1.relu): ReLU()\n    (group2.block1.conv): Conv2d (256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group2.block2.relu): ReLU()\n    (group2.block2.conv): Conv2d (256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group2.block3.relu): ReLU()\n    (group2.block3.conv): Conv2d (256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (max_pool3): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), dilation=(1, 1), ceil_mode=False)\n    (group3.block0.relu): ReLU()\n    (group3.block0.conv): Conv2d (256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group3.block1.relu): ReLU()\n    (group3.block1.conv): Conv2d (512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group3.block2.relu): ReLU()\n    (group3.block2.conv): Conv2d (512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group3.block3.relu): ReLU()\n    (group3.block3.conv): Conv2d (512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (last_relu): ReLU()\n    (avg_pool): AvgPool2d(kernel_size=7, stride=7, padding=0, ceil_mode=False, count_include_pad=True)\n  )\n  (fc): Linear(in_features=512, out_features=1000)\n)\n```\n\nThe models were trained with OpenCV, so you need to use it too to reproduce stated accuracy.\n\nPretrained weights for DiracNet-18 and DiracNet-34:\u003Cbr>\n\u003Chttps:\u002F\u002Fs3.amazonaws.com\u002Fmodelzoo-networks\u002Fdiracnet18v2folded-a2174e15.pth>\u003Cbr>\n\u003Chttps:\u002F\u002Fs3.amazonaws.com\u002Fmodelzoo-networks\u002Fdiracnet34v2folded-dfb15d34.pth>\n\nPretrained weights for the original (not folded) model,  functional definition only:\u003Cbr>\n\u003Chttps:\u002F\u002Fs3.amazonaws.com\u002Fmodelzoo-networks\u002Fdiracnet18-v2_checkpoint.pth>\u003Cbr>\n\u003Chttps:\u002F\u002Fs3.amazonaws.com\u002Fmodelzoo-networks\u002Fdiracnet34-v2_checkpoint.pth>\n\nWe plan to add more pretrained models later.\n\n## Bibtex\n\n```\n@inproceedings{Zagoruyko2017diracnets,\n    author = {Sergey Zagoruyko and Nikos Komodakis},\n    title = {DiracNets: Training Very Deep Neural Networks Without Skip-Connections},\n    url = {https:\u002F\u002Farxiv.org\u002Fabs\u002F1706.00388},\n    year = {2017}}\n```\n","狄拉克网络\n=========\n\n### v2 更新（2018年1月）：\n\n代码已更新至 DiracNets-v2 版本，我们在其中移除了 NCReLU，并引入了逐通道的 `a` 和 `b` 缩放因子，且不使用权重衰减。这使得网络结构显著简化，现在可以整合为一个简单的卷积-ReLU 层链，类似于 VGG 网络。在 ImageNet 数据集上，DiracNet-18 和 DiracNet-34 的性能与参数量相同的对应 ResNet 模型非常接近。\n\n如需查看 DiracNet-v1，请参阅 v1 分支。\n\n-----\n\n用于 *DiracNets：无需跳跃连接训练超深层神经网络* 的 PyTorch 代码及模型\n\n\u003Chttps:\u002F\u002Farxiv.org\u002Fabs\u002F1706.00388>\n\n像 ResNet 这样的带有跳跃连接的网络在图像识别基准测试中表现出色，但随着深度增加，其性能提升并不明显。因此，我们仍然致力于学习__真正__深层的表征及其潜在优势。为此，我们提出了一种简单的权重参数化方法，能够有效改善无跳跃连接的普通深层网络的训练效果，并支持训练具有数百层的纯卷积网络。我们的 DiracNets 在准确率上接近 Wide ResNet（尽管达到相同精度时需要更多参数），并且仅用 28 层的纯卷积 DiracNet 就能媲美 ResNet-1000 的性能。此外，所提出的狄拉克权重参数化方式可以在推理阶段合并为单个滤波器，从而得到易于理解的类似 VGG 的网络结构。\n\nDiracNets 在 ImageNet 上的表现：\n\u003Cimg src=http:\u002F\u002Fimagine.enpc.fr\u002F~zagoruys\u002Fimg\u002Fdiracnet_imagenet.svg>\n\n\n## 简而言之\n\n简而言之，狄拉克参数化是滤波器与缩放后的狄拉克 δ 函数之和：\n\n```\nconv2d(x, alpha * delta + W)\n```\n\n以下是我们用于训练普通狄拉克网络（采用权重归一化）的简化版伪代码：\n\n```python\ndef dirac_conv2d(input, W, alpha, beta)\n    return F.conv2d(input, alpha * dirac(W) + beta * normalize(W))\n```\n\n其中 `alpha` 和 `beta` 是逐通道的缩放因子，而 `normalize` 则对每个特征平面进行 L2 归一化。\n\n\n## 代码\n\n代码结构：\n\n├── [README.md](README.md)          # 本文件\u003Cbr>\n├── [diracconv.py](diracconv.py)    # 模块化的 DiracConv 定义\u003Cbr>\n├── [test.py](test.py)              # 单元测试\u003Cbr>\n├── [diracnet-export.ipynb](diracnet-export.ipynb) # ImageNet 预训练模型\u003Cbr>\n├── [diracnet.py](diracnet.py)      # 功能性模型定义\u003Cbr>\n└── [train.py](train.py)            # CIFAR 和 ImageNet 训练代码\u003Cbr>\n\n### 要求\n\n首先安装 [PyTorch](https:\u002F\u002Fpytorch.org)，然后安装 [torchnet](https:\u002F\u002Fgithub.com\u002Fpytorch\u002Ftnt)：\n\n```\npip install git+https:\u002F\u002Fgithub.com\u002Fpytorch\u002Ftnt.git@master\n```\n\n再安装其他 Python 包：\n\n```\npip install -r requirements.txt\n```\n\n要在 CIFAR 上训练 DiracNet-34-2，执行以下命令：\n\n```\npython train.py --save .\u002Flogs\u002Fdiracnets_$RANDOM$RANDOM --depth 34 --width 2\n```\n\n要在 ImageNet 上训练 DiracNet-18，执行以下命令：\n\n```bash\npython train.py --dataroot ~\u002FILSVRC2012\u002F --dataset ImageNet --depth 18 --save .\u002Flogs\u002Fdiracnet_$RANDOM$RANDOM \\\n                --batchSize 256 --epoch_step [30,60,90] --epochs 100 --weightDecay 0.0001 --lr_decay_ratio 0.1\n```\n\n\n### nn.Module 代码\n\n我们提供了 `DiracConv1d`、`DiracConv2d`、`DiracConv3d`，它们的功能与 `nn.Conv1d`、`nn.Conv2d`、`nn.Conv3d` 类似，但内部采用了狄拉克参数化（不过我们的训练代码并未使用这些模块）。\n\n### 预训练模型\n\n为了简化起见，我们将批量归一化和狄拉克参数化合并到了 `F.conv2d` 的 `weight` 和 `bias` 张量中。由此得到的模型与 VGG 或 AlexNet 一样简单，其基本模块仅包含非线性激活函数和卷积层。\n\n有关功能性和模块化的模型定义，请参阅 [diracnets.ipynb](diracnets.ipynb)。\n\n此外，在 `diracnet.py` 中还提供了一个折叠后的 DiracNet 定义，它使用了 PyTorch model_zoo 中的代码，并从 Amazon S3 下载预训练模型：\n\n```python\nfrom diracnet import diracnet18\nmodel = diracnet18(pretrained=True)\n```\n\n上述模型的打印输出如下：\n\n```\nDiracNet(\n  (features): Sequential(\n    (conv): Conv2d (3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3))\n    (max_pool0): MaxPool2d(kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), dilation=(1, 1), ceil_mode=False)\n    (group0.block0.relu): ReLU()\n    (group0.block0.conv): Conv2d (64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group0.block1.relu): ReLU()\n    (group0.block1.conv): Conv2d (64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group0.block2.relu): ReLU()\n    (group0.block2.conv): Conv2d (64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group0.block3.relu): ReLU()\n    (group0.block3.conv): Conv2d (64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (max_pool1): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), dilation=(1, 1), ceil_mode=False)\n    (group1.block0.relu): ReLU()\n    (group1.block0.conv): Conv2d (64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group1.block1.relu): ReLU()\n    (group1.block1.conv): Conv2d (128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group1.block2.relu): ReLU()\n    (group1.block2.conv): Conv2d (128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group1.block3.relu): ReLU()\n    (group1.block3.conv): Conv2d (128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (max_pool2): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), dilation=(1, 1), ceil_mode=False)\n    (group2.block0.relu): ReLU()\n    (group2.block0.conv): Conv2d (128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group2.block1.relu): ReLU()\n    (group2.block1.conv): Conv2d (256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group2.block2.relu): ReLU()\n    (group2.block2.conv): Conv2d (256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group2.block3.relu): ReLU()\n    (group2.block3.conv): Conv2d (256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (max_pool3): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), dilation=(1, 1), ceil_mode=False)\n    (group3.block0.relu): ReLU()\n    (group3.block0.conv): Conv2d (256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group3.block1.relu): ReLU()\n    (group3.block1.conv): Conv2d (512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group3.block2relu): ReLU()\n    (group3.block2conv): Conv2d (512, 512, kernel size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (group3.block3relu): ReLU()\n    (group3.block3conv): Conv2d (512, 512, kernel size=(3, 3), stride=(1, 1), padding=(1, 1))\n    (last_relu): ReLU()\n    (avg_pool): AvgPool2d(kernel_size=7, stride=7, padding=0, ceil_mode=False, count_include_pad=True)\n  )\n  (fc): Linear(in_features=512, out_features=1000)\n)\n```\n\n这些模型是使用 OpenCV 训练的，因此要复现文中提到的准确率，也需要使用 OpenCV。\n\nDiracNet-18 和 DiracNet-34 的预训练权重如下：\u003Cbr>\n\u003Chttps:\u002F\u002Fs3.amazonaws.com\u002Fmodelzoo-networks\u002Fdiracnet18v2folded-a2174e15.pth>\u003Cbr>\n\u003Chttps:\u002F\u002Fs3.amazonaws.com\u002Fmodelzoo-networks\u002Fdiracnet34v2folded-dfb15d34.pth>\n\n原始（未折叠）模型的预训练权重（仅限于功能型定义）如下：\u003Cbr>\n\u003Chttps:\u002F\u002Fs3.amazonaws.com\u002Fmodelzoo-networks\u002Fdiracnet18-v2_checkpoint.pth>\u003Cbr>\n\u003Chttps:\u002F\u002Fs3.amazonaws.com\u002Fmodelzoo-networks\u002Fdiracnet34-v2_checkpoint.pth>\n\n我们计划后续添加更多预训练模型。\n\n## Bibtex\n\n```\n@inproceedings{Zagoruyko2017diracnets,\n    author = {Sergey Zagoruyko and Nikos Komodakis},\n    title = {DiracNets: 在没有跳跃连接的情况下训练超深度神经网络},\n    url = {https:\u002F\u002Farxiv.org\u002Fabs\u002F1706.00388},\n    year = {2017}}\n```","# DiracNets 快速上手指南\n\nDiracNets 是一个用于训练极深神经网络（无需跳跃连接\u002FSkip-Connections）的 PyTorch 实现。它通过一种特殊的权重参数化方法（Dirac 参数化），使得普通深层网络（Plain Networks）能够达到与 ResNet 相当的精度，同时保持类似 VGG 的简洁链式结构，便于推理和解释。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**: Linux 或 macOS (Windows 需自行配置 PyTorch 环境)\n*   **Python**: 建议 Python 3.6+\n*   **核心依赖**:\n    *   [PyTorch](https:\u002F\u002Fpytorch.org): 深度学习框架\n    *   [torchnet](https:\u002F\u002Fgithub.com\u002Fpytorch\u002Ftnt): PyTorch 工具箱\n*   **其他依赖**: 项目所需的额外 Python 包（见 `requirements.txt`）\n*   **注意**: 预训练模型是使用 OpenCV 训练的，若要复现官方精度，建议安装 `opencv-python`。\n\n## 安装步骤\n\n### 1. 安装 PyTorch\n请访问 [PyTorch 官网](https:\u002F\u002Fpytorch.org) 根据您的 CUDA 版本选择对应的安装命令。\n*(国内用户推荐使用清华源加速安装)*\n```bash\npip install torch torchvision torchaudio --index-url https:\u002F\u002Fdownload.pytorch.org\u002Fwhl\u002Fcu118\n```\n*(请将 `cu118` 替换为您实际的 CUDA 版本，如 `cpu` 或 `cu121`)*\n\n### 2. 安装 torchnet\n```bash\npip install git+https:\u002F\u002Fgithub.com\u002Fpytorch\u002Ftnt.git@master\n```\n*(若下载速度慢，可先克隆仓库到本地再安装)*\n\n### 3. 安装项目依赖\n克隆本项目代码后，进入目录并安装其余依赖：\n```bash\npip install -r requirements.txt\n```\n\n## 基本使用\n\n### 方式一：加载预训练模型（推荐）\nDiracNets 提供了折叠后的预训练模型（将 BatchNorm 和 Dirac 参数合并为标准卷积），结构极简，类似 VGG。\n\n```python\nfrom diracnet import diracnet18\n\n# 加载预训练的 DiracNet-18 模型\nmodel = diracnet18(pretrained=True)\n\n# 打印模型结构查看\nprint(model)\n```\n*注：代码会自动从 Amazon S3 下载权重。若网络受限，可手动下载权重文件并修改加载路径。*\n\n**预训练模型地址：**\n*   DiracNet-18 (Folded): `https:\u002F\u002Fs3.amazonaws.com\u002Fmodelzoo-networks\u002Fdiracnet18v2folded-a2174e15.pth`\n*   DiracNet-34 (Folded): `https:\u002F\u002Fs3.amazonaws.com\u002Fmodelzoo-networks\u002Fdiracnet34v2folded-dfb15d34.pth`\n\n### 方式二：从头训练\n项目提供了在 CIFAR 和 ImageNet 数据集上的训练脚本。\n\n**在 CIFAR 上训练 DiracNet-34-2：**\n```bash\npython train.py --save .\u002Flogs\u002Fdiracnets_$RANDOM$RANDOM --depth 34 --width 2\n```\n\n**在 ImageNet 上训练 DiracNet-18：**\n```bash\npython train.py --dataroot ~\u002FILSVRC2012\u002F --dataset ImageNet --depth 18 --save .\u002Flogs\u002Fdiracnet_$RANDOM$RANDOM \\\n                --batchSize 256 --epoch_step [30,60,90] --epochs 100 --weightDecay 0.0001 --lr_decay_ratio 0.1\n```\n\n### 核心原理简述\nDiracNets 的核心在于卷积层的参数化形式，即滤波器与缩放后的狄拉克δ函数之和：\n`conv2d(x, alpha * delta + W)`\n\n在训练时，使用了如下形式的伪代码逻辑（含权重归一化）：\n```python\ndef dirac_conv2d(input, W, alpha, beta)\n    return F.conv2d(input, alpha * dirac(W) + beta * normalize(W))\n```\n其中 `alpha` 和 `beta` 是每个通道的缩放乘数。推理时，该结构可折叠为标准的 `Conv2d` 层。","某计算机视觉团队在医疗影像分析项目中，试图构建一个超深的纯卷积网络以捕捉细微病灶特征，但受限于传统深层网络的训练难题。\n\n### 没有 diracnets 时\n- **梯度消失严重**：当网络深度超过几十层且不使用残差连接（Skip-Connections）时，梯度无法有效回传，导致模型根本无法收敛。\n- **架构复杂难解**：为了训练深网被迫引入 ResNet 式的跳跃连接，使得网络拓扑结构复杂，推理时无法折叠为简单的串行结构，增加了部署难度。\n- **表征能力受限**：由于依赖捷径传递信息，网络难以学习到真正深层的抽象特征，限制了在细粒度图像识别任务上的精度上限。\n- **调参成本高昂**：需要精心设计初始化策略或复杂的归一化手段来勉强维持训练稳定性，耗费大量实验时间。\n\n### 使用 diracnets 后\n- **训练数百层成为可能**：利用 Dirac 参数化技术（单位脉冲函数与权重叠加），成功在不加跳跃连接的情况下训练了上百层的“朴素”网络，梯度流动顺畅。\n- **推理架构极简**：训练完成后，Dirac 参数可直接折叠进标准卷积核中，最终模型退化为类似 VGG 的简单“卷积 - 激活”链，极大简化了推理引擎。\n- **精度对标主流模型**：在 ImageNet 等基准测试中，仅用 28 层的 diracnets 即可匹配 ResNet-1000 的准确率，证明了其学习深层表征的强大能力。\n- **代码实现轻量**：只需替换标准的 `Conv2d` 为 `DiracConv2d` 并调整少量超参数，即可复用现有训练流程，无需重构整个网络骨架。\n\ndiracnets 的核心价值在于打破了“深网络必须依赖跳跃连接”的固有认知，让研究者能以极简的架构探索真正的深度表征学习。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fszagoruyko_diracnets_bcd26b1a.png","szagoruyko","Sergey Zagoruyko","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fszagoruyko_79a6f071.jpg","AI Researcher, ex-Facebook, ex-Lyft","Polynome AI",null,"szagoruyko5","https:\u002F\u002Fszagoruyko.github.io","https:\u002F\u002Fgithub.com\u002Fszagoruyko",[83,87],{"name":84,"color":85,"percentage":86},"Jupyter Notebook","#DA5B0B",97.4,{"name":88,"color":89,"percentage":90},"Python","#3572A5",2.6,589,73,"2026-02-21T20:14:24","未说明","需要 NVIDIA GPU（基于 PyTorch 和 ImageNet\u002FCIFAR 训练场景推断），具体型号和显存大小未说明，CUDA 版本未说明",{"notes":97,"python":94,"dependencies":98},"该工具主要用于训练无阻滞连接的深度神经网络。训练代码依赖 torchnet 库。预训练模型是使用 OpenCV 训练的，若要复现所述的准确率，必须使用 OpenCV。支持将批量归一化（BatchNorm）和 Dirac 参数折叠到标准卷积层中，以便推理时获得类似 VGG 的简单结构。",[99,100,101],"pytorch","torchnet","opencv",[15,14],"2026-03-27T02:49:30.150509","2026-04-07T22:58:06.230020",[106,111,116,121,126,131,136],{"id":107,"question_zh":108,"answer_zh":109,"source_url":110},22784,"如何在仅使用 CPU 的模式下运行代码？","在运行训练脚本时，添加参数 --ngpu 0 即可启用 CPU 模式。\n例如：\npython train.py --ngpu 0\n不要使用 --ngpu ''（空字符串），这可能导致错误。","https:\u002F\u002Fgithub.com\u002Fszagoruyko\u002Fdiracnets\u002Fissues\u002F10",{"id":112,"question_zh":113,"answer_zh":114,"source_url":115},22782,"如何运行 torchnet 模块？报错 'no module named torchnet' 怎么办？","可以通过以下命令安装 torchnet 模块：\npip install git+https:\u002F\u002Fgithub.com\u002Fpytorch\u002Ftnt.git@master\n安装完成后即可在代码中正常导入。","https:\u002F\u002Fgithub.com\u002Fszagoruyko\u002Fdiracnets\u002Fissues\u002F4",{"id":117,"question_zh":118,"answer_zh":119,"source_url":120},22783,"运行 train.py 时出现 'invalid combination of arguments' 或 Tensor 初始化错误如何解决？","该问题通常由 PyTorch 版本不兼容引起。如果您使用的是 PyTorch 0.4.0 或更高版本，可能会遇到此错误。建议将 PyTorch 降级至 0.2.0 版本以解决该问题。\n例如：\npip install http:\u002F\u002Fdownload.pytorch.org\u002Fwhl\u002Fcu80\u002Ftorch-0.1.12.post2-cp27-none-linux_x86_64.whl\n或者根据您的环境选择合适的 0.2.0 版本进行安装。","https:\u002F\u002Fgithub.com\u002Fszagoruyko\u002Fdiracnets\u002Fissues\u002F18",{"id":122,"question_zh":123,"answer_zh":124,"source_url":125},22785,"运行 train.py 时出现 SyntaxError: invalid syntax 错误（如 z = {**vars(opt), **t}）怎么办？","该语法错误是因为代码使用了 Python 3 特有的字典解包语法（**）。请确保您使用的是 Python 3 来运行脚本，而不是 Python 2。\n检查您的 Python 版本：\npython --version\n如果显示为 Python 2.x，请改用 python3 命令运行：\npython3 train.py","https:\u002F\u002Fgithub.com\u002Fszagoruyko\u002Fdiracnets\u002Fissues\u002F20",{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},22786,"找不到 requirements.txt 文件，如何安装依赖？","项目维护者已补充 requirements.txt 文件。您可以直接从仓库根目录获取该文件，然后运行以下命令安装所有依赖：\npip install -r requirements.txt\n如果本地没有该文件，请确保您克隆的是最新版本的仓库。","https:\u002F\u002Fgithub.com\u002Fszagoruyko\u002Fdiracnets\u002Fissues\u002F3",{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},22787,"预训练模型文件无法下载或链接失效怎么办？","之前提供的部分预训练模型文件链接存在拼写错误，导致无法下载。维护者已修复该问题。\n请重新访问项目的 README 或发布页面获取正确的下载链接。如果仍然遇到问题，建议检查仓库的最新提交记录或 Issues 中的更新通知。","https:\u002F\u002Fgithub.com\u002Fszagoruyko\u002Fdiracnets\u002Fissues\u002F15",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},22788,"报错 'AttributeError: module object has no attribute normalize' 如何处理？","该错误通常是由于使用的 PyTorch 版本过旧，缺少 torch.nn.functional.normalize 函数所致。\n解决方案有两种：\n1. 升级 PyTorch 到最新版本（推荐）。\n2. 如果必须使用旧版本，可以手动定义 normalize 函数替代：\ndef normalize(input, p=2, dim=1, eps=1e-12):\n    return input \u002F input.norm(p, dim).clamp(min=eps).expand_as(input)\n然后在代码中将 F.normalize 替换为自定义的 normalize 函数。\n注意：修改代码可能导致训练不稳定或精度下降，建议优先升级 PyTorch。","https:\u002F\u002Fgithub.com\u002Fszagoruyko\u002Fdiracnets\u002Fissues\u002F5",[]]