[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-wavefrontshaping--complexPyTorch":3,"tool-wavefrontshaping--complexPyTorch":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 真正成长为懂上",142651,2,"2026-04-06T23:34:12",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":10,"last_commit_at":59,"category_tags":60,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":78,"owner_email":79,"owner_twitter":80,"owner_website":81,"owner_url":82,"languages":83,"stars":92,"forks":93,"last_commit_at":94,"license":95,"difficulty_score":96,"env_os":97,"env_gpu":98,"env_ram":99,"env_deps":100,"category_tags":104,"github_topics":106,"view_count":32,"oss_zip_url":106,"oss_zip_packed_at":106,"status":17,"created_at":107,"updated_at":108,"faqs":109,"releases":139},4982,"wavefrontshaping\u002FcomplexPyTorch","complexPyTorch","A high-level toolbox for using complex valued neural networks in PyTorch ","complexPyTorch 是一个专为 PyTorch 打造的高级工具箱，旨在简化复数神经网络（Complex-Valued Neural Networks）的构建与训练。在深度学习主要处理实数数据（如图像、音频）的背景下，该工具特别针对物理学相关领域（如波传播模拟）进行了优化，因为在这些场景中，使用复数张量往往能更简洁地描述线性物理行为。\n\n它有效解决了原生 PyTorch 对复数运算支持有限的问题。虽然 PyTorch 1.7+ 引入了基础复数张量类型，但缺乏完整的算子和层支持。complexPyTorch 在此基础上扩展了丰富的功能模块，包括复数版的线性层、卷积层、池化层、激活函数（如 ReLU、Sigmoid）以及 GRU 单元等。其独特的技术亮点在于严格遵循学术界推荐的复数网络架构（参考 Trabelsi 等人的研究），并提供了两种批归一化（BatchNorm）实现：一种是基于协方差矩阵计算的严谨方法，另一种是计算更高效的天真（Naive）近似法，供用户根据性能与精度需求灵活选择。\n\n该工具接口设计高度兼容原生 PyTorch 习惯，仅需在模块或函数名前添加\"Complex","complexPyTorch 是一个专为 PyTorch 打造的高级工具箱，旨在简化复数神经网络（Complex-Valued Neural Networks）的构建与训练。在深度学习主要处理实数数据（如图像、音频）的背景下，该工具特别针对物理学相关领域（如波传播模拟）进行了优化，因为在这些场景中，使用复数张量往往能更简洁地描述线性物理行为。\n\n它有效解决了原生 PyTorch 对复数运算支持有限的问题。虽然 PyTorch 1.7+ 引入了基础复数张量类型，但缺乏完整的算子和层支持。complexPyTorch 在此基础上扩展了丰富的功能模块，包括复数版的线性层、卷积层、池化层、激活函数（如 ReLU、Sigmoid）以及 GRU 单元等。其独特的技术亮点在于严格遵循学术界推荐的复数网络架构（参考 Trabelsi 等人的研究），并提供了两种批归一化（BatchNorm）实现：一种是基于协方差矩阵计算的严谨方法，另一种是计算更高效的天真（Naive）近似法，供用户根据性能与精度需求灵活选择。\n\n该工具接口设计高度兼容原生 PyTorch 习惯，仅需在模块或函数名前添加\"Complex\"或\"complex_\"前缀即可使用，极大降低了上手门槛。它非常适合从事科学计算、物理仿真、信号处理等领域的研究人员和开发者，帮助他们在熟悉的 PyTorch 生态中轻松探索复数深度学习的潜力。","# complexPyTorch\n\nA high-level toolbox for using complex valued neural networks in PyTorch.\n\nBefore version 1.7 of PyTroch, complex tensor were not supported. \nThe initial version of **complexPyTorch** represented complex tensor using two tensors, one for the real and one for the imaginary part.\nSince version 1.7, compex tensors of type `torch.complex64` are allowed, but only a limited number of operation are supported.\nThe current version **complexPyTorch** use complex tensors (hence requires PyTorch version >= 1.7) and add support for various operations and layers.\n\n## Installation\n```bash\npip install complexPyTorch\n```\n\n## Complex Valued Networks with PyTorch\n\nArtificial neural networks are mainly used for treating data encoded in real values, such as digitized images or sounds. \nIn such systems, using complex-valued tensors would be quite useless. \nHowever, for physic related topics, in particular when dealing with wave propagation, using complex values is interesting as the physics typically has linear, hence more simple, behavior when considering complex fields. \ncomplexPyTorch is a simple implementation of complex-valued functions and modules using the high-level API of PyTorch. \nFollowing [[C. Trabelsi et al., International Conference on Learning Representations, (2018)](https:\u002F\u002Fopenreview.net\u002Fforum?id=H1T2hmZAb)], it allows the following layers and functions to be used with complex values:\n* Linear\n* Conv2d\n* ConvTranspose2d\n* MaxPool2d\n* AvgPool2d\n* Relu (&#8450;Relu)\n* Sigmoid\n* Tanh\n* Dropout2d\n* BatchNorm1d (Naive and Covariance approach)\n* BatchNorm2d (Naive and Covariance approach)\n* GRU\u002FBN-GRU Cell\n\n## Citating the code\n\nIf the code was helpful to your work, please consider citing it:\n\n[![DOI](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDOI-10.1103%2FPhysRevX.11.021060-blue)](https:\u002F\u002Fdoi.org\u002F10.1103\u002FPhysRevX.11.021060)\n\n\n## Syntax and usage\n\nThe syntax is supposed to copy the one of the standard real functions and modules from PyTorch. \nThe names are the same as in `nn.modules` and `nn.functional` except that they start with `Complex` for Modules, e.g. `ComplexRelu`, `ComplexMaxPool2d` or `complex_` for functions, e.g. `complex_relu`, `complex_max_pool2d`.\nThe only usage difference is that the forward function takes two tensors, corresponding to real and imaginary parts, and returns two ones too.\n\n## BatchNorm\n\nFor all other layers, using the recommendation of [[C. Trabelsi et al., International Conference on Learning Representations, (2018)](https:\u002F\u002Fopenreview.net\u002Fforum?id=H1T2hmZAb)], the calculation can be done in a straightforward manner using functions and modules form `nn.modules` and `nn.functional`. \nFor instance, the function `complex_relu` in `complexFunctions`, or its associated module `ComplexRelu` in `complexLayers`, simply performs `relu` both on the real and imaginary part and returns the two tensors.\nThe complex BatchNorm proposed in [[C. Trabelsi et al., International Conference on Learning Representations, (2018)](https:\u002F\u002Fopenreview.net\u002Fforum?id=H1T2hmZAb)] requires the calculation of the inverse square root of the covariance matrix.\nThis is implemented in `ComplexbatchNorm1D` and `ComplexbatchNorm2D` but using the high-level PyTorch API, which is quite slow.\nThe gain of using this approach, however, can be experimentally marginal compared to the naive approach which consists in simply performing the BatchNorm on both the real and imaginary part, which is available using `NaiveComplexbatchNorm1D` or `NaiveComplexbatchNorm2D`.\n\n\n## Example\n\nFor illustration, here is a small example of a complex model.\nNote that in that example, complex values are not particularly useful, it just shows how one can handle complex ANNs.\n\n```python\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nfrom torchvision import datasets, transforms\nfrom complexPyTorch.complexLayers import ComplexBatchNorm2d, ComplexConv2d, ComplexLinear\nfrom complexPyTorch.complexFunctions import complex_relu, complex_max_pool2d\n\nbatch_size = 64\ntrans = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (1.0,))])\ntrain_set = datasets.MNIST('..\u002Fdata', train=True, transform=trans, download=True)\ntest_set = datasets.MNIST('..\u002Fdata', train=False, transform=trans, download=True)\n\ntrain_loader = torch.utils.data.DataLoader(train_set, batch_size= batch_size, shuffle=True)\ntest_loader = torch.utils.data.DataLoader(test_set, batch_size= batch_size, shuffle=True)\n\nclass ComplexNet(nn.Module):\n    \n    def __init__(self):\n        super(ComplexNet, self).__init__()\n        self.conv1 = ComplexConv2d(1, 10, 5, 1)\n        self.bn  = ComplexBatchNorm2d(10)\n        self.conv2 = ComplexConv2d(10, 20, 5, 1)\n        self.fc1 = ComplexLinear(4*4*20, 500)\n        self.fc2 = ComplexLinear(500, 10)\n             \n    def forward(self,x):\n        x = self.conv1(x)\n        x = complex_relu(x)\n        x = complex_max_pool2d(x, 2, 2)\n        x = self.bn(x)\n        x = self.conv2(x)\n        x = complex_relu(x)\n        x = complex_max_pool2d(x, 2, 2)\n        x = x.view(-1,4*4*20)\n        x = self.fc1(x)\n        x = complex_relu(x)\n        x = self.fc2(x)\n        x = x.abs()\n        x =  F.log_softmax(x, dim=1)\n        return x\n    \ndevice = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\nmodel = ComplexNet().to(device)\noptimizer = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9)\n\ndef train(model, device, train_loader, optimizer, epoch):\n    model.train()\n    for batch_idx, (data, target) in enumerate(train_loader):\n        data, target = data.to(device).type(torch.complex64), target.to(device)\n        optimizer.zero_grad()\n        output = model(data)\n        loss = F.nll_loss(output, target)\n        loss.backward()\n        optimizer.step()\n        if batch_idx % 100 == 0:\n            print('Train Epoch: {:3} [{:6}\u002F{:6} ({:3.0f}%)]\\tLoss: {:.6f}'.format(\n                epoch,\n                batch_idx * len(data), \n                len(train_loader.dataset),\n                100. * batch_idx \u002F len(train_loader), \n                loss.item())\n            )\n\n# Run training on 50 epochs\nfor epoch in range(50):\n    train(model, device, train_loader, optimizer, epoch)\n```\n       \n\n## Acknowledgments\n\nI want to thank Piotr Bialecki for his invaluable help on the PyTorch forum.\n","# complexPyTorch\n\n一个用于在 PyTorch 中使用复值神经网络的高级工具箱。\n\n在 PyTorch 1.7 版本之前，复数张量并不受支持。**complexPyTorch** 的初始版本通过两个张量来表示复数张量，分别存储其实部和虚部。自 1.7 版本起，`torch.complex64` 类型的复数张量已被支持，但仅有限数量的操作得到支持。当前版本的 **complexPyTorch** 使用复数张量（因此需要 PyTorch 1.7 或更高版本），并增加了对各种操作和层的支持。\n\n## 安装\n```bash\npip install complexPyTorch\n```\n\n## 使用 PyTorch 的复值网络\n\n人工神经网络主要用于处理以实数值编码的数据，例如数字化的图像或声音。在这样的系统中，使用复数张量几乎没有意义。然而，对于与物理相关的问题，特别是在处理波的传播时，使用复数是有意义的，因为当考虑复数场时，物理规律通常是线性的，因而更为简单。complexPyTorch 是一个基于 PyTorch 高级 API 的复值函数和模块的简单实现。根据 [[C. Trabelsi 等人，国际学习表征会议，2018 年]](https:\u002F\u002Fopenreview.net\u002Fforum?id=H1T2hmZAb)，它允许以下层和函数以复数形式使用：\n* Linear\n* Conv2d\n* ConvTranspose2d\n* MaxPool2d\n* AvgPool2d\n* Relu (&#8450;Relu)\n* Sigmoid\n* Tanh\n* Dropout2d\n* BatchNorm1d（朴素方法和协方差方法）\n* BatchNorm2d（朴素方法和协方差方法）\n* GRU\u002FBN-GRU Cell\n\n## 引用代码\n\n如果该代码对您的工作有所帮助，请考虑引用：\n\n[![DOI](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDOI-10.1103%2FPhysRevX.11.021060-blue)](https:\u002F\u002Fdoi.org\u002F10.1103\u002FPhysRevX.11.021060)\n\n\n## 语法与用法\n\n其语法旨在模仿 PyTorch 标准实数函数和模块的用法。名称与 `nn.modules` 和 `nn.functional` 中的相同，只是模块名以 `Complex` 开头，例如 `ComplexRelu`、`ComplexMaxPool2d`，而函数名则以 `complex_` 开头，例如 `complex_relu`、`complex_max_pool2d`。唯一的区别在于，前向传播函数接受两个张量，分别对应实部和虚部，并同样返回两个张量。\n\n## BatchNorm\n\n对于其他所有层，按照 [[C. Trabelsi 等人，国际学习表征会议，2018 年]](https:\u002F\u002Fopenreview.net\u002Fforum?id=H1T2hmZAb) 的建议，可以通过使用 `nn.modules` 和 `nn.functional` 中的函数和模块以直接的方式进行计算。例如，`complexFunctions` 中的 `complex_relu` 函数，或者 `complexLayers` 中对应的 `ComplexRelu` 模块，只需分别对实部和虚部执行 ReLU 操作，并返回这两个张量即可。而 [[C. Trabelsi 等人，国际学习表征会议，2018 年]] 提出的复数 BatchNorm 则需要计算协方差矩阵的逆平方根。这一功能已在 `ComplexbatchNorm1D` 和 `ComplexbatchNorm2D` 中实现，但采用了 PyTorch 的高级 API，速度相对较慢。然而，实验表明，与仅对实部和虚部分别进行 BatchNorm 的朴素方法相比，这种方法的优势可能并不明显。朴素方法可通过 `NaiveComplexbatchNorm1D` 或 `NaiveComplexbatchNorm2D` 实现。\n\n## 示例\n\n为了说明，这里提供一个简单的复数模型示例。请注意，在这个示例中，复数并没有特别的意义，它只是为了展示如何处理复数神经网络。\n\n```python\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nfrom torchvision import datasets, transforms\nfrom complexPyTorch.complexLayers import ComplexBatchNorm2d, ComplexConv2d, ComplexLinear\nfrom complexPyTorch.complexFunctions import complex_relu, complex_max_pool2d\n\nbatch_size = 64\ntrans = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (1.0,))])\ntrain_set = datasets.MNIST('..\u002Fdata', train=True, transform=trans, download=True)\ntest_set = datasets.MNIST('..\u002Fdata', train=False, transform=trans, download=True)\n\ntrain_loader = torch.utils.data.DataLoader(train_set, batch_size= batch_size, shuffle=True)\ntest_loader = torch.utils.data.DataLoader(test_set, batch_size= batch_size, shuffle=True)\n\nclass ComplexNet(nn.Module):\n    \n    def __init__(self):\n        super(ComplexNet, self).__init__()\n        self.conv1 = ComplexConv2d(1, 10, 5, 1)\n        self.bn  = ComplexBatchNorm2d(10)\n        self.conv2 = ComplexConv2d(10, 20, 5, 1)\n        self.fc1 = ComplexLinear(4*4*20, 500)\n        self.fc2 = ComplexLinear(500, 10)\n             \n    def forward(self,x):\n        x = self.conv1(x)\n        x = complex_relu(x)\n        x = complex_max_pool2d(x, 2, 2)\n        x = self.bn(x)\n        x = self.conv2(x)\n        x = complex_relu(x)\n        x = complex_max_pool2d(x, 2, 2)\n        x = x.view(-1,4*4*20)\n        x = self.fc1(x)\n        x = complex_relu(x)\n        x = self.fc2(x)\n        x = x.abs()\n        x =  F.log_softmax(x, dim=1)\n        return x\n    \ndevice = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\nmodel = ComplexNet().to(device)\noptimizer = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9)\n\ndef train(model, device, train_loader, optimizer, epoch):\n    model.train()\n    for batch_idx, (data, target) in enumerate(train_loader):\n        data, target = data.to(device).type(torch.complex64), target.to(device)\n        optimizer.zero_grad()\n        output = model(data)\n        loss = F.nll_loss(output, target)\n        loss.backward()\n        optimizer.step()\n        if batch_idx % 100 == 0:\n            print('Train Epoch: {:3} [{:6}\u002F{:6} ({:3.0f}%)]\\tLoss: {:.6f}'.format(\n                epoch,\n                batch_idx * len(data), \n                len(train_loader.dataset),\n                100. * batch_idx \u002F len(train_loader), \n                loss.item())\n            )\n\n# 运行 50 个 epoch 的训练\nfor epoch in range(50):\n    train(model, device, train_loader, optimizer, epoch)\n```\n       \n\n## 致谢\n\n我要感谢 Piotr Bialecki 在 PyTorch 论坛上提供的宝贵帮助。","# complexPyTorch 快速上手指南\n\n## 环境准备\n\n在开始使用之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**：Linux, macOS 或 Windows\n*   **Python 版本**：建议 Python 3.7+\n*   **核心依赖**：**PyTorch >= 1.7**\n    *   该工具依赖 PyTorch 原生的复数张量支持（`torch.complex64`），此特性仅在 PyTorch 1.7 及以上版本中可用。\n*   **硬件加速**（可选）：如需使用 GPU 加速，请确保已安装对应版本的 `cudatoolkit`。\n\n> **国内加速建议**：\n> 安装 PyTorch 时，推荐使用清华或中科大镜像源以提升下载速度。例如：\n> ```bash\n> pip install torch torchvision torchaudio -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n> ```\n\n## 安装步骤\n\n通过 pip 直接安装 `complexPyTorch`：\n\n```bash\npip install complexPyTorch\n```\n\n若需使用国内镜像源加速安装：\n\n```bash\npip install complexPyTorch -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n## 基本使用\n\n`complexPyTorch` 的 API 设计高度模仿 PyTorch 原生接口。\n*   **模块命名**：在原生模块前加 `Complex` 前缀（如 `ComplexConv2d`, `ComplexRelu`）。\n*   **函数命名**：在原生函数前加 `complex_` 前缀（如 `complex_relu`, `complex_max_pool2d`）。\n*   **数据输入**：直接使用 PyTorch 原生的复数张量 (`torch.complex64`)。\n\n以下是一个基于 MNIST 数据集的最小化复数神经网络示例：\n\n```python\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nfrom complexPyTorch.complexLayers import ComplexBatchNorm2d, ComplexConv2d, ComplexLinear\nfrom complexPyTorch.complexFunctions import complex_relu, complex_max_pool2d\n\n# 定义复数网络模型\nclass ComplexNet(nn.Module):\n    def __init__(self):\n        super(ComplexNet, self).__init__()\n        # 使用复数层替换标准层\n        self.conv1 = ComplexConv2d(1, 10, 5, 1)\n        self.bn  = ComplexBatchNorm2d(10)\n        self.conv2 = ComplexConv2d(10, 20, 5, 1)\n        self.fc1 = ComplexLinear(4*4*20, 500)\n        self.fc2 = ComplexLinear(500, 10)\n             \n    def forward(self, x):\n        x = self.conv1(x)\n        x = complex_relu(x)                # 使用复数激活函数\n        x = complex_max_pool2d(x, 2, 2)    # 使用复数池化\n        x = self.bn(x)\n        x = self.conv2(x)\n        x = complex_relu(x)\n        x = complex_max_pool2d(x, 2, 2)\n        x = x.view(-1, 4*4*20)\n        x = self.fc1(x)\n        x = complex_relu(x)\n        x = self.fc2(x)\n        # 输出前取模长并计算对数概率\n        x = x.abs()\n        x = F.log_softmax(x, dim=1)\n        return x\n\n# 初始化设备与模型\ndevice = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\nmodel = ComplexNet().to(device)\noptimizer = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9)\n\n# 模拟一次前向传播 (假设输入为复数张量)\n# 实际使用时请配合 DataLoader 加载真实数据\ndummy_input = torch.randn(1, 1, 28, 28, dtype=torch.complex64).to(device)\noutput = model(dummy_input)\nprint(f\"Output shape: {output.shape}\")\n```\n\n**关键点说明：**\n1.  **数据类型**：输入数据必须转换为复数类型，例如 `data.type(torch.complex64)`。\n2.  **损失计算**：由于复数无法直接比较大小，通常在网络末端使用 `.abs()` 取模长，将其转换回实数域后再进行 `log_softmax` 和损失计算（如 `nll_loss`）。\n3.  **批归一化**：库中提供了 `ComplexBatchNorm2d`（基于协方差矩阵，理论更严谨但较慢）和 `NaiveComplexBatchNorm2d`（分别对实部虚部做 BN，速度快，实验效果差异通常不大），可根据需求选择。","某光子学实验室的研究团队正在开发基于深度学习的电磁波传播模拟系统，需要处理包含振幅和相位信息的复数场数据。\n\n### 没有 complexPyTorch 时\n- **手动拆分繁琐**：开发者必须将每个复数张量强行拆分为实部和虚部两个独立 Tensor，导致代码中充斥着成对的变量操作，逻辑极易出错。\n- **算子支持缺失**：PyTorch 原生对复数运算支持有限，团队需自行推导并编写复数版的卷积、池化及激活函数底层公式，研发周期被大幅拉长。\n- **归一化难题**：实现符合物理意义的复数批归一化（BatchNorm）极为困难，需手动计算协方差矩阵及其逆平方根，不仅算法复杂且运行效率低下。\n- **维护成本高昂**：由于缺乏统一的高层 API，每次调整网络结构都需同步修改实虚两路的处理逻辑，模型迭代和调试过程痛苦且缓慢。\n\n### 使用 complexPyTorch 后\n- **接口原生直观**：直接调用 `ComplexConv2d`、`ComplexRelu` 等模块，无需手动管理实虚部，代码结构与常规实数网络几乎一致，逻辑清晰简洁。\n- **功能开箱即用**：内置了经学术界验证的复数线性层、卷积层及激活函数，团队可立即专注于物理模型构建，无需重复造轮子。\n- **高效归一化实现**：提供标准的复数 BatchNorm 实现（含协方差方法），在保证物理正确性的同时，利用高层 API 优化了计算效率。\n- **迭代敏捷高效**：统一的复数神经网络范式让模型修改变得像搭积木一样简单，研究人员能快速验证不同波传播假设，显著缩短实验周期。\n\ncomplexPyTorch 将复杂的复数数学运算封装为直观的 PyTorch 原生接口，让科研人员能专注于物理规律探索而非底层代码实现。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fwavefrontshaping_complexPyTorch_ef47f377.png","wavefrontshaping","Sébastien M. Popoff","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fwavefrontshaping_c6d88a41.jpg","Research Scientist at CNRS and Langevin Institute, Paris, France","CNRS","Paris","sebastien.popoff@espci.fr","WFShaping","www.wavefrontshaping.net","https:\u002F\u002Fgithub.com\u002Fwavefrontshaping",[84,88],{"name":85,"color":86,"percentage":87},"Python","#3572A5",82.3,{"name":89,"color":90,"percentage":91},"Jupyter Notebook","#DA5B0B",17.7,754,159,"2026-04-04T04:55:44","MIT",1,"","未说明（代码示例支持 CUDA，但非强制要求，可在 CPU 运行）","未说明",{"notes":101,"python":99,"dependencies":102},"该工具依赖 PyTorch 1.7 及以上版本以支持原生复数张量 (torch.complex64)。虽然示例代码展示了如何在 GPU 上运行，但并未强制要求必须使用 GPU。安装方式为 pip install complexPyTorch。",[103],"torch>=1.7",[14,105],"其他",null,"2026-03-27T02:49:30.150509","2026-04-07T18:44:25.218464",[110,115,120,125,130,134],{"id":111,"question_zh":112,"answer_zh":113,"source_url":114},22629,"complexPyTorch 库是否还需要使用？","该库已过时且不再维护。自 PyTorch 1.7 版本起，原生支持复数（complex numbers）。不过需要注意的是，PyTorch 中的许多模块仍然不完全支持复数运算，因此在使用原生复数时可能会遇到部分功能缺失的情况。","https:\u002F\u002Fgithub.com\u002Fwavefrontshaping\u002FcomplexPyTorch\u002Fissues\u002F24",{"id":116,"question_zh":117,"answer_zh":118,"source_url":119},22630,"如何正确向模型输入复数数据？","早期版本可能需要分别传入实部和虚部两个张量，但现在的用法已简化。你只需要像往常一样将张量馈送到网络中，唯一的要求是这些张量必须是复数类型（complex type），例如使用 `torch.complex64` 或 `torch.complex128`。","https:\u002F\u002Fgithub.com\u002Fwavefrontshaping\u002FcomplexPyTorch\u002Fissues\u002F15",{"id":121,"question_zh":122,"answer_zh":123,"source_url":124},22631,"使用 ComplexBatchNorm1d 进行前向传播时报错怎么办？","这通常是因为使用的包版本过旧。请通过命令 `pip install --upgrade complexPyTorch` 更新到最新版本（至少 0.4 版）。如果更新后仍报错，请检查输入张量的形状是否符合 1D 批归一化的要求，并确保提供了最小可复现代码以便进一步排查。","https:\u002F\u002Fgithub.com\u002Fwavefrontshaping\u002FcomplexPyTorch\u002Fissues\u002F17",{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},22632,"使用 ConvTranspose2d 时出现输入类型与权重类型不匹配的错误如何解决？","错误通常是因为混用了原生 PyTorch 层和复数层。如果你在处理复数数据，必须使用库中提供的 `ComplexConvTranspose2d` 而不是原生的 `torch.nn.ConvTranspose2d`。原生层的权重是浮点型，无法直接与复数型输入（CUDAComplexFloatType）进行计算。","https:\u002F\u002Fgithub.com\u002Fwavefrontshaping\u002FcomplexPyTorch\u002Fissues\u002F14",{"id":131,"question_zh":132,"answer_zh":133,"source_url":114},22633,"Dropout 层报错提示 mask 的设备与输入张量不一致怎么办？","这是一个已知问题，已在提交记录 `7f611aa5760bc86f43e11721a1f8d9dc09ef699a` 中修复。请确保你使用的是包含此修复的最新版本代码。该问题源于 Dropout 生成的掩码（mask）未自动移动到与输入张量相同的设备（CPU 或 GPU）上。",{"id":135,"question_zh":136,"answer_zh":137,"source_url":138},22634,"为什么报告并行计算失败或 BatchNorm 无法并行？","如果遇到“无法并行计算”或特定层（如 ComplexBatchNorm）的并行错误，通常是因为提供的信息不足导致无法复现。请务必提供具体的错误日志、操作步骤以及一个**最小可复现代码示例**（minimal reproducible example），否则维护者很难定位是代码配置问题还是库本身的缺陷。","https:\u002F\u002Fgithub.com\u002Fwavefrontshaping\u002FcomplexPyTorch\u002Fissues\u002F12",[140,145,150],{"id":141,"version":142,"summary_zh":143,"released_at":144},136344,"0.2.1","修复导致 ComplexBatchNorm 在评估模式下失败的 bug。  \n修正 ComplexBatchNorm 在 track_running_stats=False 时的行为。  \n添加 ComplexAvgPool2d。","2021-02-15T21:33:54",{"id":146,"version":147,"summary_zh":148,"released_at":149},136345,"0.2","使用 complex64 张量。由于大多数操作仍未实现，complexPyTorch 0.2 增加了对基本 ANN 层的支持。需要 PyTorch 版本 ≥ 1.7。","2021-01-26T14:31:39",{"id":151,"version":152,"summary_zh":106,"released_at":153},136346,"0.1","2021-01-21T10:01:26"]