[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-jonasrauber--eagerpy":3,"tool-jonasrauber--eagerpy":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 真正成长为懂上",149489,2,"2026-04-10T11:32:46",[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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[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},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"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":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":77,"owner_email":77,"owner_twitter":77,"owner_website":78,"owner_url":79,"languages":80,"stars":89,"forks":90,"last_commit_at":91,"license":92,"difficulty_score":93,"env_os":94,"env_gpu":95,"env_ram":96,"env_deps":97,"category_tags":105,"github_topics":106,"view_count":32,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":114,"updated_at":115,"faqs":116,"releases":147},6318,"jonasrauber\u002Feagerpy","eagerpy","PyTorch, TensorFlow, JAX and NumPy — all of them natively using the same code","EagerPy 是一个灵活的 Python 框架，旨在让开发者编写一套代码即可原生兼容 PyTorch、TensorFlow、JAX 和 NumPy 四大主流深度学习框架。它主要解决了因框架差异导致的代码重复维护难题：以往针对不同后端需重写逻辑，而 EagerPy 通过统一接口，让同一份代码能自动适配不同环境，同时保持各框架原有的高性能执行效率。\n\n这款工具特别适合机器学习工程师、算法研究人员以及需要构建跨框架库的开发者。无论是希望在多平台间无缝迁移模型，还是单纯追求更整洁、可链式调用的编码风格，EagerPy 都能提供极大便利。其核心技术亮点在于“零开销”的原生操作转换，确保运算直接映射为底层框架指令，不牺牲速度；同时提供完整的类型注解，帮助在运行前捕捉潜在错误。此外，它还原生支持自动求导等高级功能，让用户能轻松编写通用的数学计算函数或像 Foolbox 这样的复杂攻击库，真正实现“一次编写，处处运行”。",".. raw:: html\n\n   \u003Ca href=\"https:\u002F\u002Feagerpy.jonasrauber.de\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjonasrauber_eagerpy_readme_764e6e926467.png\" align=\"right\" \u002F>\u003C\u002Fa>\n\n.. image:: https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Feagerpy.svg\n   :target: https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Feagerpy\n\n.. image:: https:\u002F\u002Fcodecov.io\u002Fgh\u002Fjonasrauber\u002Feagerpy\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg\n   :target: https:\u002F\u002Fcodecov.io\u002Fgh\u002Fjonasrauber\u002Feagerpy\n\n.. image:: https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode%20style-black-000000.svg\n   :target: https:\u002F\u002Fgithub.com\u002Fambv\u002Fblack\n\n==================================================================================\nEagerPy: Writing Code That Works Natively with PyTorch, TensorFlow, JAX, and NumPy\n==================================================================================\n\n`EagerPy \u003Chttps:\u002F\u002Feagerpy.jonasrauber.de>`_ is a **Python framework** that lets you write code that automatically works natively with `PyTorch \u003Chttps:\u002F\u002Fpytorch.org>`_, `TensorFlow \u003Chttps:\u002F\u002Fwww.tensorflow.org>`_, `JAX \u003Chttps:\u002F\u002Fgithub.com\u002Fgoogle\u002Fjax>`_, and `NumPy \u003Chttps:\u002F\u002Fnumpy.org>`_. EagerPy is **also great when you work with just one framework** but prefer a clean and consistent API that is fully chainable, provides extensive type annotions and lets you write beautiful code.\n\n\n🔥 Design goals\n----------------\n\n- **Native Performance**: EagerPy operations get directly translated into the corresponding native operations.\n- **Fully Chainable**: All functionality is available as methods on the tensor objects and as EagerPy functions.\n- **Type Checking**: Catch bugs before running your code thanks to EagerPy's extensive type annotations.\n\n\n📖 Documentation\n-----------------\n\nLearn more about EagerPy in the `documentation \u003Chttps:\u002F\u002Feagerpy.jonasrauber.de>`_.\n\n\n🚀 Quickstart\n--------------\n\n.. code-block:: bash\n\n   pip install eagerpy\n\nEagerPy requires Python 3.6 or newer. Besides that, all essential dependencies are automatically installed. To use it with PyTorch, TensorFlow, JAX, or NumPy, the respective framework needs to be installed separately. These frameworks are not declared as dependencies because not everyone wants to use and thus install all of them and because some of these packages have different builds for different architectures and `CUDA \u003Chttps:\u002F\u002Fdeveloper.nvidia.com\u002Fcuda-zone>`_ versions.\n\n🎉 Example\n-----------\n\n.. code-block:: python\n\n   import torch\n   x = torch.tensor([1., 2., 3., 4., 5., 6.])\n\n   import tensorflow as tf\n   x = tf.constant([1., 2., 3., 4., 5., 6.])\n\n   import jax.numpy as np\n   x = np.array([1., 2., 3., 4., 5., 6.])\n\n   import numpy as np\n   x = np.array([1., 2., 3., 4., 5., 6.])\n\n   # No matter which framwork you use, you can use the same code\n   import eagerpy as ep\n\n   # Just wrap a native tensor using EagerPy\n   x = ep.astensor(x)\n\n   # All of EagerPy's functionality is available as methods\n   x = x.reshape((2, 3))\n   x.flatten(start=1).square().sum(axis=-1).sqrt()\n   # or just: x.flatten(1).norms.l2()\n\n   # and as functions (yes, gradients are also supported!)\n   loss, grad = ep.value_and_grad(loss_fn, x)\n   ep.clip(x + eps * grad, 0, 1)\n\n   # You can even write functions that work transparently with\n   # Pytorch tensors, TensorFlow tensors, JAX arrays, NumPy arrays\n\n   def my_universal_function(a, b, c):\n       # Convert all inputs to EagerPy tensors\n       a, b, c = ep.astensors(a, b, c)\n\n       # performs some computations\n       result = (a + b * c).square()\n\n       # and return a native tensor\n       return result.raw\n\n\n🗺 Use cases\n------------\n\n`Foolbox Native \u003Chttps:\u002F\u002Fgithub.com\u002Fbethgelab\u002Ffoolbox>`_, the latest version of\nFoolbox, a popular adversarial attacks library, has been rewritten from scratch\nusing EagerPy instead of NumPy to achieve native performance on models\ndeveloped in PyTorch, TensorFlow and JAX, all with one code base.\n\nEagerPy is also used by other frameworks to reduce code duplication (e.g. `GUDHI \u003Chttps:\u002F\u002Fgithub.com\u002FGUDHI\u002Fgudhi-devel>`_) or to `compare the performance of different frameworks \u003Chttps:\u002F\u002Fgithub.com\u002Fjonasrauber\u002Funiformly-sampling-nd-ball>`_.\n\n📄 Citation\n------------\n\nIf you use EagerPy, please cite our `paper \u003Chttps:\u002F\u002Farxiv.org\u002Fabs\u002F2008.04175>`_ using the this BibTex entry:\n\n.. code-block::\n\n   @article{rauber2020eagerpy,\n     title={{EagerPy}: Writing Code That Works Natively with {PyTorch}, {TensorFlow}, {JAX}, and {NumPy}},\n     author={Rauber, Jonas and Bethge, Matthias and Brendel, Wieland},\n     journal={arXiv preprint arXiv:2008.04175},\n     year={2020},\n     url={https:\u002F\u002Feagerpy.jonasrauber.de},\n   }\n\n\n🐍 Compatibility\n-----------------\n\nWe currently test with the following versions:\n\n* PyTorch 1.4.0\n* TensorFlow 2.1.0\n* JAX 0.1.57\n* NumPy 1.18.1\n",".. raw:: html\n\n   \u003Ca href=\"https:\u002F\u002Feagerpy.jonasrauber.de\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjonasrauber_eagerpy_readme_764e6e926467.png\" align=\"right\" \u002F>\u003C\u002Fa>\n\n.. image:: https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Feagerpy.svg\n   :target: https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Feagerpy\n\n.. image:: https:\u002F\u002Fcodecov.io\u002Fgh\u002Fjonasrauber\u002Feagerpy\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg\n   :target: https:\u002F\u002Fcodecov.io\u002Fgh\u002Fjonasrauber\u002Feagerpy\n\n.. image:: https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode%20style-black-000000.svg\n   :target: https:\u002F\u002Fgithub.com\u002Fambv\u002Fblack\n\n==================================================================================\nEagerPy：编写可原生兼容 PyTorch、TensorFlow、JAX 和 NumPy 的代码\n==================================================================================\n\n`EagerPy \u003Chttps:\u002F\u002Feagerpy.jonasrauber.de>`_ 是一个 **Python 框架**，它使您能够编写自动原生兼容 `PyTorch \u003Chttps:\u002F\u002Fpytorch.org>`_、`TensorFlow \u003Chttps:\u002F\u002Fwww.tensorflow.org>`_、`JAX \u003Chttps:\u002F\u002Fgithub.com\u002Fgoogle\u002Fjax>`_ 和 `NumPy \u003Chttps:\u002F\u002Fnumpy.org>`_ 的代码。即使您只使用其中一个框架，EagerPy 也非常出色，因为它提供了一个简洁一致的 API，完全支持链式调用，具有丰富的类型注解，并能让您写出优雅的代码。\n\n\n🔥 设计目标\n----------------\n\n- **原生性能**：EagerPy 的操作会直接转换为相应的原生操作。\n- **完全可链式调用**：所有功能既可以通过张量对象的方法调用，也可以通过 EagerPy 函数调用。\n- **类型检查**：借助 EagerPy 丰富的类型注解，在运行代码之前就能捕获错误。\n\n\n📖 文档\n-----------------\n\n在 `文档 \u003Chttps:\u002F\u002Feagerpy.jonasrauber.de>`_ 中了解更多关于 EagerPy 的信息。\n\n\n🚀 快速入门\n--------------\n\n.. code-block:: bash\n\n   pip install eagerpy\n\nEagerPy 需要 Python 3.6 或更高版本。除此之外，所有必要的依赖项都会自动安装。若要与 PyTorch、TensorFlow、JAX 或 NumPy 一起使用，需要单独安装相应的框架。这些框架并未被声明为依赖项，因为并非所有人都希望同时使用并安装它们，而且其中一些包针对不同的架构和 `CUDA \u003Chttps:\u002F\u002Fdeveloper.nvidia.com\u002Fcuda-zone>`_ 版本有不同的构建版本。\n\n🎉 示例\n-----------\n\n.. code-block:: python\n\n   import torch\n   x = torch.tensor([1., 2., 3., 4., 5., 6.])\n\n   import tensorflow as tf\n   x = tf.constant([1., 2., 3., 4., 5., 6.])\n\n   import jax.numpy as np\n   x = np.array([1., 2., 3., 4., 5., 6.])\n\n   import numpy as np\n   x = np.array([1., 2., 3., 4., 5., 6.])\n\n   # 无论使用哪个框架，都可以使用相同的代码\n   import eagerpy as ep\n\n   # 只需使用 EagerPy 包装原生张量\n   x = ep.astensor(x)\n\n   # EagerPy 的所有功能都可以作为方法调用\n   x = x.reshape((2, 3))\n   x.flatten(start=1).square().sum(axis=-1).sqrt()\n   # 或者：x.flatten(1).norms.l2()\n\n   # 也可以作为函数调用（是的，梯度也受支持！）\n   loss, grad = ep.value_and_grad(loss_fn, x)\n   ep.clip(x + eps * grad, 0, 1)\n\n   # 您甚至可以编写对 Pytorch 张量、TensorFlow 张量、JAX 数组、NumPy 数组都透明兼容的函数\n\n   def my_universal_function(a, b, c):\n       # 将所有输入转换为 EagerPy 张量\n       a, b, c = ep.astensors(a, b, c)\n\n       # 执行一些计算\n       result = (a + b * c).square()\n\n       # 并返回原生张量\n       return result.raw\n\n\n🗺 使用场景\n------------\n\n`Foolbox Native \u003Chttps:\u002F\u002Fgithub.com\u002Fbethgelab\u002Ffoolbox>`_，即广受欢迎的对抗攻击库 Foolbox 的最新版本，已使用 EagerPy 而不是 NumPy 从头重写，从而在基于 PyTorch、TensorFlow 和 JAX 构建的模型上实现了原生性能，且仅需一套代码库。\n\nEagerPy 还被其他框架用于减少代码重复（例如 `GUDHI \u003Chttps:\u002F\u002Fgithub.com\u002FGUDHI\u002Fgudhi-devel>`_），或用于 `比较不同框架的性能 \u003Chttps:\u002F\u002Fgithub.com\u002Fjonasrauber\u002Funiformly-sampling-nd-ball>`_。\n\n📄 引用\n------------\n\n如果您使用 EagerPy，请使用以下 BibTex 条目引用我们的论文 `arXiv:2008.04175 \u003Chttps:\u002F\u002Farxiv.org\u002Fabs\u002F2008.04175>`_：\n\n.. code-block::\n\n   @article{rauber2020eagerpy,\n     title={{EagerPy}: Writing Code That Works Natively with {PyTorch}, {TensorFlow}, {JAX}, and {NumPy}},\n     author={Rauber, Jonas and Bethge, Matthias and Brendel, Wieland},\n     journal={arXiv preprint arXiv:2008.04175},\n     year={2020},\n     url={https:\u002F\u002Feagerpy.jonasrauber.de},\n   }\n\n\n🐍 兼容性\n-----------------\n\n我们目前测试的版本如下：\n\n* PyTorch 1.4.0\n* TensorFlow 2.1.0\n* JAX 0.1.57\n* NumPy 1.18.1","# EagerPy 快速上手指南\n\nEagerPy 是一个 Python 框架，让你编写的代码能够原生地同时适用于 **PyTorch**、**TensorFlow**、**JAX** 和 **NumPy**。它提供完全可链式调用（Chainable）的 API 和丰富的类型注解，帮助你编写简洁、高效且跨框架兼容的代码。\n\n## 环境准备\n\n*   **系统要求**：Python 3.6 或更高版本。\n*   **前置依赖**：\n    *   EagerPy 会自动安装其核心依赖。\n    *   **注意**：你需要单独安装目标深度学习框架（PyTorch、TensorFlow、JAX 或 NumPy 中的至少一个）。EagerPy 未将它们列为强制依赖，以便用户根据硬件架构（如 CUDA 版本）灵活选择安装特定版本。\n\n## 安装步骤\n\n使用 pip 安装 EagerPy：\n\n```bash\npip install eagerpy\n```\n\n> **提示**：国内开发者可使用清华或阿里镜像源加速安装：\n> ```bash\n> pip install eagerpy -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n> ```\n\n安装完成后，请确保已单独安装你需要的框架，例如：\n```bash\npip install torch tensorflow jax numpy\n```\n\n## 基本使用\n\nEagerPy 的核心用法是将不同框架的原生张量（Tensor）包装为 EagerPy 张量，之后即可使用统一的链式方法或函数进行操作。\n\n### 1. 包装原生张量\n\n无论底层使用的是哪个框架，都可以通过 `ep.astensor()` 进行统一包装：\n\n```python\nimport torch\nimport tensorflow as tf\nimport jax.numpy as np\nimport numpy as np\nimport eagerpy as ep\n\n# 假设这是来自任意框架的原生张量\nx_native = torch.tensor([1., 2., 3., 4., 5., 6.]) \n# 或者: x_native = tf.constant([...])\n# 或者: x_native = np.array([...])\n\n# 包装为 EagerPy 张量\nx = ep.astensor(x_native)\n```\n\n### 2. 链式调用与方法\n\n所有功能均可作为张量对象的方法直接调用，支持流畅的链式操作：\n\n```python\n# 重塑、展平、平方、求和、开方等操作\nresult = x.reshape((2, 3)).flatten(start=1).square().sum(axis=-1).sqrt()\n\n# 简化写法：计算 L2 范数\nnorm_result = x.flatten(1).norms.l2()\n```\n\n### 3. 函数式调用与梯度计算\n\nEagerPy 也提供函数式接口，并原生支持自动微分（梯度计算）：\n\n```python\ndef loss_fn(x):\n    return x.square().sum()\n\n# 同时获取损失值和梯度\nloss, grad = ep.value_and_grad(loss_fn, x)\n\n# 对数据进行裁剪操作\nclipped_x = ep.clip(x + 0.1 * grad, 0, 1)\n```\n\n### 4. 编写通用函数\n\n你可以编写一次代码，使其透明地适配所有支持的框架：\n\n```python\ndef my_universal_function(a, b, c):\n    # 将所有输入转换为 EagerPy 张量\n    a, b, c = ep.astensors(a, b, c)\n    \n    # 执行计算（链式或常规运算均可）\n    result = (a + b * c).square()\n    \n    # 返回原生张量（通过 .raw 属性）\n    return result.raw\n```","某算法团队正在研发一套通用的对抗样本攻击库，需要同时支持学术界主流的 PyTorch、TensorFlow 和 JAX 三种深度学习框架。\n\n### 没有 eagerpy 时\n- **代码严重重复**：为了适配不同框架，开发者不得不编写三套几乎完全相同的逻辑代码，仅算子调用方式（如 `torch.sum` vs `tf.reduce_sum`）就存在差异。\n- **维护成本高昂**：一旦需要优化核心攻击算法或修复 Bug，必须在三个代码分支中同步修改，极易出现遗漏导致版本不一致。\n- **性能被迫妥协**：若试图通过统一转换为 NumPy 数组来简化代码，会破坏计算图并丢失 GPU 加速能力，导致推理和训练速度大幅下降。\n- **类型检查缺失**：缺乏统一的类型注解，难以在编码阶段发现张量维度不匹配或框架混用导致的潜在错误。\n\n### 使用 eagerpy 后\n- **一套代码通吃**：利用 eagerpy 的包装器，只需编写一次核心逻辑，即可原生运行在 PyTorch、TensorFlow 和 JAX 上，彻底消除重复代码。\n- **维护效率倍增**：算法迭代仅需修改单一代码库，自动惠及所有支持的框架，显著降低出错率并加快发布节奏。\n- **保留原生性能**：eagerpy 将操作直接映射为各框架的原生算子，完美保留计算图特性与 GPU 加速能力，无任何运行时开销。\n- **开发体验升级**：借助其全链式 API 和丰富的类型注解，代码更加简洁优雅，且能在静态检查阶段提前捕获大部分兼容性 Bug。\n\neagerpy 通过“写一次，到处原生运行”的特性，让跨框架算法开发从繁琐的复制粘贴变成了高效优雅的单一流程。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjonasrauber_eagerpy_38f4eb24.png","jonasrauber","Jonas Rauber","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fjonasrauber_205cfebb.png","Machine Learning Researcher and Engineer","Apple",null,"https:\u002F\u002Fjonasrauber.de\u002F","https:\u002F\u002Fgithub.com\u002Fjonasrauber",[81,85],{"name":82,"color":83,"percentage":84},"Python","#3572A5",98.8,{"name":86,"color":87,"percentage":88},"Makefile","#427819",1.2,698,38,"2026-03-20T05:45:51","MIT",1,"","非必需。若需使用 GPU 加速，需根据所选后端框架（PyTorch, TensorFlow, JAX）自行安装对应的 CUDA 版本，EagerPy 本身不强制要求特定显卡型号或显存大小。","未说明",{"notes":98,"python":99,"dependencies":100},"EagerPy 的核心依赖会自动安装，但支持的深度学习框架（PyTorch, TensorFlow, JAX）和 NumPy 必须用户手动单独安装，因为它们针对不同架构和 CUDA 版本有不同的构建包，且并非所有用户都需要全部安装。文档中列出的测试兼容版本较旧（如 PyTorch 1.4.0, TensorFlow 2.1.0），实际使用中建议使用较新的框架版本。","3.6+",[101,102,103,104],"torch (可选，需单独安装)","tensorflow (可选，需单独安装)","jax (可选，需单独安装)","numpy (可选，需单独安装)",[14],[107,108,109,110,111,112,113],"pytorch","tensorflow","tensorflow2","eager-execution","jax","numpy","python","2026-03-27T02:49:30.150509","2026-04-11T00:43:12.378248",[117,122,127,132,137,142],{"id":118,"question_zh":119,"answer_zh":120,"source_url":121},28605,"EagerPy 是否计划支持类似 PyTorch 和 TensorFlow 中的 topk 函数？","社区用户曾提出该需求，指出 `topk` 在 k 较小时比全排序更快。虽然 PyTorch 和 TensorFlow 均支持此函数，但截至该 Issue 关闭时，EagerPy 尚未内置该包装器。用户目前可能需要通过底层框架调用或使用 numpy 的 partition 方法模拟实现。","https:\u002F\u002Fgithub.com\u002Fjonasrauber\u002Feagerpy\u002Fissues\u002F23",{"id":123,"question_zh":124,"answer_zh":125,"source_url":126},28600,"EagerPy 是否支持 Python 的 @ 运算符进行矩阵乘法？","是的，EagerPy 已支持 @ 运算符。你可以直接使用 `c = a @ b` 来代替 `c = a.matmul(b)` 进行两个张量的矩阵乘法运算。该功能已通过 PR #37 合并。","https:\u002F\u002Fgithub.com\u002Fjonasrauber\u002Feagerpy\u002Fissues\u002F35",{"id":128,"question_zh":129,"answer_zh":130,"source_url":131},28601,"EagerPy 的主要用途是什么？它能否用于在 PyTorch 和 TensorFlow 之间转换数据？","EagerPy 的主要目的是让你编写的代码能够同时兼容 PyTorch 和 TensorFlow，而不是用于将数据从一种框架转换为另一种框架。虽然维护者曾表示未来可能添加此类功能，但目前其核心定位是编写框架无关的代码，而非数据格式转换工具。","https:\u002F\u002Fgithub.com\u002Fjonasrauber\u002Feagerpy\u002Fissues\u002F29",{"id":133,"question_zh":134,"answer_zh":135,"source_url":136},28602,"如何在 EagerPy 中实现 sigmoid 函数？","如果原生不支持，可以通过将 EagerPy 张量还原为原始框架（如 PyTorch）的张量来计算，然后再转回 EagerPy 张量。示例代码如下：\n```python\noutputs_, restore_type = ep.astensor_(outputs)\n# 还原为原始类型并计算 sigmoid\nclasses = torch.tensor(torch.round(torch.sigmoid(restore_type(outputs_).to(device))).detach().numpy().tolist()).to(device)\n# 转回 EagerPy 张量\nclasses = ep.astensor(classes)\n```","https:\u002F\u002Fgithub.com\u002Fjonasrauber\u002Feagerpy\u002Fissues\u002F63",{"id":138,"question_zh":139,"answer_zh":140,"source_url":141},28603,"如何向 EagerPy 贡献新功能（例如 slogdet）？","维护者欢迎社区贡献。如果你希望添加新功能（如 `slogdet`），可以直接创建一个 Pull Request (PR)。维护者建议提交 PR 后，双方会就代码风格、测试等内容进行迭代优化直至合并。","https:\u002F\u002Fgithub.com\u002Fjonasrauber\u002Feagerpy\u002Fissues\u002F27",{"id":143,"question_zh":144,"answer_zh":145,"source_url":146},28604,"EagerPy 使用什么许可证？是否可以将打包进 Debian？","EagerPy 采用 MIT 许可证。维护者已在仓库中明确添加了 LICENSE 文件。由于其开源许可清晰，可以被打包进 Debian 等 Linux 发行版，用户可以通过 `apt get install python3-eagerpy` 安装，其他 Debian 包也可以依赖它。","https:\u002F\u002Fgithub.com\u002Fjonasrauber\u002Feagerpy\u002Fissues\u002F8",[148,153,158,163,168,173,178,183,188,193,198,203,208,213,218,223,228,233,238,243],{"id":149,"version":150,"summary_zh":151,"released_at":152},197081,"v0.30.0","## 新特性\n* `float64()` 转换（感谢 @eserie）\n* `slogdet()` 实现（感谢 @eserie）\n* 支持 `__matmul__` 方法（感谢 @eserie）\n* `topk()` 实现（感谢 @mglisse）\n\n## Bug 修复\n* 修复了 JAX 数组的识别问题（感谢 @zimmerrol）\n* 进行了少量改动以支持 TensorFlow 编译（感谢 @eserie）","2021-08-08T12:09:06",{"id":154,"version":155,"summary_zh":156,"released_at":157},197082,"v0.29.0","## 新特性\n\n* 使用多个张量进行索引 now 支持更多场景\n* 文档和指南得到大幅改进","2020-08-14T18:44:05",{"id":159,"version":160,"summary_zh":161,"released_at":162},197083,"v0.28.0","## 新特性\n\n* 添加了 `prod()`\n* 添加了开发文档\n* 提升了测试的可靠性\n* 其他改进和错误修复\n","2020-08-10T15:31:48",{"id":164,"version":165,"summary_zh":166,"released_at":167},197084,"v0.27.0","`squeeze` 现在会在指定了具体轴且该轴的长度不为 1 时抛出错误。","2020-03-14T14:11:46",{"id":169,"version":170,"summary_zh":171,"released_at":172},197085,"v0.26.0","## 新特性\n\n* 添加了 `sort`\n* `pow` 现在可以接受张量作为指数\n* 文档现在会在 GitHub 上自动构建","2020-02-23T06:36:20",{"id":174,"version":175,"summary_zh":176,"released_at":177},197086,"v0.25.2","依赖项的指定版本号","2020-02-14T22:16:16",{"id":179,"version":180,"summary_zh":181,"released_at":182},197087,"v0.25.1","修复了 PyPI 兼容性","2020-02-14T19:00:48",{"id":184,"version":185,"summary_zh":186,"released_at":187},197088,"v0.25.0","## 新特性\n\n* 添加了带有 `start` 和 `end` 参数的 `flatten()` 方法\n* 支持布尔张量索引，即 `tensor[boolean_mask]`\n* 其他改进和错误修复","2020-02-14T17:32:24",{"id":189,"version":190,"summary_zh":191,"released_at":192},197089,"v0.24.0","## 新特性\n\n* 现已实现 `Tensor.__iter__()`（此前依赖 `__getitem__` 进行迭代，行为不一致）\n* `norms.l0` 现在返回与输入相同的数据类型（之前返回整数，与其他 lp 范数不一致）\n* `mean` 现在要求所有框架的输入均为浮点类型（此前仅适用于 PyTorch 和 TensorFlow），并会抛出相应的错误，而非直接崩溃\n* `sum` 现在保证可以正确处理整数和浮点张量\n* 修复了 `sum` 在布尔型 `TensorFlowTensor` 实例上的一个 bug","2020-02-13T22:06:42",{"id":194,"version":195,"summary_zh":196,"released_at":197},197090,"v0.23.0","## 新特性\n\n* `Tensor.numpy()` 现在对所有框架都返回只读数组（此前不同框架的行为不一致，且由于 NumPy 数组可能与实际张量共享内存，这会导致错误）。","2020-02-12T15:39:59",{"id":199,"version":200,"summary_zh":201,"released_at":202},197091,"v0.22.0","## New Features\r\n\r\n* reshape now accepts a single `int` (in particular `-1`), not just tuples","2020-02-11T17:04:03",{"id":204,"version":205,"summary_zh":206,"released_at":207},197092,"v0.21.0","## New Features\r\n\r\n* `Tensor.__getitem__` now supports NumPy arrays (`ndarray`)","2020-02-11T11:16:58",{"id":209,"version":210,"summary_zh":211,"released_at":212},197093,"v0.20.2","## Bug fixes\r\n\r\n* fixed a bug in `TensorFlowTensor.__getitem__` with `slices`","2020-02-11T00:25:32",{"id":214,"version":215,"summary_zh":216,"released_at":217},197094,"v0.20.1","## New Features\r\n\r\n* bug fixes for Python 3.7","2020-02-08T15:30:58",{"id":219,"version":220,"summary_zh":221,"released_at":222},197095,"v0.20.0","## New Features\r\n\r\n* added `Tensor.norms.*` methods\r\n  * e.g. `x.norms.l2()` where `x` is an `ep.Tensor` instance\r\n* other improvements to code, docs, tests","2020-02-08T14:09:10",{"id":224,"version":225,"summary_zh":226,"released_at":227},197096,"v0.19.0","## New Features\r\n\r\n* fully specified all parameters with descriptive names (no more `*args, **kwargs`)\r\n* fully type-annotated all functions and all tests\r\n* improved docs\r\n* bugfixes","2020-02-05T23:20:19",{"id":229,"version":230,"summary_zh":231,"released_at":232},197097,"v0.18.0","## New Features\r\n\r\n* [documentation](https:\u002F\u002Fjonasrauber.github.io\u002Feagerpy\u002F)\r\n* performance optimizations\r\n* `__getitem__` now supports `range` and `list`\r\n* added `take_along_axis` (for the last axis only)\r\n* better type annotations","2020-02-04T10:38:51",{"id":234,"version":235,"summary_zh":236,"released_at":237},197098,"v0.17.0","## New Features\r\n\r\n* more type annotations\r\n* `ep.Tensor` now points to the base class\r\n* `ep.TensorType` now points a `TypeVar` bounded by `ep.Tensor`\r\n* added `astensors`, `astensor_` and `astensors_`\r\n    * the underscored variants return a `restore_type` function that inverts the `astensor` operation\r\n* more tests\r\n* stricter mypy config","2020-02-01T18:42:21",{"id":239,"version":240,"summary_zh":241,"released_at":242},197099,"v0.16.0","## New Features\r\n\r\n* `Tensor.tensor` is now called `Tensor.raw`\r\n* added type hints to basically all methods and framework functions\r\n* refactored large parts of the code\r\n* many other bug fixes and improvements following from that","2020-01-31T00:04:38",{"id":244,"version":245,"summary_zh":246,"released_at":247},197100,"v0.15.0","## New Features\r\n\r\n* `TensorFlowTensor` now supports automatic casting to the common `dtype` for all comparison operators\r\n* other improvements and bug fixes","2020-01-27T12:09:20"]