[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-tatp22--multidim-positional-encoding":3,"tool-tatp22--multidim-positional-encoding":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},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,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},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 真正成长为懂上",138956,2,"2026-04-05T11:33:21",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"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":83,"owner_website":84,"owner_url":85,"languages":86,"stars":91,"forks":92,"last_commit_at":93,"license":94,"difficulty_score":95,"env_os":96,"env_gpu":97,"env_ram":97,"env_deps":98,"category_tags":103,"github_topics":104,"view_count":23,"oss_zip_url":83,"oss_zip_packed_at":83,"status":16,"created_at":108,"updated_at":109,"faqs":110,"releases":141},2751,"tatp22\u002Fmultidim-positional-encoding","multidim-positional-encoding","An implementation of 1D, 2D, and 3D positional encoding in Pytorch and TensorFlow","multidim-positional-encoding 是一个专为 PyTorch 和 TensorFlow 设计的开源库，旨在为深度学习模型提供灵活的位置编码实现。在经典的 Transformer 架构中，位置编码通常仅支持一维序列数据，难以直接应用于图像（2D）或视频、体素数据（3D）等多维场景。该工具通过扩展正弦位置编码算法，完美解决了这一局限，支持对 1D、2D 及 3D 张量进行高效编码。\n\n它允许开发者轻松处理形状为 `(batchsize, x, ch)`、`(batchsize, x, y, ch)` 乃至 `(batchsize, x, y, z, ch)` 的输入数据，并自动沿通道维度计算位置信息。此外，它还贴心地提供了针对不同张量排列顺序（如通道在前）的变体类，以及可直接将编码结果与输入相加的辅助模块，极大简化了集成流程。\n\n该工具特别适合从事自然语言处理、计算机视觉及 3D 深度学习的研究人员与工程师使用。其独特的技术亮点在于打破了传统位置编码的维度限制，同时采用了模块化安装设计，用户可根据需求单独安装 PyTorch 或 TensorFlow 版本，无需强制","multidim-positional-encoding 是一个专为 PyTorch 和 TensorFlow 设计的开源库，旨在为深度学习模型提供灵活的位置编码实现。在经典的 Transformer 架构中，位置编码通常仅支持一维序列数据，难以直接应用于图像（2D）或视频、体素数据（3D）等多维场景。该工具通过扩展正弦位置编码算法，完美解决了这一局限，支持对 1D、2D 及 3D 张量进行高效编码。\n\n它允许开发者轻松处理形状为 `(batchsize, x, ch)`、`(batchsize, x, y, ch)` 乃至 `(batchsize, x, y, z, ch)` 的输入数据，并自动沿通道维度计算位置信息。此外，它还贴心地提供了针对不同张量排列顺序（如通道在前）的变体类，以及可直接将编码结果与输入相加的辅助模块，极大简化了集成流程。\n\n该工具特别适合从事自然语言处理、计算机视觉及 3D 深度学习的研究人员与工程师使用。其独特的技术亮点在于打破了传统位置编码的维度限制，同时采用了模块化安装设计，用户可根据需求单独安装 PyTorch 或 TensorFlow 版本，无需强制依赖庞大的双框架环境，既轻量又实用。","# 1D, 2D, and 3D Sinusoidal Postional Encoding (Pytorch and Tensorflow)\n\n![Code Coverage](.\u002Fsvgs\u002Fcov.svg)\n[![PyPI version](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fpositional-encodings.svg)](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fpositional-encodings)\n[![Code style: black](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode%20style-black-000000.svg)](https:\u002F\u002Fgithub.com\u002Fpsf\u002Fblack)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n\n![A 2D Example](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftatp22_multidim-positional-encoding_readme_c265f53b69f0.png)\n\nThis is a practical, easy to download implemenation of 1D, 2D, and 3D\nsinusodial positional encodings for PyTorch and Tensorflow.\n\nIt is able to encode on tensors of the form `(batchsize, x, ch)`, `(batchsize,\nx, y, ch)`, and `(batchsize, x, y, z, ch)`, where the positional encodings will\nbe calculated along the `ch` dimension. The [Attention is All You\nNeed](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1706.03762.pdf) allowed for positional encoding in\nonly one dimension, however, this works to extend this to 2 and 3 dimensions.\n\nThis also works on tensors of the form `(batchsize, ch, x)`, etc. See the usage for more information.\n\n**NOTE**: The import syntax has changed as of version `6.0.1`. See the section for details.\n\nTo install, simply run:\n\n```\npip install positional-encodings[pytorch,tensorflow]\n```\n\nYou can also install the pytorch and tf encodings individually with the following\ncommands.\n\n* For a PyTorch only installation, run `pip install positional-encodings[pytorch]`\n* For a TensorFlow only installation, run `pip install positional-encodings[tensorflow]`\n\n## Usage:\n\n### Pytorch\n\nThe repo comes with the three main positional encoding models,\n`PositionalEncoding{1,2,3}D`. In addition, there are a `Summer` class that adds\nthe input tensor to the positional encodings.\n\n```python3\nimport torch\nfrom positional_encodings.torch_encodings import PositionalEncoding1D, PositionalEncoding2D, PositionalEncoding3D, Summer\n\n# Returns the position encoding only\np_enc_1d_model = PositionalEncoding1D(10)\n\n# Return the inputs with the position encoding added\np_enc_1d_model_sum = Summer(PositionalEncoding1D(10))\n\nx = torch.rand(1,6,10)\npenc_no_sum = p_enc_1d_model(x) # penc_no_sum.shape == (1, 6, 10)\npenc_sum = p_enc_1d_model_sum(x)\nprint(penc_no_sum + x == penc_sum) # True\n```\n\n```python3\np_enc_2d = PositionalEncoding2D(8)\ny = torch.zeros((1,6,2,8))\nprint(p_enc_2d(y).shape) # (1, 6, 2, 8)\n\np_enc_3d = PositionalEncoding3D(11)\nz = torch.zeros((1,5,6,4,11))\nprint(p_enc_3d(z).shape) # (1, 5, 6, 4, 11)\n```\n\nAnd for tensors of the form `(batchsize, ch, x)` or their 2D and 3D\ncounterparts, include the word `Permute` before the number in the class; e.g.\nfor a 1D input of size `(batchsize, ch, x)`, do `PositionalEncodingPermute1D`\ninstead of `PositionalEncoding1D`.\n\n\n```python3\nimport torch\nfrom positional_encodings.torch_encodings import PositionalEncodingPermute3D\n\np_enc_3d = PositionalEncodingPermute3D(11)\nz = torch.zeros((1,11,5,6,4))\nprint(p_enc_3d(z).shape) # (1, 11, 5, 6, 4)\n```\n\nNote to override the output dtype you can specify it when creating the encoding:\n\n```python3\np_enc_3d = PositionalEncodingPermute3D(11, dtype_override=torch.float64)\n```\n\nThis is particularly useful when the input tensor is of an `int` type since the\noutput will always be zero (see issue #39).\n\n### Tensorflow Keras\n\nThis also supports Tensorflow. Simply prepend all class names with `TF`.\n\n```python3\nimport tensorflow as tf\nfrom positional_encodings.tf_encodings import TFPositionalEncoding2D, TFSummer\n\n# Returns the position encoding only\np_enc_2d = TFPositionalEncoding2D(170)\ny = tf.zeros((1,8,6,2))\nprint(p_enc_2d(y).shape) # (1, 8, 6, 2)\n\n# Return the inputs with the position encoding added\nadd_p_enc_2d = TFSummer(TFPositionalEncoding2D(170))\ny = tf.ones((1,8,6,2))\nprint(add_p_enc_2d(y) - p_enc_2d(y)) # tf.ones((1,8,6,2))\n```\n\n## Changes as of version `6.0.1`\n\nBefore `6.0.1`, users had to install both the `tensorflow` and the\n`torch` packages, both of which are quite large. Now, one can install the\npackages individually, but now the code has to be changed:\n\nIf using PyTorch:\n\n```\nfrom positional_encodings import * -> from positional_encodings.torch_encodings import *\n```\n\nIf using TensorFlow:\n\n```\nfrom positional_encodings import * -> from positional_encodings.tf_encodings import *\n```\n\n## Formulas\n\nThe formula for inserting the positional encoding are as follows:\n\n1D:\n```\nPE(x,2i) = sin(x\u002F10000^(2i\u002FD))\nPE(x,2i+1) = cos(x\u002F10000^(2i\u002FD))\n\nWhere:\nx is a point in 2d space\ni is an integer in [0, D\u002F2), where D is the size of the ch dimension\n```\n\n2D:\n```\nPE(x,y,2i) = sin(x\u002F10000^(4i\u002FD))\nPE(x,y,2i+1) = cos(x\u002F10000^(4i\u002FD))\nPE(x,y,2j+D\u002F2) = sin(y\u002F10000^(4j\u002FD))\nPE(x,y,2j+1+D\u002F2) = cos(y\u002F10000^(4j\u002FD))\n\nWhere:\n(x,y) is a point in 2d space\ni,j is an integer in [0, D\u002F4), where D is the size of the ch dimension\n```\n\n3D:\n```\nPE(x,y,z,2i) = sin(x\u002F10000^(6i\u002FD))\nPE(x,y,z,2i+1) = cos(x\u002F10000^(6i\u002FD))\nPE(x,y,z,2j+D\u002F3) = sin(y\u002F10000^(6j\u002FD))\nPE(x,y,z,2j+1+D\u002F3) = cos(y\u002F10000^(6j\u002FD))\nPE(x,y,z,2k+2D\u002F3) = sin(z\u002F10000^(6k\u002FD))\nPE(x,y,z,2k+1+2D\u002F3) = cos(z\u002F10000^(6k\u002FD))\n\nWhere:\n(x,y,z) is a point in 3d space\ni,j,k is an integer in [0, D\u002F6), where D is the size of the ch dimension\n```\n\nThe 3D formula is just a natural extension of the 2D positional encoding used\nin [this](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1908.11415.pdf) paper.\n\nDon't worry if the input is not divisible by 2 (1D), 4 (2D), or 6 (3D); all the\nnecessary padding will be taken care of.\n\n## Thank you\n\nThank you for [this](https:\u002F\u002Fgithub.com\u002Fwzlxjtu\u002FPositionalEncoding2D) repo for inspriration of this method.\n\n## Citations\n1D:\n```bibtex\n@inproceedings{vaswani2017attention,\n  title={Attention is all you need},\n  author={Vaswani, Ashish and Shazeer, Noam and Parmar, Niki and Uszkoreit, Jakob and Jones, Llion and Gomez, Aidan N and Kaiser, {\\L}ukasz and Polosukhin, Illia},\n  booktitle={Advances in neural information processing systems},\n  pages={5998--6008},\n  year={2017}\n}\n```\n\n2D:\n```bibtex\n@misc{wang2019translating,\n    title={Translating Math Formula Images to LaTeX Sequences Using Deep Neural Networks with Sequence-level Training},\n    author={Zelun Wang and Jyh-Charn Liu},\n    year={2019},\n    eprint={1908.11415},\n    archivePrefix={arXiv},\n    primaryClass={cs.LG}\n}\n```\n\n3D:\nComing soon!\n","# 1D、2D 和 3D 正弦位置编码（PyTorch 和 TensorFlow）\n\n![代码覆盖率](.\u002Fsvgs\u002Fcov.svg)\n[![PyPI 版本](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fpositional-encodings.svg)](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fpositional-encodings)\n[![代码风格：black](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode%20style-black-000000.svg)](https:\u002F\u002Fgithub.com\u002Fpsf\u002Fblack)\n[![许可证：MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n\n![一个 2D 示例](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftatp22_multidim-positional-encoding_readme_c265f53b69f0.png)\n\n这是一个实用且易于下载的实现，提供了适用于 PyTorch 和 TensorFlow 的 1D、2D 和 3D 正弦位置编码。\n\n它可以对形状为 `(batchsize, x, ch)`、`(batchsize, x, y, ch)` 和 `(batchsize, x, y, z, ch)` 的张量进行编码，其中位置编码将沿 `ch` 维度计算。虽然《Attention is All You Need》论文仅支持在一维上进行位置编码，但本实现将其扩展到了二维和三维。\n\n此外，它也适用于形状为 `(batchsize, ch, x)` 等的张量。更多信息请参阅使用说明。\n\n**注意**：自版本 `6.0.1` 起，导入语法已更改。详情请见相关部分。\n\n要安装，只需运行：\n\n```\npip install positional-encodings[pytorch,tensorflow]\n```\n\n你也可以分别通过以下命令单独安装 PyTorch 和 TensorFlow 的编码模块：\n\n* 仅安装 PyTorch 版本：`pip install positional-encodings[pytorch]`\n* 仅安装 TensorFlow 版本：`pip install positional-encodings[tensorflow]`\n\n## 使用说明：\n\n### PyTorch\n\n该仓库包含三种主要的位置编码模型：`PositionalEncoding{1,2,3}D`。此外，还有一个 `Summer` 类，用于将输入张量与位置编码相加。\n\n```python3\nimport torch\nfrom positional_encodings.torch_encodings import PositionalEncoding1D, PositionalEncoding2D, PositionalEncoding3D, Summer\n\n# 只返回位置编码\np_enc_1d_model = PositionalEncoding1D(10)\n\n# 返回输入与位置编码相加的结果\np_enc_1d_model_sum = Summer(PositionalEncoding1D(10))\n\nx = torch.rand(1,6,10)\npenc_no_sum = p_enc_1d_model(x) # penc_no_sum.shape == (1, 6, 10)\npenc_sum = p_enc_1d_model_sum(x)\nprint(penc_no_sum + x == penc_sum) # True\n```\n\n```python3\np_enc_2d = PositionalEncoding2D(8)\ny = torch.zeros((1,6,2,8))\nprint(p_enc_2d(y).shape) # (1, 6, 2, 8)\n\np_enc_3d = PositionalEncoding3D(11)\nz = torch.zeros((1,5,6,4,11))\nprint(p_enc_3d(z).shape) # (1, 5, 6, 4, 11)\n```\n\n对于形状为 `(batchsize, ch, x)` 或其二维、三维对应形式的张量，在类名前加上 `Permute`；例如，对于大小为 `(batchsize, ch, x)` 的 1D 输入，应使用 `PositionalEncodingPermute1D` 而不是 `PositionalEncoding1D`。\n\n```python3\nimport torch\nfrom positional_encodings.torch_encodings import PositionalEncodingPermute3D\n\np_enc_3d = PositionalEncodingPermute3D(11)\nz = torch.zeros((1,11,5,6,4))\nprint(p_enc_3d(z).shape) # (1, 11, 5, 6, 4)\n```\n\n请注意，若需覆盖输出数据类型，可在创建编码时指定：\n\n```python3\np_enc_3d = PositionalEncodingPermute3D(11, dtype_override=torch.float64)\n```\n\n这在输入张量为整数类型时特别有用，因为否则输出将始终为零（参见问题 #39）。\n\n### TensorFlow Keras\n\n本库同样支持 TensorFlow。只需在所有类名前加上 `TF` 前缀即可。\n\n```python3\nimport tensorflow as tf\nfrom positional_encodings.tf_encodings import TFPositionalEncoding2D, TFSummer\n\n# 只返回位置编码\np_enc_2d = TFPositionalEncoding2D(170)\ny = tf.zeros((1,8,6,2))\nprint(p_enc_2d(y).shape) # (1, 8, 6, 2)\n\n# 返回输入与位置编码相加的结果\nadd_p_enc_2d = TFSummer(TFPositionalEncoding2D(170))\ny = tf.ones((1,8,6,2))\nprint(add_p_enc_2d(y) - p_enc_2d(y)) # tf.ones((1,8,6,2))\n```\n\n## 版本 `6.0.1` 的变更\n\n在 `6.0.1` 之前，用户需要同时安装 `tensorflow` 和 `torch` 两个包，而这两个包都相当庞大。现在，用户可以单独安装所需的包，但代码也需要相应调整：\n\n如果使用 PyTorch：\n\n```\nfrom positional_encodings import * -> from positional_encodings.torch_encodings import *\n```\n\n如果使用 TensorFlow：\n\n```\nfrom positional_encodings import * -> from positional_encodings.tf_encodings import *\n```\n\n## 公式\n\n插入位置编码的公式如下：\n\n1D：\n```\nPE(x,2i) = sin(x\u002F10000^(2i\u002FD))\nPE(x,2i+1) = cos(x\u002F10000^(2i\u002FD))\n\n其中：\nx 是二维空间中的一个点\ni 是 [0, D\u002F2) 内的整数，D 是 ch 维度的大小\n```\n\n2D：\n```\nPE(x,y,2i) = sin(x\u002F10000^(4i\u002FD))\nPE(x,y,2i+1) = cos(x\u002F10000^(4i\u002FD))\nPE(x,y,2j+D\u002F2) = sin(y\u002F10000^(4j\u002FD))\nPE(x,y,2j+1+D\u002F2) = cos(y\u002F10000^(4j\u002FD))\n\n其中：\n(x,y) 是二维空间中的一个点\ni,j 是 [0, D\u002F4) 内的整数，D 是 ch 维度的大小\n```\n\n3D：\n```\nPE(x,y,z,2i) = sin(x\u002F10000^(6i\u002FD))\nPE(x,y,z,2i+1) = cos(x\u002F10000^(6i\u002FD))\nPE(x,y,z,2j+D\u002F3) = sin(y\u002F10000^(6j\u002FD))\nPE(x,y,z,2j+1+D\u002F3) = cos(y\u002F10000^(6j\u002FD))\nPE(x,y,z,2k+2D\u002F3) = sin(z\u002F10000^(6k\u002FD))\nPE(x,y,z,2k+1+2D\u002F3) = cos(z\u002F10000^(6k\u002FD))\n\n其中：\n(x,y,z) 是三维空间中的一个点\ni,j,k 是 [0, D\u002F6) 内的整数，D 是 ch 维度的大小\n```\n\n3D 公式只是对 [这篇](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1908.11415.pdf) 论文中使用的 2D 阐述的自然扩展。\n\n即使输入的维度不能被 2（1D）、4（2D）或 6（3D）整除，也不用担心；必要的填充会自动处理好。\n\n## 感谢\n\n感谢 [这个](https:\u002F\u002Fgithub.com\u002Fwzlxjtu\u002FPositionalEncoding2D) 仓库为本方法提供了灵感。\n\n## 引用文献\n1D：\n```bibtex\n@inproceedings{vaswani2017attention,\n  title={Attention is all you need},\n  author={Vaswani, Ashish and Shazeer, Noam and Parmar, Niki and Uszkoreit, Jakob and Jones, Llion and Gomez, Aidan N and Kaiser, Łukasz and Polosukhin, Illia},\n  booktitle={Advances in neural information processing systems},\n  pages={5998--6008},\n  year={2017}\n}\n```\n\n2D：\n```bibtex\n@misc{wang2019translating,\n    title={Translating Math Formula Images to LaTeX Sequences Using Deep Neural Networks with Sequence-level Training},\n    author={Zelun Wang and Jyh-Charn Liu},\n    year={2019},\n    eprint={1908.11415},\n    archivePrefix={arXiv},\n    primaryClass={cs.LG}\n}\n```\n\n3D：\n即将发布！","# multidim-positional-encoding 快速上手指南\n\n本工具提供了 PyTorch 和 TensorFlow 版本的 1D、2D 及 3D 正弦位置编码（Sinusoidal Positional Encoding）实现，扩展了经典 Transformer 中仅支持一维编码的限制，适用于处理图像、视频等多维序列数据。\n\n## 环境准备\n\n*   **系统要求**：支持 Python 3.6+ 的操作系统（Linux, macOS, Windows）。\n*   **前置依赖**：\n    *   必须安装 **PyTorch** 或 **TensorFlow** 其中之一（或两者）。\n    *   建议预先配置好对应的深度学习框架环境。\n\n## 安装步骤\n\n推荐使用国内镜像源（如清华源）以加速下载。您可以根据需求选择安装完整包或仅安装特定框架版本。\n\n### 选项 1：同时安装 PyTorch 和 TensorFlow 支持\n```bash\npip install positional-encodings[pytorch,tensorflow] -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 选项 2：仅安装 PyTorch 支持（推荐，体积更小）\n```bash\npip install positional-encodings[pytorch] -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 选项 3：仅安装 TensorFlow 支持\n```bash\npip install positional-encodings[tensorflow] -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n> **注意**：自版本 `6.0.1` 起，导入路径已变更。请根据使用的框架从 `positional_encodings.torch_encodings` 或 `positional_encodings.tf_encodings` 模块导入，不再直接从根目录导入。\n\n## 基本使用\n\n### PyTorch 使用示例\n\n支持 `(batchsize, x, ch)`、`(batchsize, x, y, ch)` 和 `(batchsize, x, y, z, ch)` 格式的张量。若通道维在中间（如 `(batch, ch, x)`），请使用带 `Permute` 的类名。\n\n```python3\nimport torch\nfrom positional_encodings.torch_encodings import PositionalEncoding1D, PositionalEncoding2D, Summer\n\n# 1. 仅获取位置编码\np_enc_1d_model = PositionalEncoding1D(10)\nx = torch.rand(1, 6, 10)\npenc_no_sum = p_enc_1d_model(x) \n# penc_no_sum.shape == (1, 6, 10)\n\n# 2. 获取输入与位置编码相加的结果 (常用方式)\np_enc_1d_model_sum = Summer(PositionalEncoding1D(10))\npenc_sum = p_enc_1d_model_sum(x)\n# 验证：penc_sum 等于 x + 位置编码\nprint(penc_no_sum + x == penc_sum) # True\n\n# 3. 2D 和 3D 示例\np_enc_2d = PositionalEncoding2D(8)\ny = torch.zeros((1, 6, 2, 8))\nprint(p_enc_2d(y).shape) # 输出：(1, 6, 2, 8)\n\np_enc_3d = PositionalEncoding3D(11)\nz = torch.zeros((1, 5, 6, 4, 11))\nprint(p_enc_3d(z).shape) # 输出：(1, 5, 6, 4, 11)\n\n# 4. 处理通道维在前的情况 (Permute 模式)\n# 适用于形状如 (batch, ch, x, y, z) 的张量\nfrom positional_encodings.torch_encodings import PositionalEncodingPermute3D\n\np_enc_3d_perm = PositionalEncodingPermute3D(11)\nz_perm = torch.zeros((1, 11, 5, 6, 4))\nprint(p_enc_3d_perm(z_perm).shape) # 输出：(1, 11, 5, 6, 4)\n\n# 5. 指定输出数据类型 (避免整数输入导致全零)\np_enc_dtype = PositionalEncodingPermute3D(11, dtype_override=torch.float64)\n```\n\n### TensorFlow (Keras) 使用示例\n\n在 TensorFlow 中，所有类名需前缀 `TF`。\n\n```python3\nimport tensorflow as tf\nfrom positional_encodings.tf_encodings import TFPositionalEncoding2D, TFSummer\n\n# 1. 仅获取位置编码\np_enc_2d = TFPositionalEncoding2D(170)\ny = tf.zeros((1, 8, 6, 2))\nprint(p_enc_2d(y).shape) # 输出：(1, 8, 6, 2)\n\n# 2. 获取输入与位置编码相加的结果\nadd_p_enc_2d = TFSummer(TFPositionalEncoding2D(170))\ny_ones = tf.ones((1, 8, 6, 2))\n# 验证：相加后的结果减去纯位置编码应等于原始输入 (全 1)\nprint(add_p_enc_2d(y_ones) - p_enc_2d(y_ones)) # 输出：tf.ones((1, 8, 6, 2))\n```","某计算机视觉团队正在开发基于 Transformer 的 3D 医学影像分割模型，需要处理具有空间深度信息的 CT 扫描数据。\n\n### 没有 multidim-positional-encoding 时\n- 开发者必须手动复现论文中的正弦位置编码公式，并自行推导如何将其从 1D 扩展至 3D 空间，极易出现数学实现错误。\n- 面对 `(batch, depth, height, width, channels)` 这样复杂的张量维度，需编写大量繁琐的切片与广播代码来对齐位置信息，调试成本极高。\n- 难以灵活适配不同的框架需求，若在 PyTorch 和 TensorFlow 之间迁移项目，往往需要重写整套位置编码逻辑。\n- 当输入张量为通道优先格式（如 `(batch, ch, x, y, z)`）时，缺乏现成的置换（Permute）支持，需额外编写预处理代码。\n\n### 使用 multidim-positional-encoding 后\n- 直接调用 `PositionalEncoding3D` 类即可获取标准的 3D 正弦编码，无需关心底层数学推导，确保算法与原始论文严格一致。\n- 工具自动识别并处理高维张量结构，一行代码即可完成位置信息的计算与注入，将原本数十行的样板代码缩减为几行。\n- 同一套 API 同时支持 PyTorch 和 TensorFlow，团队在切换深度学习后端时无需修改核心逻辑，显著提升开发效率。\n- 内置 `PositionalEncodingPermute3D` 等专用类，原生支持通道优先等不同数据布局，无缝适配各类预训练模型输入。\n\nmultidim-positional-encoding 将复杂的多维位置编码标准化为简单的模块调用，让研究人员能专注于模型架构创新而非底层数学实现。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftatp22_multidim-positional-encoding_c265f53b.png","tatp22","Peter","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Ftatp22_dc8b9a00.jpg","Fun things are fun!","ETH Zurich","Zurich, CH","tatp22@gmail.com",null,"tatkow.ski","https:\u002F\u002Fgithub.com\u002Ftatp22",[87],{"name":88,"color":89,"percentage":90},"Python","#3572A5",100,617,36,"2026-03-31T02:29:02","MIT",1,"","未说明",{"notes":99,"python":97,"dependencies":100},"该工具是一个轻量级的位置编码实现库，支持 PyTorch 和 TensorFlow 框架。用户可根据需要单独安装 PyTorch 版本或 TensorFlow 版本，无需同时安装两者。自 6.0.1 版本起，导入路径已变更：PyTorch 用户需从 `positional_encodings.torch_encodings` 导入，TensorFlow 用户需从 `positional_encodings.tf_encodings` 导入。支持 1D、2D 和 3D 正弦位置编码，并能自动处理通道维度不可被整除的情况。",[101,102],"torch (可选)","tensorflow (可选)",[13],[105,106,107],"tensorflow","pytorch","deep-learning","2026-03-27T02:49:30.150509","2026-04-06T05:35:49.096807",[111,116,121,126,131,136],{"id":112,"question_zh":113,"answer_zh":114,"source_url":115},12741,"安装 positional-encodings 时为什么会强制安装 TensorFlow？如何只安装 PyTorch 版本？","这是旧版本的默认行为。在 6.0.1 及更高版本中，可以通过指定 extras 来仅安装所需框架。请使用以下命令仅安装 PyTorch 支持：\npip install positional-encodings[pytorch]\n如果需要同时支持 PyTorch 和 TensorFlow，可以使用：\npip install positional-encodings[pytorch,tensorflow]","https:\u002F\u002Fgithub.com\u002Ftatp22\u002Fmultidim-positional-encoding\u002Fissues\u002F24",{"id":117,"question_zh":118,"answer_zh":119,"source_url":120},12742,"为什么输入整数类型（int）的张量后，位置编码的输出结果与输入相同或全为 0？","这是因为位置编码生成的值严格位于 [-1, 1] 之间。当输入张量为 int 类型时，这些浮点数会被强制转换为整数，导致所有非 1 或 -1 的值都变为 0（例如 0.7 变为 0）。解决方案是将输入张量的数据类型转换为 float。例如：\nx = torch.randint(0, 9, size=(1, 3, 3, 1), dtype=float)\n确保在进行位置编码操作前，张量是浮点类型。","https:\u002F\u002Fgithub.com\u002Ftatp22\u002Fmultidim-positional-encoding\u002Fissues\u002F39",{"id":122,"question_zh":123,"answer_zh":124,"source_url":125},12743,"使用 PositionalEncodingPermute2D 时，当 channels 参数不能被 4 整除时报错怎么办？","这是一个已修复的 Bug，出现在旧版本中。当 channels % 4 等于 1 或 2 时会触发维度不匹配错误。请升级库到 4.0.0 或更高版本以解决此问题：\npip install positional-encodings==4.0.0\n维护者已在该版本中修复了 2D 和 3D 情况下的索引计算问题。","https:\u002F\u002Fgithub.com\u002Ftatp22\u002Fmultidim-positional-encoding\u002Fissues\u002F3",{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},12744,"输出张量的 batch_size 为什么变成了 1，而不是与输入张量保持一致？","这是早期版本的一个 Bug，导致无论输入 batch_size 是多少，输出都被错误地固定为 1。该问题已在 3.0.0 版本中修复。请升级到最新版本：\npip install positional-encodings>=3.0.0\n或者直接从 GitHub 拉取最新代码以确保包含此修复。","https:\u002F\u002Fgithub.com\u002Ftatp22\u002Fmultidim-positional-encoding\u002Fissues\u002F2",{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},12745,"如何在不同版本的库之间加载训练好的模型（遇到 ModuleNotFoundError）？","由于库的内部模块路径在不同版本间发生了变化（例如从 positional_encodings 变为 positional_encodings.torch_encodings），直接加载旧模型会报错。如果无法升级库版本，可以尝试在加载时使用自定义的 Unpickler 来映射旧的类路径到新的路径，或者在调用 torch.load 时通过 pickle_module 参数指定处理逻辑。建议尽量保持训练和推理环境的库版本一致。","https:\u002F\u002Fgithub.com\u002Ftatp22\u002Fmultidim-positional-encoding\u002Fissues\u002F38",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},12746,"PositionalEncoding1D 的实现是否符合正弦\u002F余弦交替的公式定义？","在旧版本中，代码简单地将 sine 和 cosine 部分拼接，导致前半部分是 sine，后半部分是 cosine，不符合公式中偶数维为 sine、奇数维为 cosine 的定义。该问题已被社区发现并修复。修复后的逻辑是先堆叠（stack）sine 和 cosine 对，然后展平（flatten），确保维度交替。请确保使用包含此修复的最新版本代码。","https:\u002F\u002Fgithub.com\u002Ftatp22\u002Fmultidim-positional-encoding\u002Fissues\u002F20",[]]