[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-MilesCranmer--lagrangian_nns":3,"tool-MilesCranmer--lagrangian_nns":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 将是理想的起点。",85092,2,"2026-04-10T11:13:16",[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},5784,"funNLP","fighting41love\u002FfunNLP","funNLP 是一个专为中文自然语言处理（NLP）打造的超级资源库，被誉为\"NLP 民工的乐园”。它并非单一的软件工具，而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。\n\n面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点，funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具，还独特地收录了丰富的垂直领域资源，如法律、医疗、金融行业的专用词库与数据集，甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性，从基础的字典词典到前沿的 BERT、GPT-2 模型代码，再到高质量的标注数据和竞赛方案，应有尽有。\n\n无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师，还是从事人工智能研究的学者，都能在这里找到急需的“武器弹药”。对于开发者而言，它能大幅减少寻找数据和复现模型的时间；对于研究者，它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神，极大地降低了中文自然语言处理的开发与研究成本，是中文 AI 社区不可或缺的宝藏仓库。",79857,1,"2026-04-08T20:11:31",[19,14,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},5773,"cs-video-courses","Developer-Y\u002Fcs-video-courses","cs-video-courses 是一个精心整理的计算机科学视频课程清单，旨在为自学者提供系统化的学习路径。它汇集了全球知名高校（如加州大学伯克利分校、新南威尔士大学等）的完整课程录像，涵盖从编程基础、数据结构与算法，到操作系统、分布式系统、数据库等核心领域，并深入延伸至人工智能、机器学习、量子计算及区块链等前沿方向。\n\n面对网络上零散且质量参差不齐的教学资源，cs-video-courses 解决了学习者难以找到成体系、高难度大学级别课程的痛点。该项目严格筛选内容，仅收录真正的大学层级课程，排除了碎片化的简短教程或商业广告，确保用户能接触到严谨的学术内容。\n\n这份清单特别适合希望夯实计算机基础的开发者、需要补充特定领域知识的研究人员，以及渴望像在校生一样系统学习计算机科学的自学者。其独特的技术亮点在于分类极其详尽，不仅包含传统的软件工程与网络安全，还细分了生成式 AI、大语言模型、计算生物学等新兴学科，并直接链接至官方视频播放列表，让用户能一站式获取高质量的教育资源，免费享受世界顶尖大学的课堂体验。",79792,"2026-04-08T22:03:59",[18,13,14,20],{"id":41,"name":42,"github_repo":43,"description_zh":44,"stars":45,"difficulty_score":46,"last_commit_at":47,"category_tags":48,"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":50,"name":51,"github_repo":52,"description_zh":53,"stars":54,"difficulty_score":46,"last_commit_at":55,"category_tags":56,"status":22},519,"PaddleOCR","PaddlePaddle\u002FPaddleOCR","PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来，转换成计算机可读取的结构化数据，让机器真正“看懂”图文内容。\n\n面对海量纸质或电子文档，PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域，它扮演着连接图像与大型语言模型（LLM）的桥梁角色，能将视觉信息直接转化为文本输入，助力智能问答、文档分析等应用场景落地。\n\nPaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显：不仅支持全球 100 多种语言的识别，还能在 Windows、Linux、macOS 等多个系统上运行，并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目，PaddleOCR 既能满足快速集成的需求，也能支撑前沿的视觉语言研究，是处理文字识别任务的理想选择。",75832,"2026-04-17T21:58:25",[19,13,20,18],{"id":58,"name":59,"github_repo":60,"description_zh":61,"stars":62,"difficulty_score":29,"last_commit_at":63,"category_tags":64,"status":22},3215,"awesome-machine-learning","josephmisiti\u002Fawesome-machine-learning","awesome-machine-learning 是一份精心整理的机器学习资源清单，汇集了全球优秀的机器学习框架、库和软件工具。面对机器学习领域技术迭代快、资源分散且难以甄选的痛点，这份清单按编程语言（如 Python、C++、Go 等）和应用场景（如计算机视觉、自然语言处理、深度学习等）进行了系统化分类，帮助使用者快速定位高质量项目。\n\n它特别适合开发者、数据科学家及研究人员使用。无论是初学者寻找入门库，还是资深工程师对比不同语言的技术选型，都能从中获得极具价值的参考。此外，清单还延伸提供了免费书籍、在线课程、行业会议、技术博客及线下聚会等丰富资源，构建了从学习到实践的全链路支持体系。\n\n其独特亮点在于严格的维护标准：明确标记已停止维护或长期未更新的项目，确保推荐内容的时效性与可靠性。作为机器学习领域的“导航图”，awesome-machine-learning 以开源协作的方式持续更新，旨在降低技术探索门槛，让每一位从业者都能高效地站在巨人的肩膀上创新。",72149,"2026-04-03T21:50:24",[20,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":81,"owner_email":82,"owner_twitter":76,"owner_website":83,"owner_url":84,"languages":85,"stars":90,"forks":91,"last_commit_at":92,"license":93,"difficulty_score":46,"env_os":94,"env_gpu":95,"env_ram":96,"env_deps":97,"category_tags":107,"github_topics":82,"view_count":10,"oss_zip_url":82,"oss_zip_packed_at":82,"status":22,"created_at":108,"updated_at":109,"faqs":110,"releases":145},8886,"MilesCranmer\u002Flagrangian_nns","lagrangian_nns","Lagrangian Neural Networks","lagrangian_nns 是一个基于神经网络的开源项目，旨在让机器学习物理系统中的“拉格朗日量”，从而自动推导出系统的运动方程。传统方法往往依赖特定的坐标形式或难以计算广义动量，而 lagrangian_nns 突破了这些限制：它不需要规范坐标，能在广义动量难求解的场景（如双摆系统）中表现优异，甚至适用于非完整约束系统（如一维波动方程）。\n\n该项目特别适合从事物理建模、科学计算或强化学习的研究人员和开发者使用。如果你希望从数据中学习连续时间动力学，并保持能量等守恒定律的精确性，lagrangian_nns 提供了一个灵活且通用的解决方案。其核心亮点在于利用 JAX 自动微分技术，从神经网络参数化的拉格朗日函数中直接导出欧拉 - 拉格朗日方程，实现端到端的动力学建模。\n\n虽然项目最初基于较旧版本的 JAX 开发，但核心运动方程代码已设计为版本无关，便于适配现代环境。配合提供的教程笔记本，用户可以快速上手，在双摆、狭义相对论、波动方程等经典物理问题上进行实验与扩展。","# [Lagrangian Neural Networks](https:\u002F\u002Farxiv.org\u002Fabs\u002F2003.04630)\nMiles Cranmer, Sam Greydanus, Stephan Hoyer, Peter Battaglia, David Spergel, Shirley Ho\n\n![overall-idea.png](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FMilesCranmer_lagrangian_nns_readme_23836b920aea.png)\n\n* [Paper](https:\u002F\u002Farxiv.org\u002Fabs\u002F2003.04630)\n* [Blog](https:\u002F\u002Fgreydanus.github.io\u002F2020\u002F03\u002F10\u002Flagrangian-nns\u002F)\n* [Self-Contained Tutorial](notebooks\u002FLNN_Tutorial.ipynb)\n* [Paper example notebook: double pendulum](notebooks\u002FDoublePendulum.ipynb)\n* [Paper example notebook: special relativity](notebooks\u002FSpecialRelativity.ipynb)\n* [Paper example notebook: wave equation](notebooks\u002FWaveEquation.ipynb)\n\n> [!WARNING]\n> This project was developed with JAX 0.1.55 (2020). For compatibility, use pixi to install the original environment ([see guide](#quick-start)). Alternatively, adapt the [core equation snippets](#core-equation-of-motion) below for modern JAX.\n\n## Summary\n\nIn this project we propose Lagrangian Neural Networks (LNNs), which can parameterize arbitrary Lagrangians using neural networks. In contrast to Hamiltonian Neural Networks, these models do not require canonical coordinates and perform well in situations where generalized momentum is difficult to compute (e.g., the double pendulum). This is particularly appealing for use with a learned latent representation, a case where HNNs struggle. Unlike [previous work on learning Lagrangians](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1907.04490.pdf), LNNs are fully general and extend to non-holonomic systems such as the 1D wave equation.\n\n|\t| Neural Networks  | [Neural ODEs](https:\u002F\u002Farxiv.org\u002Fabs\u002F1806.07366) | [HNN](https:\u002F\u002Farxiv.org\u002Fabs\u002F1906.01563)  | [DLN (ICLR'19)](https:\u002F\u002Farxiv.org\u002Fabs\u002F1907.04490) | LNN (this work) |\n| ------------- |:------------:| :------------:| :------------:| :------------:| :------------:|\n| Learns dynamics | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |\n| Learns continuous-time dynamics | | ✔️ | ✔️ | ✔️ | ✔️ |\n| Learns exact conservation laws | | | ✔️ | ✔️ | ✔️ |\n| Learns from arbitrary coordinates| ✔️ | ✔️ || ✔️ | ✔️ |\n| Learns arbitrary Lagrangians | | |  | | ✔️ |\n\n\n## Core Equation of Motion\n\nThe key innovation of LNNs is the automatic derivation of equations of motion from learned Lagrangians. The core equation of motion is **version-independent** and can be adapted to any JAX version:\n\n```python\nimport jax\nimport jax.numpy as jnp\n\ndef lagrangian_eom(lagrangian, state, t=None):\n    \"\"\"Compute Euler-Lagrange equation of motion.\n\n    Args:\n        lagrangian: A function L(q, q_dot) representing the Lagrangian\n        state: Concatenated position q and velocity q_dot\n\n    Returns:\n        Concatenated velocity and acceleration\n    \"\"\"\n    q, q_dot = jnp.split(state, 2)\n\n    # Euler-Lagrange equation: d\u002Fdt(∂L\u002F∂q̇) - ∂L\u002F∂q = 0\n    # Rearranged to solve for acceleration q_ddot\n    q_ddot = (jnp.linalg.pinv(jax.hessian(lagrangian, 1)(q, q_dot))\n              @ (jax.grad(lagrangian, 0)(q, q_dot)\n                 - jax.jacobian(jax.jacobian(lagrangian, 1), 0)(q, q_dot) @ q_dot))\n\n    return jnp.concatenate([q_dot, q_ddot])\n\n\n# Custom initialization for MLPs learning Lagrangians\ndef custom_init(layer_sizes, seed=0):\n    \"\"\"Initialize MLP to learn Lagrangians more effectively.\"\"\"\n    # See lnn\u002Fcore.py for full implementation\n    # Uses optimized scale for each layer\n```\n\nThis equation of motion works with any JAX version. The rest of the codebase is maintained with JAX 0.1.55 for reproducibility of the paper's environment.\n\n\n## Installation\n\nThis project requires specific versions of JAX and other dependencies from early 2020 to ensure reproducibility. We use [pixi](https:\u002F\u002Fpixi.sh) for reproducible environment management.\n\n### Quick Start\n\n1. **Install pixi** (if not already installed):\n   ```bash\n   curl -fsSL https:\u002F\u002Fpixi.sh\u002Finstall.sh | bash\n   ```\n   Or via Homebrew:\n   ```bash\n   brew install pixi\n   ```\n\n2. **Clone this repository and install dependencies**:\n   ```bash\n   git clone https:\u002F\u002Fgithub.com\u002FMilesCranmer\u002Flagrangian_nns.git\n   cd lagrangian_nns\n   pixi install\n   ```\n\n3. **Run the notebooks**:\n   ```bash\n   pixi run jupyter notebook\n   ```\n\n### Dependencies\n\nThe environment includes:\n * Python 3.7\n * JAX 0.1.55 & jaxlib 0.1.37 (January 2020 versions)\n * NumPy 1.19.5\n * Matplotlib 3.1.2 (visualization)\n * MoviePy 1.0.0 (visualization)\n * celluloid 0.2.0 (visualization)\n\nAll dependencies are pinned to versions from early 2020 to ensure the code behaves exactly as it did when the paper was published.\n","# [拉格朗日神经网络](https:\u002F\u002Farxiv.org\u002Fabs\u002F2003.04630)\n迈尔斯·克兰默、萨姆·格雷达努斯、施特凡·霍耶尔、彼得·巴塔利亚、大卫·斯珀格尔、雪莉·霍\n\n![overall-idea.png](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FMilesCranmer_lagrangian_nns_readme_23836b920aea.png)\n\n* [论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F2003.04630)\n* [博客](https:\u002F\u002Fgreydanus.github.io\u002F2020\u002F03\u002F10\u002Flagrangian-nns\u002F)\n* [自包含教程](notebooks\u002FLNN_Tutorial.ipynb)\n* [论文示例笔记本：双摆](notebooks\u002FDoublePendulum.ipynb)\n* [论文示例笔记本：狭义相对论](notebooks\u002FSpecialRelativity.ipynb)\n* [论文示例笔记本：波动方程](notebooks\u002FWaveEquation.ipynb)\n\n> [!警告]\n> 本项目是使用 JAX 0.1.55（2020年）开发的。为保持兼容性，请使用 pixi 安装原始环境（[参见指南](#quick-start)）。或者，您可以根据下方的[核心运动方程片段](#core-equation-of-motion)为现代 JAX 进行适配。\n\n## 摘要\n\n在本项目中，我们提出了拉格朗日神经网络（LNNs），它能够利用神经网络参数化任意拉格朗日量。与哈密顿神经网络不同，这些模型不需要正则坐标，并且在广义动量难以计算的情况下表现良好（例如双摆系统）。这一点对于结合学习到的潜在表征尤为吸引人，而哈密顿神经网络在这种情况下往往难以处理。与[先前关于学习拉格朗日量的工作](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1907.04490.pdf)相比，LNNs 具有完全通用性，并可扩展到非完整系统，如一维波动方程。\n\n| | 神经网络 | [神经ODE](https:\u002F\u002Farxiv.org\u002Fabs\u002F1806.07366) | [HNN](https:\u002F\u002Farxiv.org\u002Fabs\u002F1906.01563) | [DLN (ICLR'19)](https:\u002F\u002Farxiv.org\u002Fabs\u002F1907.04490) | LNN（本工作） |\n| ------------- |:------------:| :------------:| :------------:| :------------:| :------------:|\n| 学习动力学 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |\n| 学习连续时间动力学 | | ✔️ | ✔️ | ✔️ | ✔️ |\n| 学习精确守恒定律 | | | ✔️ | ✔️ | ✔️ |\n| 从任意坐标学习 | ✔️ | ✔️ || ✔️ | ✔️ |\n| 学习任意拉格朗日量 | | |  | | ✔️ |\n\n\n## 核心运动方程\n\nLNNs 的关键创新在于能够自动从学习到的拉格朗日量推导出运动方程。核心运动方程是**版本无关**的，可以适配任何 JAX 版本：\n\n```python\nimport jax\nimport jax.numpy as jnp\n\ndef lagrangian_eom(lagrangian, state, t=None):\n    \"\"\"计算欧拉-拉格朗日运动方程。\n\n    参数:\n        lagrangian: 表示拉格朗日量的函数 L(q, q_dot)\n        state: 位置 q 和速度 q_dot 的拼接向量\n\n    返回:\n        速度和加速度的拼接向量\n    \"\"\"\n    q, q_dot = jnp.split(state, 2)\n\n    # 欧拉-拉格朗日方程：d\u002Fdt(∂L\u002F∂q̇) - ∂L\u002F∂q = 0\n    # 重新排列以求解加速度 q_ddot\n    q_ddot = (jnp.linalg.pinv(jax.hessian(lagrangian, 1)(q, q_dot))\n              @ (jax.grad(lagrangian, 0)(q, q_dot)\n                 - jax.jacobian(jax.jacobian(lagrangian, 1), 0)(q, q_dot) @ q_dot))\n\n    return jnp.concatenate([q_dot, q_ddot])\n\n\n# 用于学习拉格朗日量的 MLP 自定义初始化\ndef custom_init(layer_sizes, seed=0):\n    \"\"\"初始化 MLP，使其更有效地学习拉格朗日量\"\"\"\n    # 完整实现请参见 lnn\u002Fcore.py\n    # 使用每层优化后的尺度\n```\n\n该运动方程适用于任何 JAX 版本。代码库的其余部分则使用 JAX 0.1.55 维护，以确保与论文发表时的环境一致，从而实现结果的可重复性。\n\n\n## 安装\n\n为确保结果的可重复性，本项目需要特定版本的 JAX 及其他依赖项，这些依赖项均来自 2020 年初。我们使用 [pixi](https:\u002F\u002Fpixi.sh) 来管理可重复的环境。\n\n### 快速入门\n\n1. **安装 pixi**（如果尚未安装）：\n   ```bash\n   curl -fsSL https:\u002F\u002Fpixi.sh\u002Finstall.sh | bash\n   ```\n   或通过 Homebrew：\n   ```bash\n   brew install pixi\n   ```\n\n2. **克隆本仓库并安装依赖项**：\n   ```bash\n   git clone https:\u002F\u002Fgithub.com\u002FMilesCranmer\u002Flagrangian_nns.git\n   cd lagrangian_nns\n   pixi install\n   ```\n\n3. **运行笔记本**：\n   ```bash\n   pixi run jupyter notebook\n   ```\n\n### 依赖项\n\n环境包含以下内容：\n * Python 3.7\n * JAX 0.1.55 和 jaxlib 0.1.37（2020年1月版本）\n * NumPy 1.19.5\n * Matplotlib 3.1.2（可视化工具）\n * MoviePy 1.0.0（可视化工具）\n * celluloid 0.2.0（可视化工具）\n\n所有依赖项都被固定在 2020 年初的版本上，以确保代码的行为与论文发表时完全一致。","# Lagrangian Neural Networks (LNN) 快速上手指南\n\nLagrangian Neural Networks (LNN) 是一种利用神经网络参数化任意拉格朗日量的模型。与哈密顿神经网络（HNN）不同，LNN 不需要正则坐标，特别适用于广义动量难以计算的场景（如双摆），且能处理非完整系统（如一维波动方程）。\n\n## 环境准备\n\n本项目基于 2020 年初的 JAX 版本（0.1.55）开发以确保论文结果的可复现性。为了兼容旧版依赖，官方推荐使用 **pixi** 进行环境管理。\n\n*   **操作系统**: Linux 或 macOS (Windows 用户建议使用 WSL2)\n*   **前置工具**: `git`, `curl` (或 `brew`)\n*   **核心依赖**:\n    *   Python 3.7\n    *   JAX 0.1.55 & jaxlib 0.1.37\n    *   NumPy 1.19.5\n    *   Matplotlib, MoviePy, celluloid (用于可视化)\n\n> **注意**：由于依赖版本较老，不建议直接在现代 Python 环境中通过 `pip` 安装，务必使用下文提供的 `pixi` 方案以隔离环境。\n\n## 安装步骤\n\n### 1. 安装 Pixi\n如果尚未安装 `pixi`，请通过以下命令安装：\n\n**Linux\u002FmacOS (通用脚本):**\n```bash\ncurl -fsSL https:\u002F\u002Fpixi.sh\u002Finstall.sh | bash\n```\n\n**macOS (Homebrew):**\n```bash\nbrew install pixi\n```\n\n### 2. 克隆项目并安装依赖\n获取源代码并使用 `pixi` 创建包含特定版本依赖的虚拟环境：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FMilesCranmer\u002Flagrangian_nns.git\ncd lagrangian_nns\npixi install\n```\n\n### 3. 启动开发环境\n安装完成后，使用以下命令启动 Jupyter Notebook 以运行示例：\n\n```bash\npixi run jupyter notebook\n```\n\n## 基本使用\n\nLNN 的核心在于自动从学习到的拉格朗日量中推导运动方程。以下是最小化的核心代码示例，展示了如何定义欧拉 - 拉格朗日运动方程。此代码片段独立于 JAX 版本，可直接在现代环境中测试逻辑。\n\n### 核心运动方程实现\n\n```python\nimport jax\nimport jax.numpy as jnp\n\ndef lagrangian_eom(lagrangian, state, t=None):\n    \"\"\"Compute Euler-Lagrange equation of motion.\n\n    Args:\n        lagrangian: A function L(q, q_dot) representing the Lagrangian\n        state: Concatenated position q and velocity q_dot\n\n    Returns:\n        Concatenated velocity and acceleration\n    \"\"\"\n    q, q_dot = jnp.split(state, 2)\n\n    # Euler-Lagrange equation: d\u002Fdt(∂L\u002F∂q̇) - ∂L\u002F∂q = 0\n    # Rearranged to solve for acceleration q_ddot\n    q_ddot = (jnp.linalg.pinv(jax.hessian(lagrangian, 1)(q, q_dot))\n              @ (jax.grad(lagrangian, 0)(q, q_dot)\n                 - jax.jacobian(jax.jacobian(lagrangian, 1), 0)(q, q_dot) @ q_dot))\n\n    return jnp.concatenate([q_dot, q_ddot])\n```\n\n### 运行示例\n安装完成后，项目根目录下的 `notebooks` 文件夹包含了完整的教程和论文复现实例：\n*   `LNN_Tutorial.ipynb`: 自助式入门教程。\n*   `DoublePendulum.ipynb`: 双摆系统示例。\n*   `SpecialRelativity.ipynb`: 狭义相对论示例。\n*   `WaveEquation.ipynb`: 波动方程示例。\n\n在启动的 Jupyter 界面中打开上述任意笔记本即可开始实验。","某机器人实验室团队正在尝试通过观测数据，让机械臂自主学会双摆（Double Pendulum）这种高度非线性系统的物理运动规律，以便进行更精准的控制预测。\n\n### 没有 lagrangian_nns 时\n- **坐标依赖性强**：传统哈密顿神经网络（HNN）必须使用难以计算的“正则动量”和特定规范坐标，而双摆系统在广义坐标下动量极难推导，导致模型无法直接应用。\n- **物理守恒失效**：普通神经网络或 Neural ODE 虽然能拟合轨迹，但无法保证能量守恒等物理定律，长时间预测后会出现能量发散，仿真结果严重失真。\n- **隐空间学习困难**：当试图从摄像头画面中学习潜在状态表示时，由于缺乏对任意拉格朗日量的参数化能力，模型难以在隐空间中构建符合物理意义的动力学方程。\n- **非完整系统受限**：现有方法难以扩展到如波动方程等非完整约束系统，限制了其在复杂连续介质力学场景中的通用性。\n\n### 使用 lagrangian_nns 后\n- **任意坐标适配**：lagrangian_nns 直接利用广义坐标和速度构建拉格朗日函数，无需计算复杂的正则动量，轻松搞定双摆等复杂关节系统的建模。\n- **自动保持守恒律**：通过自动微分推导欧拉 - 拉格朗日方程，模型内嵌了精确的能量守恒机制，即使进行长时序预测，系统总能量依然稳定，仿真极度逼真。\n- **隐空间动力学解锁**：该工具支持学习任意拉格朗日量，使得团队成功从高维图像数据中提取出符合物理规律的潜变量，实现了端到端的物理感知控制。\n- **通用性大幅扩展**：不仅适用于质点系统，还能自然延伸至一维波动方程等非完整系统，为处理更广泛的连续物理现象提供了统一框架。\n\nlagrangian_nns 的核心价值在于让神经网络不再只是“曲线拟合器”，而是成为能从数据中自动发现并遵守物理守恒定律的“物理引擎”。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FMilesCranmer_lagrangian_nns_edd8d45d.png","MilesCranmer","Miles Cranmer","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FMilesCranmer_5c5c94b5.jpg","Assistant Professor at University of Cambridge.\r\n\r\nWorks on AI for the physical sciences.","University of Cambridge","Cambridge, UK",null,"astroautomata.com","https:\u002F\u002Fgithub.com\u002FMilesCranmer",[86],{"name":87,"color":88,"percentage":89},"Python","#3572A5",100,556,109,"2026-04-12T20:05:47","Apache-2.0","Linux, macOS","未说明 (基于 JAX，通常支持 CPU\u002FGPU\u002FTPU，但 README 未指定具体显卡或 CUDA 版本要求)","未说明",{"notes":98,"python":99,"dependencies":100},"该项目为复现 2020 年论文环境，依赖特定旧版本库（JAX 0.1.55）。强烈建议使用 pixi 工具安装环境以确保兼容性。若需在现代 JAX 版本运行，需手动适配核心运动方程代码片段。","3.7",[101,102,103,104,105,106],"jax==0.1.55","jaxlib==0.1.37","numpy==1.19.5","matplotlib==3.1.2","moviepy==1.0.0","celluloid==0.2.0",[18],"2026-03-27T02:49:30.150509","2026-04-18T14:34:03.615282",[111,116,121,126,131,136,141],{"id":112,"question_zh":113,"answer_zh":114,"source_url":115},39847,"如何配置正确的依赖环境以复现论文结果（特别是 JAX 版本问题）？","由于项目依赖较旧版本的 JAX（论文发布时为 0.1.55）和 Python 3.7\u002F3.8，直接在新环境中运行会报错。推荐以下两种解决方案：\n1. 使用 pixi 锁定依赖：创建 `pixi.toml` 文件，指定 python=3.7.*, jax==0.1.55, jaxlib==0.1.37, numpy\u003C=1.18.0 等具体版本。\n2. 使用 pypi-timemachine：安装该工具并将时间设定在 2020 年 1 月 1 日左右，配合 Python 3.8 安装当时的依赖包。\n维护者已合并相关修复（见 PR #12），但手动锁定版本是最稳妥的方式。","https:\u002F\u002Fgithub.com\u002FMilesCranmer\u002Flagrangian_nns\u002Fissues\u002F1",{"id":117,"question_zh":118,"answer_zh":119,"source_url":120},39848,"遇到 'odeint() got an unexpected keyword argument mxsteps' 错误如何解决？","这是由 JAX 版本更新导致的参数名称变更。在新版 JAX 中，`mxsteps` 已被重命名为 `mxstep`（去掉了末尾的 's'）。\n解决方法：在代码库中进行全局搜索替换，将所有的 `mxsteps` 改为 `mxstep`。或者，降级 JAX 到 0.1.55 版本以避免此兼容性问题。","https:\u002F\u002Fgithub.com\u002FMilesCranmer\u002Flagrangian_nns\u002Fissues\u002F11",{"id":122,"question_zh":123,"answer_zh":124,"source_url":125},39849,"运行代码时出现 'ImportError: attempted relative import with no known parent package' 错误怎么办？","这是由于相对导入路径识别失败导致的。如果直接使用 `python script.py` 运行脚本可能会触发此错误。\n解决方法：\n1. 推荐使用模块方式运行：`python -m src.hyperopt.example`。\n2. 修改导入语句：将 `from HyperparameterSearch import ...` 改为绝对导入 `from hyperopt.HyperparameterSearch import ...`（注意包名的小写和层级结构）。","https:\u002F\u002Fgithub.com\u002FMilesCranmer\u002Flagrangian_nns\u002Fissues\u002F10",{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},39850,"使用 GLN loss 训练时出现 'Gradient only defined for scalar-output functions' 错误的原因及修复方法？","该错误通常发生在对非标量输出函数求梯度时。在 `lagrangian_eom` 函数中，`jnp.squeeze` 的使用可能导致了维度不匹配，使得梯度计算失败。\n解决方法：在 `learned_dynamics` 函数中，移除或调整 `jnp.squeeze(nn_forward_fn(params, state), axis=-1)` 这一行。确保传递给梯度函数的输出是标量或形状正确。维护者已在 PR #12 中修复了此类由 JAX 更新引起的兼容性问题。","https:\u002F\u002Fgithub.com\u002FMilesCranmer\u002Flagrangian_nns\u002Fissues\u002F6",{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},39851,"在 Google Colab 上运行双摆示例笔记本时遇到 JAX 导入错误或动态追踪器错误如何处理？","这通常是因为 Colab 默认安装的 JAX 版本过新，与项目代码不兼容。\n解决方法：\n1. 不要直接使用 Colab 默认环境，而是通过 `!pip install jax==0.1.55 jaxlib==0.1.37` 强制安装旧版本。\n2. 或者按照项目最新修复（PR #8 和 #12），代码已尝试适配新版 JAX，但最稳定的方法仍是使用 `pixi` 或 `pypi-timemachine` 还原到 2020 年初的开发环境。","https:\u002F\u002Fgithub.com\u002FMilesCranmer\u002Flagrangian_nns\u002Fissues\u002F3",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},39852,"项目使用的数据集在哪里可以下载？","该项目并没有提供外部下载的数据集文件。所有实验数据（如双摆轨迹）都是在代码运行时动态生成的。\n请查看 `experiment_dblpend\u002Fdata.py` 或相关笔记本文件，其中包含 `get_dataset` 或 `get_trajectory_analytic` 等函数，它们会根据物理方程实时生成所需的训练和测试数据。","https:\u002F\u002Fgithub.com\u002FMilesCranmer\u002Flagrangian_nns\u002Fissues\u002F9",{"id":142,"question_zh":143,"answer_zh":144,"source_url":120},39853,"遇到 'UnexpectedTracerError: Found a JAX Tracer object passed as an argument...' 错误如何解决？","此错误表明在 `custom_vjp` 函数中错误地传递了 JAX Tracer 对象作为不可微分参数（nondiff_argnums）。\n解决方法：检查涉及 `custom_vjp` 的函数定义，确保 `nondiff_argnums` 仅用于真正的非数组参数（如整数、字符串或函数对象），不要将数组值参数标记为不可微分。如果问题持续，建议回退到 JAX 0.1.55 版本，因为新版 JAX 对此类检查更加严格。",[]]