[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-taichi-dev--difftaichi":3,"tool-taichi-dev--difftaichi":65},[4,23,32,40,49,57],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":22},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,2,"2026-04-05T10:45:23",[13,14,15,16,17,18,19,20,21],"图像","数据工具","视频","插件","Agent","其他","语言模型","开发框架","音频","ready",{"id":24,"name":25,"github_repo":26,"description_zh":27,"stars":28,"difficulty_score":29,"last_commit_at":30,"category_tags":31,"status":22},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,3,"2026-04-04T04:44:48",[17,13,20,19,18],{"id":33,"name":34,"github_repo":35,"description_zh":36,"stars":37,"difficulty_score":29,"last_commit_at":38,"category_tags":39,"status":22},519,"PaddleOCR","PaddlePaddle\u002FPaddleOCR","PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来，转换成计算机可读取的结构化数据，让机器真正“看懂”图文内容。\n\n面对海量纸质或电子文档，PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域，它扮演着连接图像与大型语言模型（LLM）的桥梁角色，能将视觉信息直接转化为文本输入，助力智能问答、文档分析等应用场景落地。\n\nPaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显：不仅支持全球 100 多种语言的识别，还能在 Windows、Linux、macOS 等多个系统上运行，并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目，PaddleOCR 既能满足快速集成的需求，也能支撑前沿的视觉语言研究，是处理文字识别任务的理想选择。",74939,"2026-04-05T23:16:38",[19,13,20,18],{"id":41,"name":42,"github_repo":43,"description_zh":44,"stars":45,"difficulty_score":46,"last_commit_at":47,"category_tags":48,"status":22},3215,"awesome-machine-learning","josephmisiti\u002Fawesome-machine-learning","awesome-machine-learning 是一份精心整理的机器学习资源清单，汇集了全球优秀的机器学习框架、库和软件工具。面对机器学习领域技术迭代快、资源分散且难以甄选的痛点，这份清单按编程语言（如 Python、C++、Go 等）和应用场景（如计算机视觉、自然语言处理、深度学习等）进行了系统化分类，帮助使用者快速定位高质量项目。\n\n它特别适合开发者、数据科学家及研究人员使用。无论是初学者寻找入门库，还是资深工程师对比不同语言的技术选型，都能从中获得极具价值的参考。此外，清单还延伸提供了免费书籍、在线课程、行业会议、技术博客及线下聚会等丰富资源，构建了从学习到实践的全链路支持体系。\n\n其独特亮点在于严格的维护标准：明确标记已停止维护或长期未更新的项目，确保推荐内容的时效性与可靠性。作为机器学习领域的“导航图”，awesome-machine-learning 以开源协作的方式持续更新，旨在降低技术探索门槛，让每一位从业者都能高效地站在巨人的肩膀上创新。",72149,1,"2026-04-03T21:50:24",[20,18],{"id":50,"name":51,"github_repo":52,"description_zh":53,"stars":54,"difficulty_score":46,"last_commit_at":55,"category_tags":56,"status":22},2234,"scikit-learn","scikit-learn\u002Fscikit-learn","scikit-learn 是一个基于 Python 构建的开源机器学习库，依托于 SciPy、NumPy 等科学计算生态，旨在让机器学习变得简单高效。它提供了一套统一且简洁的接口，涵盖了从数据预处理、特征工程到模型训练、评估及选择的全流程工具，内置了包括线性回归、支持向量机、随机森林、聚类等在内的丰富经典算法。\n\n对于希望快速验证想法或构建原型的数据科学家、研究人员以及 Python 开发者而言，scikit-learn 是不可或缺的基础设施。它有效解决了机器学习入门门槛高、算法实现复杂以及不同模型间调用方式不统一的痛点，让用户无需重复造轮子，只需几行代码即可调用成熟的算法解决分类、回归、聚类等实际问题。\n\n其核心技术亮点在于高度一致的 API 设计风格，所有估算器（Estimator）均遵循相同的调用逻辑，极大地降低了学习成本并提升了代码的可读性与可维护性。此外，它还提供了强大的模型选择与评估工具，如交叉验证和网格搜索，帮助用户系统地优化模型性能。作为一个由全球志愿者共同维护的成熟项目，scikit-learn 以其稳定性、详尽的文档和活跃的社区支持，成为连接理论学习与工业级应用的最",65628,"2026-04-05T10:10:46",[20,18,14],{"id":58,"name":59,"github_repo":60,"description_zh":61,"stars":62,"difficulty_score":10,"last_commit_at":63,"category_tags":64,"status":22},3364,"keras","keras-team\u002Fkeras","Keras 是一个专为人类设计的深度学习框架，旨在让构建和训练神经网络变得简单直观。它解决了开发者在不同深度学习后端之间切换困难、模型开发效率低以及难以兼顾调试便捷性与运行性能的痛点。\n\n无论是刚入门的学生、专注算法的研究人员，还是需要快速落地产品的工程师，都能通过 Keras 轻松上手。它支持计算机视觉、自然语言处理、音频分析及时间序列预测等多种任务。\n\nKeras 3 的核心亮点在于其独特的“多后端”架构。用户只需编写一套代码，即可灵活选择 TensorFlow、JAX、PyTorch 或 OpenVINO 作为底层运行引擎。这一特性不仅保留了 Keras 一贯的高层易用性，还允许开发者根据需求自由选择：利用 JAX 或 PyTorch 的即时执行模式进行高效调试，或切换至速度最快的后端以获得最高 350% 的性能提升。此外，Keras 具备强大的扩展能力，能无缝从本地笔记本电脑扩展至大规模 GPU 或 TPU 集群，是连接原型开发与生产部署的理想桥梁。",63927,"2026-04-04T15:24:37",[20,14,18],{"id":66,"github_repo":67,"name":68,"description_en":69,"description_zh":70,"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":80,"owner_email":81,"owner_twitter":82,"owner_website":80,"owner_url":83,"languages":80,"stars":84,"forks":85,"last_commit_at":86,"license":80,"difficulty_score":46,"env_os":87,"env_gpu":88,"env_ram":87,"env_deps":89,"category_tags":94,"github_topics":95,"view_count":10,"oss_zip_url":80,"oss_zip_packed_at":80,"status":22,"created_at":102,"updated_at":103,"faqs":104,"releases":135},4293,"taichi-dev\u002Fdifftaichi","difftaichi","10 differentiable physical simulators built with Taichi differentiable programming (DiffTaichi, ICLR 2020)","DiffTaichi 是一个基于 Taichi 语言构建的可微分物理仿真框架，收录了 10 种不同的物理模拟器。它核心解决了传统物理仿真难以高效优化控制策略的难题：通过支持端到端的自动微分，用户可以直接利用梯度下降法来训练神经网络控制器，从而替代计算成本高且复杂的强化学习流程。\n\n在性能与开发效率上，DiffTaichi 表现卓越。其弹性物体模拟器的运行速度比 TensorFlow 实现快 188 倍，代码量却减少了 4.2 倍，同时保持了与原生 CUDA 相当的执行效率。大多数模拟器仅需 2 至 3 小时即可复现，极大降低了研发门槛。该工具内置了涵盖弹性体、流体、刚体及可微渲染等多种场景的示例，展示了从基础物理模拟到对抗性样本生成等高级应用。\n\nDiffTaichi 特别适合从事机器人控制、计算机图形学及物理人工智能领域的研究人员与开发者使用。如果你希望快速原型化可微分物理系统，或探索基于梯度的物理控制算法，DiffTaichi 提供了一个高性能且易用的理想平台。","\u003Cdiv align=\"center\">\n  \u003Ch3> python3 diffmpm.py \u003C\u002Fh3>\n  \u003Cimg  width=\"400px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_466edad89b22.gif\">\n\u003C\u002Fdiv>        \n\n\n# DiffTaichi: Differentiable Programming for Physical Simulation (ICLR 2020)\n\n*Yuanming Hu, Luke Anderson, Tzu-Mao Li, Qi Sun, Nathan Carr, Jonathan Ragan-Kelley, Frédo Durand*\n\n[[Paper]](https:\u002F\u002Farxiv.org\u002Fabs\u002F1910.00935) [[Video] (with instructions to reproduce every demo)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=Z1xvAZve9aE)\n\n### Differentiable programming in Taichi allows you to optimize neural network controllers efficiently with brute-force gradient descent, instead of using reinforcement learning.\n\nThe *DiffTaichi* differentiable programming framework is now officially part of [Taichi](https:\u002F\u002Fgithub.com\u002Fyuanming-hu\u002Ftaichi). This repo only contains examples.\n\nDiffTaichi significantly boosts the performance and productivity of differentiable physical simulators. For example, the differentiable elastic object simulator (ChainQueen) in DiffTaichi is 188x faster than an implementation in TensorFlow. The DiffTaichi version also runs as fast as the CUDA implementation, with the code being 4.2x shorter.\n\nMost of the 10 differentiable simulators can be implemented **within 2-3 hours**.\n\nQuestions regarding the simulators\u002Fautodiff compiler go to Yuanming Hu (yuanming __at__ mit.edu) or [Issues](https:\u002F\u002Fgithub.com\u002Fyuanming-hu\u002Fdifftaichi\u002Fissues).\n\n### Note: Updates on October 27 2021\nExamples are now compatible with Taichi `v0.8.3`. Please update Taichi if you are using an old version.\n\n## How to run\nStep 1: Install [`Taichi`](https:\u002F\u002Fgithub.com\u002Ftaichi-dev\u002Ftaichi) with `pip`:\n\n(Most examples do **not** need a GPU to run.)\n```bash\npython3 -m pip install taichi\n```\nStep 2: Run example scripts in the `examples` folder: (Please wait for all GIFs to load :-)\n\n\n### Differentiable Elastic Object Simulator [`python3 diffmpm.py`]\nGradient descent iteration 0 and gradient descent iteration 80: \n\n\u003Cimg width=\"400px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_68c8a634f80a.gif\"> \u003Cimg  width=\"400px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_466edad89b22.gif\">\n\n### Differentiable 3D Elastic Object Simulator [`python3 diffmpm3d.py`]\nGradient descent iteration 40: \n\n\u003Cimg width=\"800px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_12762c6c4576.gif\">\n\n### Differentiable 3D Fluid Simulator [`python3 liquid.py`]\nGradient descent iteration 450: \n\n\u003Cimg width=\"800px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_5a915fdaea0d.gif\">\n\n### Differentiable Height Field Water Simulator [`python3 wave.py`]\nGradient descent iteration 180:\n\n\u003Cimg width=\"400px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_72a419f58f90.gif\">\n\n### Differentiable (Adversarial) Water Renderer [`python3 water_renderer.py`]\nDifferentiable water simulation + differentiable water rendering + (differentiable) CNN\n\n**Optimization goal:** find an initial water height field, so that after simulation and shading, VGG16 thinks the squirrel image is a goldfish. Input image: VGG16=fox squirrel (42.21%)\n\n\u003Cimg width=\"800px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_b43afd75c16e.jpg\">\n\n**Left:** center activation .  **Right:** An activation that fools VGG (VGG16=goldfish (99.91%))\n\n\u003Cimg width=\"400px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_ff483ea9a3fe.gif\">\u003Cimg width=\"400px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_fb1542ef1ed7.gif\">\n\n\n### Differentiable Rigid Body Simulator [`python3 rigid_body.py [1\u002F2] train`]\n2048 time steps. Gardient descent iteration 20: \n\n\u003Cimg width=\"400px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_d9549c4e01d0.gif\"> \u003Cimg  width=\"400px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_e4b20ddfc1ec.gif\">\n\n### Differentiable Mass-Spring Simulator [`python3 mass_spring.py [1\u002F2\u002F3] train`]\n682 time steps.\nGardient descent iteration 20: \n\n\u003Cimg width=\"266px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_834a50242dc0.gif\">  \u003Cimg width=\"266px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_2af8d8a3b0e4.gif\">  \u003Cimg width=\"266px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_34c9550dd5b4.gif\"> \n\n### Differentiable Billiard Simulator [`python3 billiards.py`]\nGardient descent iteration 0 and gradient descent iteration 100: \n\n\u003Cimg width=\"400px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_7af481c0d458.gif\"> \u003Cimg  width=\"400px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_4bf46d586c9f.gif\">\n\nSee the video for the remaining two simulators.\n\n## Bibtex\n\n```\n@article{hu2019difftaichi,\n  title={DiffTaichi: Differentiable Programming for Physical Simulation},\n  author={Hu, Yuanming and Anderson, Luke and Li, Tzu-Mao and Sun, Qi and Carr, Nathan and Ragan-Kelley, Jonathan and Durand, Fr{\\'e}do},\n  journal={ICLR},\n  year={2020}\n}\n@article{hu2019taichi,\n  title={Taichi: a language for high-performance computation on spatially sparse data structures},\n  author={Hu, Yuanming and Li, Tzu-Mao and Anderson, Luke and Ragan-Kelley, Jonathan and Durand, Fr{\\'e}do},\n  journal={ACM Transactions on Graphics (TOG)},\n  volume={38},\n  number={6},\n  pages={201},\n  year={2019},\n  publisher={ACM}\n}\n```\n","\u003Cdiv align=\"center\">\n  \u003Ch3> python3 diffmpm.py \u003C\u002Fh3>\n  \u003Cimg  width=\"400px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_466edad89b22.gif\">\n\u003C\u002Fdiv>        \n\n\n# DiffTaichi：用于物理模拟的可微编程（ICLR 2020）\n\n*袁明·胡、卢克·安德森、李子茂、孙琪、内森·卡尔、乔纳森·拉根-凯利、弗雷多·杜兰*\n\n[[论文]](https:\u002F\u002Farxiv.org\u002Fabs\u002F1910.00935) [[视频]（附带重现每个演示的说明）](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=Z1xvAZve9aE)\n\n### Taichi 中的可微编程使您能够使用暴力梯度下降高效地优化神经网络控制器，而无需使用强化学习。\n\n*DiffTaichi* 可微编程框架现在已正式成为 [Taichi](https:\u002F\u002Fgithub.com\u002Fyuanming-hu\u002Ftaichi) 的一部分。此仓库仅包含示例。\n\nDiffTaichi 显著提升了可微物理模拟器的性能和开发效率。例如，DiffTaichi 中的可微弹性物体模拟器（ChainQueen）比 TensorFlow 中的实现快 188 倍。同时，其运行速度与 CUDA 实现相当，但代码量却减少了 4.2 倍。\n\n大多数 10 种可微模拟器都可以在 **2–3 小时内** 完成实现。\n\n有关模拟器或自动微分编译器的问题，请联系袁明·胡（yuanming __at__ mit.edu）或访问 [Issues](https:\u002F\u002Fgithub.com\u002Fyuanming-hu\u002Fdifftaichi\u002Fissues)。\n\n### 注意：2021 年 10月27日更新\n示例现已兼容 Taichi `v0.8.3`。如果您使用的是旧版本，请更新 Taichi。\n\n## 如何运行\n步骤 1：使用 `pip` 安装 [`Taichi`](https:\u002F\u002Fgithub.com\u002Ftaichi-dev\u002Ftaichi)：\n\n（大多数示例 **不需要** GPU 即可运行。）\n```bash\npython3 -m pip install taichi\n```\n步骤 2：运行 `examples` 文件夹中的示例脚本：（请稍等所有 GIF 加载完毕 :-)）\n\n\n### 可微弹性物体模拟器 [`python3 diffmpm.py`]\n梯度下降迭代 0 和梯度下降迭代 80：\n\n\u003Cimg width=\"400px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_68c8a634f80a.gif\"> \u003Cimg  width=\"400px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_466edad89b22.gif\">\n\n### 可微 3D 弹性物体模拟器 [`python3 diffmpm3d.py`]\n梯度下降迭代 40：\n\n\u003Cimg width=\"800px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_12762c6c4576.gif\">\n\n### 可微 3D 流体模拟器 [`python3 liquid.py`]\n梯度下降迭代 450：\n\n\u003Cimg width=\"800px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_5a915fdaea0d.gif\">\n\n### 可微高度场水模拟器 [`python3 wave.py`]\n梯度下降迭代 180：\n\n\u003Cimg width=\"400px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_72a419f58f90.gif\">\n\n### 可微（对抗性）水渲染器 [`python3 water_renderer.py`]\n可微水模拟 + 可微水渲染 + （可微）CNN\n\n**优化目标：** 找到一个初始水高度场，使得经过模拟和着色后，VGG16 认为松鼠图像是一条金鱼。输入图像：VGG16=狐狸松鼠（42.21%）\n\n\u003Cimg width=\"800px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_b43afd75c16e.jpg\">\n\n**左：** 中心激活。 **右：** 一种能欺骗 VGG 的激活（VGG16=金鱼（99.91%））\n\n\u003Cimg width=\"400px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_ff483ea9a3fe.gif\">\u003Cimg width=\"400px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_fb1542ef1ed7.gif\">\n\n\n### 可微刚体模拟器 [`python3 rigid_body.py [1\u002F2] train`]\n2048 个时间步。梯度下降迭代 20：\n\n\u003Cimg width=\"400px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_d9549c4e01d0.gif\"> \u003Cimg  width=\"400px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_e4b20ddfc1ec.gif\">\n\n### 可微质点-弹簧模拟器 [`python3 mass_spring.py [1\u002F2\u002F3] train`]\n682 个时间步。\n梯度下降迭代 20：\n\n\u003Cimg width=\"266px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_834a50242dc0.gif\">  \u003Cimg width=\"266px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_2af8d8a3b0e4.gif\">  \u003Cimg width=\"266px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_34c9550dd5b4.gif\"> \n\n### 可微台球模拟器 [`python3 billiards.py`]\n梯度下降迭代 0 和梯度下降迭代 100：\n\n\u003Cimg width=\"400px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_7af481c0d458.gif\"> \u003Cimg  width=\"400px\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_readme_4bf46d586c9f.gif\">\n\n其余两个模拟器请观看视频。\n\n## Bibtex\n\n```\n@article{hu2019difftaichi,\n  title={DiffTaichi: Differentiable Programming for Physical Simulation},\n  author={Hu, Yuanming and Anderson, Luke and Li, Tzu-Mao and Sun, Qi and Carr, Nathan and Ragan-Kelley, Jonathan and Durand, Fr{\\'e}do},\n  journal={ICLR},\n  year={2020}\n}\n@article{hu2019taichi,\n  title={Taichi: a language for high-performance computation on spatially sparse data structures},\n  author={Hu, Yuanming and Li, Tzu-Mao and Anderson, Luke and Ragan-Kelley, Jonathan and Durand, Fr{\\'e}do},\n  journal={ACM Transactions on Graphics (TOG)},\n  volume={38},\n  number={6},\n  pages={201},\n  year={2019},\n  publisher={ACM}\n}\n```","# DiffTaichi 快速上手指南\n\nDiffTaichi 是一个基于 Taichi 的可微分物理模拟框架，允许开发者通过暴力梯度下降高效优化神经网络控制器，而无需使用强化学习。该框架显著提升了可微分物理模拟器的性能与开发效率。\n\n## 环境准备\n\n- **操作系统**：Windows \u002F macOS \u002F Linux\n- **Python 版本**：Python 3.6 或更高版本\n- **硬件要求**：大多数示例无需 GPU 即可运行（CPU 模式支持良好）\n- **前置依赖**：无特殊系统级依赖，仅需安装 Python 包管理器 `pip`\n\n> 💡 提示：国内用户可使用清华或阿里镜像源加速 pip 安装。\n\n## 安装步骤\n\n1. 安装 Taichi（包含 DiffTaichi 核心功能）：\n\n```bash\npython3 -m pip install taichi -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n2. 克隆示例仓库（可选，用于运行官方示例）：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fyuanming-hu\u002Fdifftaichi.git\ncd difftaichi\n```\n\n> 注意：自 2021 年 10 月 27 日起，示例已兼容 Taichi v0.8.3+，请确保版本不低于此。\n\n## 基本使用\n\n进入 `examples` 目录后，可直接运行任意可微分模拟器示例。以下是最简单的弹性物体模拟示例：\n\n```bash\npython3 diffmpm.py\n```\n\n该脚本将启动一个可微分弹性物体模拟器，并自动执行梯度下降优化过程。你将看到两个窗口：\n- 左侧：初始状态（梯度下降迭代 0）\n- 右侧：优化后状态（如迭代 80）\n\n其他可用示例包括：\n\n- 3D 弹性体模拟：`python3 diffmpm3d.py`\n- 3D 流体模拟：`python3 liquid.py`\n- 高度场水波模拟：`python3 wave.py`\n- 可微分水渲染（对抗样本）：`python3 water_renderer.py`\n- 刚体模拟：`python3 rigid_body.py 1 train`\n- 质量弹簧系统：`python3 mass_spring.py 1 train`\n- 台球模拟：`python3 billiards.py`\n\n所有示例均无需修改代码即可运行，适合快速验证可微分物理编程能力。","某机器人研发团队正在为一款软体抓取机械手设计控制策略，目标是让机械手通过形变自适应地包裹并抓起形状不规则的易碎物体。\n\n### 没有 difftaichi 时\n- **训练效率极低**：团队不得不依赖强化学习（RL）进行试错训练，需要数天甚至数周才能收敛出一个可行的控制策略。\n- **代码实现复杂**：若尝试使用 TensorFlow 等通用框架手动构建可微分物理模拟器，代码量庞大且难以维护，运行速度比原生 CUDA 实现慢上百倍。\n- **梯度信息缺失**：由于物理仿真过程不可导，无法直接利用梯度下降优化控制器参数，导致无法精确调整机械手的受力细节。\n- **迭代周期漫长**：每次调整物理参数或网络结构后，都需要重新进行漫长的训练验证，严重拖慢了原型机的研发进度。\n\n### 使用 difftaichi 后\n- **训练速度飞跃**：利用 difftaichi 内置的可微分弹性物体模拟器，团队直接使用暴力梯度下降法，将原本数周的训练时间缩短至几小时，性能提升高达 188 倍。\n- **开发大幅减负**：仅用 2-3 小时即可复现复杂的软体物理仿真逻辑，代码长度仅为传统 CUDA 实现的四分之一，且无需 GPU 即可高效运行。\n- **精准参数优化**：物理仿真全程可导，系统能直接计算损失函数对控制参数的梯度，让机械手快速学会如何以最小形变代价稳固抓取物体。\n- **快速原型验证**：研究人员可以实时调整物理属性并立即看到优化结果，极大加速了从算法验证到真机部署的闭环流程。\n\ndifftaichi 通过将复杂的物理仿真转化为高效的梯度优化问题，让软体机器人的控制策略研发从“盲目试错”迈入了“精准导航”时代。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftaichi-dev_difftaichi_12762c6c.gif","taichi-dev","Taichi Developers","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Ftaichi-dev_c68c3a94.png","",null,"contact@taichi.graphics","TaichiGraphics","https:\u002F\u002Fgithub.com\u002Ftaichi-dev",2720,271,"2026-04-03T07:12:29","未说明","非必需 (大多数示例无需 GPU 即可运行)",{"notes":90,"python":91,"dependencies":92},"该工具主要作为 Taichi 框架的示例库存在，核心功能已集成至 Taichi 主仓库。运行前需通过 pip 安装 Taichi (版本建议 0.8.3 或以上)。大多数物理模拟示例不需要显卡即可执行。","3.x (README 中示例命令为 python3)",[93],"taichi>=0.8.3",[18],[96,97,98,99,100,101],"differentiable-programming","taichi","simulation","robotics","graphics","gpu","2026-03-27T02:49:30.150509","2026-04-06T15:55:55.160570",[105,110,115,120,125,130],{"id":106,"question_zh":107,"answer_zh":108,"source_url":109},19547,"更新 Taichi 后示例代码运行报错或损失值变为 NAN 怎么办？","这通常是由于 Taichi 版本不兼容导致的。例如，Taichi v0.3.23 到 v0.3.24 的变更曾导致 diffmpm.py 行为异常，而损失值变为 NAN 的问题已在 Taichi v0.4.1 中修复。请尝试升级 Taichi 到最新版本（如执行 `pip install taichi-nightly --upgrade` 或安装特定的稳定版），如果问题依旧，请检查是否使用了与示例代码匹配的 Taichi 版本。","https:\u002F\u002Fgithub.com\u002Ftaichi-dev\u002Fdifftaichi\u002Fissues\u002F10",{"id":111,"question_zh":112,"answer_zh":113,"source_url":114},19548,"运行示例脚本时遇到 'Taichi tensors must be accessed with integral indices' 错误如何解决？","该错误表明代码中使用浮点数作为张量索引，而 Taichi 要求必须使用整数索引（如 i32\u002Fi64）。解决方法是将用作索引的浮点数变量强制转换为整数，例如使用 `int()` 函数包裹。注意 `ti.floor()` 返回的仍是浮点数，不能直接用作索引。此外，确保已执行 `git pull` 更新了 difftaichi 仓库，因为相关脚本（如 smoke_taichi_gpu.py）可能已修复此类问题。","https:\u002F\u002Fgithub.com\u002Ftaichi-dev\u002Fdifftaichi\u002Fissues\u002F4",{"id":116,"question_zh":117,"answer_zh":118,"source_url":119},19549,"在优化循环中是否还需要手动调用 clear_states() 清除梯度？","通常情况下不需要。Taichi 的 `ti.Tape()` 上下文管理器在进入时会自动清除所有变量的梯度。但是，如果代码中存在像 `v_inc` 这样用于累计数值的变量（而非单纯的梯度变量），则仍然需要手动将其重置为 0（例如 `v_inc[t, i] = ti.Vector([0.0, 0.0])`），以确保每次迭代从正确状态开始。普通的梯度变量无需额外调用 clear()。","https:\u002F\u002Fgithub.com\u002Ftaichi-dev\u002Fdifftaichi\u002Fissues\u002F29",{"id":121,"question_zh":122,"answer_zh":123,"source_url":124},19550,"mass_spring.py 中为什么要将正弦波（sinusoids）作为神经网络控制器的输入？","这是为了构建闭环控制系统。在 mass_spring 示例中，神经网络（nn1）的输入状态包含了目标位置信息与当前状态的组合。引入正弦波信号通常是为了提供时间编码或周期性参考信号，帮助控制器学习随时间变化的策略。虽然论文中未详细展开，但这种设计使得网络能够根据时间步长调整输出，从而实现更复杂的动态控制。","https:\u002F\u002Fgithub.com\u002Ftaichi-dev\u002Fdifftaichi\u002Fissues\u002F28",{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},19551,"如何获取 DiffTaichi 的 3D 渲染可视化效果及软体机器人设计指南？","目前的 DiffTaichi 仓库主要关注物理模拟和微分，3D 案例需要复杂的渲染后处理，官方计划集成另一个开源项目 taichi_elements (https:\u002F\u002Fgithub.com\u002Ftaichi-dev\u002Ftaichi_elements) 来实现 3D 渲染。关于软体机器人设计：对于 MPM 案例，基本构建块是填充粒子的矩形（参考 `diffmpm3d` 中的 `Scene` 类）；对于质量 - 弹簧案例，基本构建块是边为弹簧的正方形。官方的内部设计工具尚在开发中，目前可参考现有示例代码中的场景构建逻辑。","https:\u002F\u002Fgithub.com\u002Ftaichi-dev\u002Fdifftaichi\u002Fissues\u002F49",{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},19552,"运行脚本时出现数组越界或索引断言失败（Assertion failure: Accessing Tensor...）怎么办？","这通常是由代码中的索引错误引起的（例如混淆了对象索引和隐藏层索引）。维护者已确认并修复了 mass_spring.py 等脚本中的此类索引 Bug（如将 `v[t, i]` 修正为 `v[t, j]`）。如果遇到此错误，请首先执行 `git pull` 拉取最新代码以获取修复补丁。如果是旧版本 Taichi 用户，建议开启调试模式运行脚本以定位具体的越界访问位置，并检查张量定义维度与访问索引是否匹配。","https:\u002F\u002Fgithub.com\u002Ftaichi-dev\u002Fdifftaichi\u002Fissues\u002F24",[]]