[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-benmoseley--FBPINNs":3,"tool-benmoseley--FBPINNs":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 真正成长为懂上",150037,2,"2026-04-10T23:33:47",[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":78,"owner_twitter":79,"owner_website":80,"owner_url":81,"languages":82,"stars":87,"forks":88,"last_commit_at":89,"license":90,"difficulty_score":10,"env_os":91,"env_gpu":92,"env_ram":93,"env_deps":94,"category_tags":102,"github_topics":103,"view_count":32,"oss_zip_url":78,"oss_zip_packed_at":78,"status":17,"created_at":109,"updated_at":110,"faqs":111,"releases":141},6479,"benmoseley\u002FFBPINNs","FBPINNs","Solve forward and inverse problems related to partial differential equations using finite basis physics-informed neural networks (FBPINNs)","FBPINNs 是一款基于有限基物理信息神经网络的开源工具，专门用于求解偏微分方程（PDE）的正向与逆向问题。它主要解决了传统物理信息神经网络（PINNs）在处理高频波动或多尺度解时面临的难题：由于神经网络的“频谱偏差”及优化复杂度激增，传统方法往往难以收敛或精度不足。\n\nFBPINNs 创新性地引入了“分而治之”的策略，将复杂的计算域分解为众多重叠的子区域。在每个子区域内部署独立的神经网络，并通过平滑窗口函数进行局部约束和独立归一化。这种设计不仅有效降低了每个子网络需要学习的频率难度，还大幅简化了整体优化过程。值得一提的是，该工具近期已重构为 JAX 版本，利用并行计算技术将运行速度提升了 10 至 1000 倍，并能轻松扩展至数千个子域。\n\n这款工具非常适合从事科学计算、计算物理及应用数学的研究人员与开发者使用。如果您正在探索波浪传播、多尺度建模等复杂微分方程求解难题，FBPINNs 能为您提供比传统方法更高的精度与计算效率，是突破现有神经网络求解瓶颈的有力助手。","# Finite basis physics-informed neural networks (FBPINNs)\n\n---\n\nThis repository allows you to solve forward and inverse problems related to partial differential equations (PDEs) using **finite basis physics-informed neural networks** (FBPINNs).\n\n> 🔥 MAJOR UPDATE 🔥: we have rewritten the `fbpinns` library in [JAX](https:\u002F\u002Fjax.readthedocs.io\u002Fen\u002Flatest\u002Findex.html): it now runs 10-1000X faster than the original PyTorch code (by parallelising subdomain computations using `jax.vmap`) and scales to 1000s+ subdomains. We have also added extra functionality: you can now solve inverse problems, add arbitrary types of boundary\u002Fdata constraints, define irregular\u002Fmultilevel domain decompositions and custom subdomain networks, and the high-level interface is much more flexible and easier to use. See the [Release note](https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002FFBPINNs\u002Freleases\u002Ftag\u002Fv0.2.0) for more info.\n\nFBPINNs are described in detail here: *[Finite Basis Physics-Informed Neural Networks (FBPINNs): a scalable domain decomposition approach for solving differential equations](https:\u002F\u002Flink.springer.com\u002Farticle\u002F10.1007\u002Fs10444-023-10065-9), B. Moseley, T. Nissen-Meyer and A. Markham, Jul 2023 Advances in Computational Mathematics*. See the slides from our 2023 Maths4DL conference talk [here](https:\u002F\u002Fmaths4dl.ac.uk\u002Fwp-content\u002Fuploads\u002F2023\u002F07\u002FMoseley.pdf).\n\n---\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fbenmoseley_FBPINNs_readme_05c7adbe4451.gif\" alt=\"FBPINN solving the high-frequency 1D harmonic oscillator\" width=48%>\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fbenmoseley_FBPINNs_readme_3ff3e7ec8a92.gif\" alt=\"PINN solving the high-frequency 1D harmonic oscillator\" width=48%>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fbenmoseley_FBPINNs_readme_f77ec4ad0b37.png\" alt=\"Test loss comparison\" width=33%>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n    \u003Cb>Fig 1: FBPINN vs PINN solving the high-frequency 1D harmonic oscillator\u003C\u002Fb>\n\u003C\u002Fp>\n\n## Why FBPINNs?\n\n- [Physics-informed neural networks](https:\u002F\u002Fbenmoseley.blog\u002Fmy-research\u002Fso-what-is-a-physics-informed-neural-network\u002F) (PINNs) are a popular approach for solving **forward and inverse problems** related to PDEs\n- However, PINNs often struggle to solve problems with **high frequencies** and\u002For **multi-scale solutions**\n- This is due to the **spectral bias** of neural networks and the **heavily increasing complexity** of the PINN optimisation problem\n- FBPINNs improve the performance of PINNs in this regime by combining them with **domain decomposition**, **individual subdomain normalisation** and **flexible subdomain training schedules**\n- Empirically, FBPINNs **significantly outperform** PINNs (in terms of accuracy and computational efficiency) when solving problems with high frequencies and multi-scale solutions (Fig 1 and 2)\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fbenmoseley_FBPINNs_readme_29b3eec43e2f.gif\" alt=\"FBPINN solution of the (2+1)D wave equation with multiscale sources\" width=100%>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n    \u003Cb>Fig 2: FBPINN solution of the (2+1)D wave equation with multiscale sources\u003C\u002Fb>\n\u003C\u002Fp>\n\n## How are FBPINNs different to PINNs?\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fbenmoseley_FBPINNs_readme_e7d4501d0549.png\" alt=\"FBPINN workflow overview\" width=100%>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n    \u003Cb>Fig 3: FBPINN workflow overview\u003C\u002Fb>\n\u003C\u002Fp>\n\nTo improve the scalability of PINNs to high frequency\u002F multiscale solutions:\n\n- FBPINNs divide the problem domain into many small, **overlapping subdomains** (Fig 3). \n\n- A neural network is placed within each subdomain, and the solution to the PDE is defined as the **summation over all subdomain networks**.\n\n- Each subdomain network is **locally confined** to its subdomain by multiplying it by a smooth, differentiable window function.\n\n- Finally, the inputs of each network are **individually normalised** over their subdomain.\n\nThe hypothesis is that this \"divide and conquer\" approach significantly reduces the complexity of the PINN optimisation problem. Furthermore, individual subdomain normalisation ensures the \"effective\" frequency each subdomain network sees is low, reducing the effect of spectral bias.\n\n## Subdomain scheduling\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fbenmoseley_FBPINNs_readme_9a61b96be034.gif\" alt=\"Solving the time-dependent Burgers' equation using a time-stepping subdomain scheduler\" width=100%>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n    \u003Cb>Fig 4: Solving the time-dependent Burgers' equation using a time-stepping subdomain scheduler\u003C\u002Fb>\n\u003C\u002Fp>\n\nAnother advantage of using domain decomposition is that we can control which **parts** of the domain are solved at each training step.\n\nThis is useful if we want to control how boundary conditions are **communicated** across the domain.\n\nFor example, we can define a **time-stepping scheduler** to solve time-dependent PDEs, and learn the solution forwards in time from a set of initial conditions (Fig 4).\n\nThis is done by specifying a **subdomain scheduler** (from `fbpinns.schedulers`), which defines which subdomains are actively training and which subdomains have fixed parameters at each training step.\n\n\n## Installation\n\n`fbpinns` only requires Python libraries to run.\n\n> [JAX](https:\u002F\u002Fjax.readthedocs.io\u002Fen\u002Flatest\u002Findex.html) is used as the main computational engine for `fbpinns`.\n\nTo install `fbpinns`, we recommend setting up a new Python environment, for example:\n\n```bash\nconda create -n fbpinns python=3  # Using conda\nconda activate fbpinns\n```\nthen cloning this repository:\n```bash\ngit clone git@github.com:benmoseley\u002FFBPINNs.git\n```\nand running this command in the base `FBPINNs\u002F` directory (will also install all of the dependencies):\n```\npip install -e .\n```\n> Note this installs the `fbpinns` package in \"editable mode\" - you can make changes to the source code and they are immediately present in the package.\n\n## Getting started\n\nForward and inverse PDE problems are defined and solved by carrying out the following steps:\n\n1. Define the **problem domain**, by selecting or defining your own `fbpinns.domains.Domain` class\n2. Define the **PDE** to solve, and any **problem constraints** (such as boundary conditions or data constraints), by selecting or defining your own `fbpinns.problems.Problem` class\n3. Define the **domain decomposition** used by the FBPINN, by selecting or defining your own `fbpinns.decompositions.Decomposition` class\n4. Define the **neural network** placed in each subdomain, by selecting or defining your own `fbpinns.networks.Network` class\n5. Keep track of all the training hyperparameters by passing these classes and their initialisation values to a `fbpinns.constants.Constants` object\n6. Start the FBPINN training by instantiating a `fbpinns.trainers.FBPINNTrainer` using the `Constants` object.\n\nFor example, to solve the 1D harmonic oscillator problem shown above (Fig 1):\n\n```python\nimport numpy as np\n\nfrom fbpinns.domains import RectangularDomainND\nfrom fbpinns.problems import HarmonicOscillator1D\nfrom fbpinns.decompositions import RectangularDecompositionND\nfrom fbpinns.networks import FCN\nfrom fbpinns.constants import Constants\nfrom fbpinns.trainers import FBPINNTrainer\n\nc = Constants(\n    domain=RectangularDomainND,# use a 1D problem domain [0, 1]\n    domain_init_kwargs=dict(\n        xmin=np.array([0,]),\n        xmax=np.array([1,]),\n    ),\n    problem=HarmonicOscillator1D,# solve the 1D harmonic oscillator problem\n    problem_init_kwargs=dict(\n        d=2, w0=80,# define the ODE parameters\n    ),\n    decomposition=RectangularDecompositionND,# use a rectangular domain decomposition\n    decomposition_init_kwargs=dict(\n        subdomain_xs=[np.linspace(0,1,15)],# use 15 equally spaced subdomains\n        subdomain_ws=[0.15*np.ones((15,))],# with widths of 0.15\n        unnorm=(0.,1.),# define unnormalisation of the subdomain networks\n    ),\n    network=FCN,# place a fully-connected network in each subdomain\n    network_init_kwargs=dict(\n        layer_sizes=[1,32,1],# with 2 hidden layers\n    ),\n    ns=((200,),),# use 200 collocation points for training\n    n_test=(500,),# use 500 points for testing\n    n_steps=20000,# number of training steps\n    optimiser_kwargs=dict(learning_rate=1e-3),\n    show_figures=True,# display plots during training\n)\n\nrun = FBPINNTrainer(c)\nrun.train()# start training the FBPINN\n```\n\nThe `FBPINNTrainer` will automatically start outputting training statistics, plots and tensorboard summaries. The tensorboard summaries can be viewed by installing [tensorboard](https:\u002F\u002Fwww.tensorflow.org\u002Ftensorboard) and then running `tensorboard --logdir results\u002Fsummaries\u002F`\n\n### Comparing to PINNs\n\nYou can easily train a PINN using the same hyperparameters above, using:\n\n```python\nfrom fbpinns.trainers import PINNTrainer\n\nc[\"network_init_kwargs\"] = dict(layer_sizes=[1,64,64,1])# use a larger neural network\nrun = PINNTrainer(c)\nrun.train()# start training a PINN on the same problem\n```\n\n## Going further\n\nSee the [examples](https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002FFBPINNs\u002Ftree\u002Fmain\u002Fexamples) folder for more advanced examples covering:\n- how to define your own `Problem` class\n- how to use hard boundary constraints\n- how to solve an inverse problem\n- how to use subdomain scheduling\n\n### Workshop on Scalable PINNs and minimal FBPINN implementation\n\nCheck out our [scalable PINNs workshop](https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002Fscalable-pinns-workshop), where we show how to code a minimal FBPINN and ELM-FBPINN in JAX.\n\n## FAQs\n\n\n### Installation\n\nI get the error: `RuntimeError: This version of jaxlib was built using AVX instructions, which your CPU and\u002For operating system do not support.` when using Apple GPUs.\n- As of this commit, JAX only has experimental support for Apple GPUs. Either build JAX from [source](https:\u002F\u002Fdeveloper.apple.com\u002Fmetal\u002Fjax\u002F) or install a CPU-only version using conda: `pip uninstall jax jaxlib` and `conda install jax -c conda-forge`\n\n### Using GPUs\n\nHow do I train FBPINNs using a GPU?\n- Exactly the same code should run on a GPU automatically, without needing any modification. Make sure you have installed the GPU version of JAX, and that JAX can see your GPU devices (e.g. by checking `jax.devices()`)\n\n### Understanding the repository\nBut I don't know JAX!?\n- We highly recommend becoming familiar with JAX - it is a fantastic, general-purpose library for accelerated differentiable computing. But even if you don't want to learn JAX, that's ok - all of the front-end classes (`Domain`, `Problem`, `Decomposition`, and `Network`) can be defined with only basic understanding of `jax.numpy` (which is essentially the [same](https:\u002F\u002Fjax.readthedocs.io\u002Fen\u002Flatest\u002Fjax-101\u002F01-jax-basics.html) as `numpy` anyway).\n\n### Methodology\n\nHow are FBPINNs different to other PINN + domain decomposition methods?\n- In contrast to other PINN + domain decomposition methods (such as [XPINNs](https:\u002F\u002Fglobal-sci.org\u002Fintro\u002Farticle_detail\u002Fcicp\u002F18403.html)), FBPINNs by their mathematical construction **do not require additional interface terms** in their loss function, and their **solution is continuous** across subdomain interfaces. Essentially, FBPINNs can just be thought of as defining a custom neural network architecture for PINNs - everything else stays the same.\n\n\n## Citation\n\nIf you find FBPINNs useful and use them in your own work, please use the following citations:\n\n```\n@article{Moseley2023,\nauthor = {Moseley, Ben and Markham, Andrew and Nissen-Meyer, Tarje},\ndoi = {10.1007\u002FS10444-023-10065-9},\njournal = {Advances in Computational Mathematics 2023 49:4},\nmonth = {jul},\nnumber = {4},\npages = {1--39},\npublisher = {Springer},\ntitle = {{Finite basis physics-informed neural networks (FBPINNs): a scalable domain decomposition approach for solving differential equations}},\nurl = {https:\u002F\u002Flink.springer.com\u002Farticle\u002F10.1007\u002Fs10444-023-10065-9},\nvolume = {49},\nyear = {2023}\n}\n\n@article{Dolean2024,\nauthor = {Dolean, Victorita and Heinlein, Alexander and Mishra, Siddhartha and Moseley, Ben},\ndoi = {https:\u002F\u002Fdoi.org\u002F10.1016\u002Fj.cma.2024.117116},\nissn = {0045-7825},\njournal = {Computer Methods in Applied Mechanics and Engineering},\npages = {117116},\ntitle = {{Multilevel domain decomposition-based architectures for physics-informed neural networks}},\nurl = {https:\u002F\u002Fwww.sciencedirect.com\u002Fscience\u002Farticle\u002Fpii\u002FS0045782524003724},\nvolume = {429},\nyear = {2024}\n}\n\n@article{VanBeek2025,\nauthor = {van Beek, Jan Willem and Dolean, Victorita and Moseley, Ben},\ndoi = {10.1016\u002FJ.CMA.2025.118583},\nissn = {0045-7825},\njournal = {Computer Methods in Applied Mechanics and Engineering},\npages = {118583},\ntitle = {{Local feature filtering for scalable and well-conditioned Random Feature Methods}},\nurl = {https:\u002F\u002Fwww.sciencedirect.com\u002Fscience\u002Farticle\u002Fpii\u002FS0045782525008552},\nvolume = {449},\nyear = {2025}\n}\n\n```\n\n## Reproducing our papers\n\nTo reproduce the exact results of our original FBPINN paper: *[Finite Basis Physics-Informed Neural Networks (FBPINNs): a scalable domain decomposition approach for solving differential equations](https:\u002F\u002Flink.springer.com\u002Farticle\u002F10.1007\u002Fs10444-023-10065-9), B. Moseley, T. Nissen-Meyer and A. Markham, Jul 2023 Advances in Computational Mathematics*, you will need to use the legacy PyTorch FBPINN implementation, which is available at this [commit](https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002FFBPINNs\u002Ftree\u002Fpytorch).\n\nTo reproduce the results of our paper: [*Multilevel domain decomposition-based architectures for physics-informed neural networks*](https:\u002F\u002Fdoi.org\u002F10.1016\u002Fj.cma.2024.117116), please see this [branch](https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002FFBPINNs\u002Ftree\u002Fmultilevel-paper\u002Fmultilevel-paper).\n\nTo reproduce the results of our paper: [*Local Feature Filtering for Scalable and Well-Conditioned Domain-Decomposed Random Feature Methods*](https:\u002F\u002Fdoi.org\u002F10.1016\u002Fj.cma.2025.118583),\nplease see this [branch](https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002FFBPINNs\u002Ftree\u002Felm-rrqr-paper\u002Felm-rrqr-paper).\n\n## Further questions?\n\nPlease raise a GitHub [issue](https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002FFBPINNs\u002Fissues) or feel free to contact us.\n","# 有限基物理信息神经网络（FBPINNs）\n\n---\n\n本仓库允许您使用**有限基物理信息神经网络**（FBPINNs）求解与偏微分方程（PDEs）相关的正问题和反问题。\n\n> 🔥 重大更新 🔥：我们已用 [JAX](https:\u002F\u002Fjax.readthedocs.io\u002Fen\u002Flatest\u002Findex.html) 重写了 `fbpinns` 库；相比原有的 PyTorch 代码，现在运行速度提升了 10 到 1000 倍（通过使用 `jax.vmap` 并行化子域计算），并且可扩展至上千个子域。此外，我们还新增了多项功能：现在可以求解反问题、添加任意类型的边界\u002F数据约束、定义不规则或多层级的区域分解以及自定义子域网络，同时高层级接口也更加灵活易用。更多信息请参阅[发布说明](https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002FFBPINNs\u002Freleases\u002Ftag\u002Fv0.2.0)。\n\nFBPINNs 的详细描述见此处：*[有限基物理信息神经网络（FBPINNs）：一种用于求解微分方程的可扩展区域分解方法](https:\u002F\u002Flink.springer.com\u002Farticle\u002F10.1007\u002Fs10444-023-10065-9)，B. Moseley、T. Nissen-Meyer 和 A. Markham，2023 年 7 月《计算数学进展》]*。您还可以在此处查看我们在 2023 年 Maths4DL 大会上的演讲幻灯片[这里](https:\u002F\u002Fmaths4dl.ac.uk\u002Fwp-content\u002Fuploads\u002F2023\u002F07\u002FMoseley.pdf)。\n\n---\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fbenmoseley_FBPINNs_readme_05c7adbe4451.gif\" alt=\"FBPINN 求解高频一维简谐振子\" width=48%>\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fbenmoseley_FBPINNs_readme_3ff3e7ec8a92.gif\" alt=\"PINN 求解高频一维简谐振子\" width=48%>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fbenmoseley_FBPINNs_readme_f77ec4ad0b37.png\" alt=\"测试损失对比\" width=33%>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n    \u003Cb>图 1：FBPINN 与 PINN 求解高频一维简谐振子\u003C\u002Fb>\n\u003C\u002Fp>\n\n## 为什么选择 FBPINNs？\n\n- [物理信息神经网络](https:\u002F\u002Fbenmoseley.blog\u002Fmy-research\u002Fso-what-is-a-physics-informed-neural-network\u002F)（PINNs）是求解与 PDEs 相关的**正问题和反问题**的一种流行方法。\n- 然而，PINNs 在处理**高频率**和\u002F或**多尺度解**的问题时往往表现不佳。\n- 这主要是由于神经网络的**谱偏差**以及 PINN 优化问题的**复杂度急剧增加**所致。\n- FBPINNs 通过结合**区域分解**、**各子域归一化**和**灵活的子域训练调度**，在这一领域显著提升了 PINN 的性能。\n- 实验表明，在求解高频率和多尺度问题时，FBPINNs 在**准确性和计算效率**方面均**显著优于** PINNs（图 1 和图 2）。\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fbenmoseley_FBPINNs_readme_29b3eec43e2f.gif\" alt=\"FBPINN 求解具有多尺度源的 (2+1)D 波动方程\" width=100%>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n    \u003Cb>图 2：FBPINN 求解具有多尺度源的 (2+1)D 波动方程\u003C\u002Fb>\n\u003C\u002Fp>\n\n## FBPINNs 与 PINNs 有何不同？\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fbenmoseley_FBPINNs_readme_e7d4501d0549.png\" alt=\"FBPINN 工作流程概览\" width=100%>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n    \u003Cb>图 3：FBPINN 工作流程概览\u003C\u002Fb>\n\u003C\u002Fp>\n\n为提升 PINN 对高频率\u002F多尺度解的可扩展性：\n\n- FBPINNs 将问题域划分为多个小的、**相互重叠的子域**（图 3）。\n- 每个子域内放置一个神经网络，并将 PDE 的解定义为**所有子域网络之和**。\n- 每个子域网络通过乘以一个光滑可微的窗口函数被**局部限制**在其子域内。\n- 最后，每个网络的输入都会在其所属子域上进行**单独归一化**。\n  \n其假设是，这种“分而治之”的方法能够显著降低 PINN 优化问题的复杂度。此外，通过各子域的单独归一化，确保每个子域网络所面对的“有效”频率较低，从而减轻谱偏差的影响。\n\n## 子域调度\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fbenmoseley_FBPINNs_readme_9a61b96be034.gif\" alt=\"使用时间步进子域调度器求解时变伯格斯方程\" width=100%>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n    \u003Cb>图 4：使用时间步进子域调度器求解时变伯格斯方程\u003C\u002Fb>\n\u003C\u002Fp>\n\n使用区域分解的另一个优势在于，我们可以控制在每一步训练中求解域的哪些**部分**。\n这在需要控制边界条件如何在整个域内**传播**时非常有用。\n例如，我们可以定义一个**时间步进调度器**来求解时变 PDE，并从一组初始条件开始按时间顺序逐步学习解（图 4）。\n这是通过指定一个来自 `fbpinns.schedulers` 的**子域调度器**来实现的，该调度器会定义在每一步训练中哪些子域处于活跃训练状态，哪些子域的参数保持固定。\n\n\n## 安装\n\n`fbpinns` 运行仅需 Python 库即可。\n> [JAX](https:\u002F\u002Fjax.readthedocs.io\u002Fen\u002Flatest\u002Findex.html) 被用作 `fbpinns` 的主要计算引擎。\n\n要安装 `fbpinns`，我们建议您创建一个新的 Python 环境，例如：\n```bash\nconda create -n fbpinns python=3  # 使用 conda\nconda activate fbpinns\n```\n然后克隆本仓库：\n```bash\ngit clone git@github.com:benmoseley\u002FFBPINNs.git\n```\n并在 `FBPINNs\u002F` 根目录下运行以下命令（此命令也会安装所有依赖项）：\n```\npip install -e .\n```\n> 注意：此操作将以“可编辑模式”安装 `fbpinns` 包——您可以对源代码进行修改，这些更改会立即反映在包中。\n\n## 入门\n\n通过执行以下步骤，可以定义并求解正向和反向的偏微分方程问题：\n\n1. 定义**问题域**，选择或自定义一个 `fbpinns.domains.Domain` 类。\n2. 定义要求解的**偏微分方程**以及任何**问题约束条件**（如边界条件或数据约束），选择或自定义一个 `fbpinns.problems.Problem` 类。\n3. 定义 FBPINN 使用的**区域分解**，选择或自定义一个 `fbpinns.decompositions.Decomposition` 类。\n4. 定义放置在每个子域中的**神经网络**，选择或自定义一个 `fbpinns.networks.Network` 类。\n5. 通过将这些类及其初始化参数传递给一个 `fbpinns.constants.Constants` 对象，来跟踪所有的训练超参数。\n6. 使用 `Constants` 对象实例化一个 `fbpinns.trainers.FBPINNTrainer`，开始 FBPINN 的训练。\n\n例如，要求解上文所示的 1D 谐振子问题（图 1）：\n\n```python\nimport numpy as np\n\nfrom fbpinns.domains import RectangularDomainND\nfrom fbpinns.problems import HarmonicOscillator1D\nfrom fbpinns.decompositions import RectangularDecompositionND\nfrom fbpinns.networks import FCN\nfrom fbpinns.constants import Constants\nfrom fbpinns.trainers import FBPINNTrainer\n\nc = Constants(\n    domain=RectangularDomainND,  # 使用 1D 问题域 [0, 1]\n    domain_init_kwargs=dict(\n        xmin=np.array([0,]),\n        xmax=np.array([1,]),\n    ),\n    problem=HarmonicOscillator1D,  # 求解 1D 谐振子问题\n    problem_init_kwargs=dict(\n        d=2, w0=80,  # 定义常微分方程的参数\n    ),\n    decomposition=RectangularDecompositionND,  # 使用矩形区域分解\n    decomposition_init_kwargs=dict(\n        subdomain_xs=[np.linspace(0,1,15)],  # 使用 15 个等间距的子域\n        subdomain_ws=[0.15*np.ones((15,))],  # 子域宽度为 0.15\n        unnorm=(0.,1.),  # 定义子域网络的非归一化范围\n    ),\n    network=FCN,  # 在每个子域中放置一个全连接网络\n    network_init_kwargs=dict(\n        layer_sizes=[1,32,1],  # 包含 2 层隐藏层\n    ),\n    ns=((200,),),  # 使用 200 个配点进行训练\n    n_test=(500,),  # 使用 500 个点进行测试\n    n_steps=20000,  # 训练步数\n    optimiser_kwargs=dict(learning_rate=1e-3),\n    show_figures=True,  # 训练过程中显示图表\n)\n\nrun = FBPINNTrainer(c)\nrun.train()  # 开始训练 FBPINN\n```\n\n`FBPINNTrainer` 将自动输出训练统计信息、图表以及 TensorBoard 摘要。可以通过安装 [TensorBoard](https:\u002F\u002Fwww.tensorflow.org\u002Ftensorboard) 并运行 `tensorboard --logdir results\u002Fsummaries\u002F` 来查看 TensorBoard 摘要。\n\n### 与 PINN 的比较\n\n使用上述相同的超参数，可以轻松训练一个 PINN，方法如下：\n\n```python\nfrom fbpinns.trainers import PINNTrainer\n\nc[\"network_init_kwargs\"] = dict(layer_sizes=[1,64,64,1])  # 使用更大的神经网络\nrun = PINNTrainer(c)\nrun.train()  # 开始在同一问题上训练 PINN\n```\n\n## 进一步学习\n\n请参阅 [examples](https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002FFBPINNs\u002Ftree\u002Fmain\u002Fexamples) 文件夹，其中包含更多高级示例，涵盖：\n- 如何定义自己的 `Problem` 类\n- 如何使用硬边界约束\n- 如何求解逆问题\n- 如何使用子域调度\n\n### 可扩展 PINN 和最小化 FBPINN 实现研讨会\n\n请查看我们的 [可扩展 PINN 研讨会](https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002Fscalable-pinns-workshop)，其中我们展示了如何在 JAX 中编写一个最小化的 FBPINN 和 ELM-FBPINN。\n\n## 常见问题解答\n\n\n### 安装\n\n使用 Apple GPU 时，我收到错误：`RuntimeError: This version of jaxlib was built using AVX instructions, which your CPU and\u002For operating system do not support.`。\n- 截至本次提交，JAX 仅对 Apple GPU 提供实验性支持。您可以从 [源代码](https:\u002F\u002Fdeveloper.apple.com\u002Fmetal\u002Fjax\u002F) 构建 JAX，或者使用 conda 安装仅限 CPU 的版本：`pip uninstall jax jaxlib` 和 `conda install jax -c conda-forge`。\n\n### 使用 GPU\n\n如何使用 GPU 训练 FBPINNs？\n- 完全相同的代码应该可以在 GPU 上自动运行，无需任何修改。请确保已安装 GPU 版本的 JAX，并且 JAX 能够识别您的 GPU 设备（例如，通过检查 `jax.devices()`）。\n\n### 理解仓库\n\n但我并不了解 JAX！？\n- 我们强烈建议您熟悉 JAX——它是一个功能强大、通用的加速可微计算库。但即使您不想学习 JAX，也没关系——所有前端类（`Domain`、`Problem`、`Decomposition` 和 `Network`）都可以仅基于对 `jax.numpy` 的基本理解来定义（而 `jax.numpy` 本质上与 `numpy` [相同](https:\u002F\u002Fjax.readthedocs.io\u002Fen\u002Flatest\u002Fjax-101\u002F01-jax-basics.html)）。\n\n### 方法论\n\nFBPINNs 与其他 PINN + 区域分解方法有何不同？\n- 与其他 PINN + 区域分解方法（如 [XPINNs](https:\u002F\u002Fglobal-sci.org\u002Fintro\u002Farticle_detail\u002Fcicp\u002F18403.html)）相比，FBPINNs 在数学构造上**不需要在其损失函数中添加额外的界面项**，并且其**解在子域界面处是连续的**。本质上，FBPINNs 可以被视为为 PINN 定义了一种自定义的神经网络架构——其他方面保持不变。\n\n\n## 引用\n\n如果您发现 FBPINNs 非常有用并在自己的工作中使用了它们，请使用以下引用：\n\n```\n@article{Moseley2023,\nauthor = {Moseley, Ben and Markham, Andrew and Nissen-Meyer, Tarje},\ndoi = {10.1007\u002FS10444-023-10065-9},\njournal = {Advances in Computational Mathematics 2023 49:4},\nmonth = {jul},\nnumber = {4},\npages = {1--39},\npublisher = {Springer},\ntitle = {{有限基物理信息神经网络 (FBPINNs): 一种用于求解微分方程的可扩展区域分解方法}},\nurl = {https:\u002F\u002Flink.springer.com\u002Farticle\u002F10.1007\u002Fs10444-023-10065-9},\nvolume = {49},\nyear = {2023}\n}\n\n@article{Dolean2024,\nauthor = {Dolean, Victorita and Heinlein, Alexander and Mishra, Siddhartha and Moseley, Ben},\ndoi = {https:\u002F\u002Fdoi.org\u002F10.1016\u002Fj.cma.2024.117116},\nissn = {0045-7825},\njournal = {Computer Methods in Applied Mechanics and Engineering},\npages = {117116},\ntitle = {{基于多级区域分解的物理信息神经网络架构}},\nurl = {https:\u002F\u002Fwww.sciencedirect.com\u002Fscience\u002Farticle\u002Fpii\u002FS0045782524003724},\nvolume = {429},\nyear = {2024}\n}\n\n@article{VanBeek2025,\nauthor = {van Beek, Jan Willem and Dolean, Victorita and Moseley, Ben},\ndoi = {10.1016\u002FJ.CMA.2025.118583},\nissn = {0045-7825},\njournal = {Computer Methods in Applied Mechanics and Engineering},\npages = {118583},\ntitle = {{用于可扩展且条件良好的随机特征方法的局部特征过滤}},\nurl = {https:\u002F\u002Fwww.sciencedirect.com\u002Fscience\u002Farticle\u002Fpii\u002FS0045782525008552},\nvolume = {449},\nyear = {2025}\n}\n\n```\n\n## 复现我们的论文\n\n要复现我们原始 FBPINN 论文的精确结果：*[有限基物理信息神经网络（FBPINNs）：一种用于求解微分方程的可扩展区域分解方法](https:\u002F\u002Flink.springer.com\u002Farticle\u002F10.1007\u002Fs10444-023-10065-9)，B. Moseley、T. Nissen-Meyer 和 A. Markham，2023 年 7 月《计算数学进展》]*，您需要使用旧版的 PyTorch FBPINN 实现，该实现可在这一 [提交记录](https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002FFBPINNs\u002Ftree\u002Fpytorch) 中找到。\n\n要复现我们另一篇论文的结果：[*基于多级区域分解的物理信息神经网络架构*](https:\u002F\u002Fdoi.org\u002F10.1016\u002Fj.cma.2024.117116)，请参阅此 [分支](https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002FFBPINNs\u002Ftree\u002Fmultilevel-paper\u002Fmultilevel-paper)。\n\n要复现我们第三篇论文的结果：[*用于可扩展且条件良好的区域分解随机特征方法的局部特征滤波*](https:\u002F\u002Fdoi.org\u002F10.1016\u002Fj.cma.2025.118583)，请参阅此 [分支](https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002FFBPINNs\u002Ftree\u002Felm-rrqr-paper\u002Felm-rrqr-paper)。\n\n## 还有其他问题吗？\n\n请在 GitHub 上提交 [issue](https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002FFBPINNs\u002Fissues)，或随时与我们联系。","# FBPINNs 快速上手指南\n\nFBPINNs (Finite Basis Physics-Informed Neural Networks) 是一种基于区域分解的可扩展物理信息神经网络框架，专门用于高效求解具有**高频**或**多尺度**特性的偏微分方程（PDE）正演与反演问题。相比传统 PINN，它在处理复杂波动方程和多尺度源项时具有显著的性能优势。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**: Linux, macOS 或 Windows (WSL 推荐)\n*   **Python 版本**: Python 3.8+\n*   **核心依赖**:\n    *   [JAX](https:\u002F\u002Fjax.readthedocs.io\u002F): 作为主要计算引擎（支持 CPU\u002FGPU\u002FTPU 加速）。\n    *   NumPy, Matplotlib 等科学计算库。\n*   **硬件建议**:\n    *   **CPU**: 通用运行。\n    *   **GPU**: 如需加速训练，请预先安装对应 CUDA 版本的 `jaxlib`。FBPINNs 利用 `jax.vmap` 并行化子域计算，在多卡或高性能 GPU 上收益明显。\n    *   **Apple Silicon (M1\u002FM2\u002FM3)**: JAX 对 Apple GPU 支持处于实验阶段。若遇到 AVX 指令集错误，建议暂时使用 CPU 版本或从源码编译 JAX。\n\n> **国内加速提示**: 安装 Python 依赖时，推荐使用清华或阿里镜像源以提升下载速度。\n> ```bash\n> export PIP_INDEX_URL=https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n> ```\n\n## 安装步骤\n\n推荐使用 `conda` 创建独立的虚拟环境以避免依赖冲突。\n\n1.  **创建并激活虚拟环境**\n    ```bash\n    conda create -n fbpinns python=3.9\n    conda activate fbpinns\n    ```\n\n2.  **克隆项目代码**\n    ```bash\n    git clone git@github.com:benmoseley\u002FFBPINNs.git\n    cd FBPINNs\n    ```\n\n3.  **安装依赖包**\n    在项目根目录下执行以下命令，将以“可编辑模式”安装 `fbpinns` 及其所有依赖（包括 JAX）。\n    ```bash\n    pip install -e .\n    ```\n    *注：可编辑模式允许您修改源代码后立即生效，便于调试和二次开发。*\n\n4.  **验证安装 (可选)**\n    确保 JAX 能正确识别您的设备：\n    ```python\n    import jax\n    print(jax.devices())\n    ```\n\n## 基本使用\n\nFBPINNs 的工作流分为六个核心步骤：定义域、定义问题（PDE）、定义区域分解、定义子域网络、配置超参数、启动训练。\n\n以下是一个求解**一维高频谐振子**问题的最小完整示例：\n\n```python\nimport numpy as np\n\nfrom fbpinns.domains import RectangularDomainND\nfrom fbpinns.problems import HarmonicOscillator1D\nfrom fbpinns.decompositions import RectangularDecompositionND\nfrom fbpinns.networks import FCN\nfrom fbpinns.constants import Constants\nfrom fbpinns.trainers import FBPINNTrainer\n\n# 1. 配置所有超参数\nc = Constants(\n    # 定义问题域：1D 区间 [0, 1]\n    domain=RectangularDomainND,\n    domain_init_kwargs=dict(\n        xmin=np.array([0,]),\n        xmax=np.array([1,]),\n    ),\n    # 定义 PDE 问题：一维谐振子\n    problem=HarmonicOscillator1D,\n    problem_init_kwargs=dict(\n        d=2, w0=80, # d: 维度，w0: 频率参数\n    ),\n    # 定义区域分解：矩形分解\n    decomposition=RectangularDecompositionND,\n    decomposition_init_kwargs=dict(\n        subdomain_xs=[np.linspace(0, 1, 15)], # 划分为 15 个重叠子域\n        subdomain_ws=[0.15 * np.ones((15,))], # 子域宽度\n        unnorm=(0., 1.), # 定义子域网络的反归一化范围\n    ),\n    # 定义子域内的神经网络结构：全连接网络 (FCN)\n    network=FCN,\n    network_init_kwargs=dict(\n        layer_sizes=[1, 32, 1], # 输入层 1，隐藏层 32，输出层 1\n    ),\n    # 训练配置\n    ns=((200,),),       # 每个子域使用的配点数量\n    n_test=(500,),      # 测试点数量\n    n_steps=20000,      # 训练步数\n    optimiser_kwargs=dict(learning_rate=1e-3),\n    show_figures=True,  # 训练过程中实时显示绘图\n)\n\n# 2. 实例化训练器并开始训练\nrun = FBPINNTrainer(c)\nrun.train()\n```\n\n**运行结果说明：**\n*   脚本运行后，终端将实时输出损失函数统计信息。\n*   若设置了 `show_figures=True`，将弹出窗口显示训练过程中的解曲线拟合情况。\n*   训练日志和 TensorBoard 摘要默认保存在 `results\u002Fsummaries\u002F` 目录。您可以使用以下命令查看可视化图表：\n    ```bash\n    tensorboard --logdir results\u002Fsummaries\u002F\n    ```\n\n**对比传统 PINN：**\n若想用相同的配置训练一个标准的 PINN 进行对比，只需替换训练器类并调整网络大小：\n```python\nfrom fbpinns.trainers import PINNTrainer\n\nc[\"network_init_kwargs\"] = dict(layer_sizes=[1, 64, 64, 1]) # PINN 通常需要更大的网络\nrun = PINNTrainer(c)\nrun.train()\n```","某地球物理勘探团队正利用地震波数据反演地下复杂岩层结构，需高精度求解包含高频振荡与多尺度特征的非线性波动方程。\n\n### 没有 FBPINNs 时\n- **高频失效**：传统 PINN 受神经网络“频谱偏差”影响，难以捕捉地震波中的高频细节，导致成像结果模糊，丢失关键地质界面信息。\n- **优化困难**：面对多尺度解，单一全局网络的损失函数地形极度复杂，模型极易陷入局部最优，训练过程震荡且不收敛。\n- **算力瓶颈**：为提升精度被迫增加网络深度，导致显存爆炸且无法有效并行，计算耗时从数小时拖延至数天，严重阻碍迭代效率。\n\n### 使用 FBPINNs 后\n- **精准复原**：FBPINNs 通过区域分解将大问题拆解，每个子域网络独立归一化，成功“压低”了局部有效频率，清晰还原了高频波场特征。\n- **稳定收敛**：采用“分而治之”策略大幅降低了优化复杂度，配合灵活的子域训练调度，即使在多尺度源项下也能快速稳定收敛。\n- **极速扩展**：基于 JAX 重构的代码利用 `vmap` 实现子域计算高度并行，支持上千个子域同时运算，将原本数天的任务缩短至分钟级，效率提升百倍。\n\nFBPINNs 通过创新的领域分解架构，彻底突破了传统深度学习求解器在处理高频、多尺度偏微分方程时的性能天花板。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fbenmoseley_FBPINNs_05c7adbe.gif","benmoseley","Ben Moseley","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fbenmoseley_9d187637.jpg","Assistant Professor at Imperial College London | Scientific Machine Learning","Imperial College London","London",null,"benm_oseley","https:\u002F\u002Fbenmoseley.blog\u002F","https:\u002F\u002Fgithub.com\u002Fbenmoseley",[83],{"name":84,"color":85,"percentage":86},"Python","#3572A5",100,535,108,"2026-04-02T12:19:33","MIT","Linux, macOS, Windows","非必需（支持 CPU 和 GPU）。若使用 GPU，需安装对应版本的 JAX GPU 包（支持 NVIDIA CUDA 或 Apple Silicon\u002FMPS），具体型号和显存未说明，由 JAX 自动检测可用设备。","未说明（取决于子域数量和网格点密度，可扩展至数千个子域）",{"notes":95,"python":96,"dependencies":97},"核心计算引擎为 JAX（已重写，比原 PyTorch 版本快 10-1000 倍）。在 Apple GPU (M1\u002FM2) 上，JAX 支持尚处于实验阶段，若遇到 AVX 指令集错误，建议从源码编译 JAX 或使用 conda 安装 CPU 版本。支持通过 jax.vmap 并行化子域计算，可轻松扩展至数千个子域。","3.x (README 示例使用 python=3，建议 3.8+)",[98,99,100,101],"jax","jaxlib","numpy","tensorboard",[14],[104,105,106,98,107,108],"neural-networks","differential-equations","domain-decomposition","physics-informed-neural-networks","pinns","2026-03-27T02:49:30.150509","2026-04-11T10:03:06.967905",[112,117,122,127,132,137],{"id":113,"question_zh":114,"answer_zh":115,"source_url":116},29327,"克隆仓库时遇到路径错误或安装失败怎么办？","请确保使用正确的 GitHub 仓库地址进行克隆。正确的命令是：\ngit clone https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002FFBPINNs.git\n如果之前使用的路径有误或仓库名称拼写错误，会导致克隆失败。请检查 URL 是否完全匹配上述地址。","https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002FFBPINNs\u002Fissues\u002F20",{"id":118,"question_zh":119,"answer_zh":120,"source_url":121},29323,"运行代码时遇到 'jnp.unique' 形状不一致或 'XlaExecutable.cost_analysis' 相关的错误怎么办？","这通常是由于 JAX 版本更新导致的行为变更（例如 jax-0.4.38 版本更改了 cost_analysis 的行为，或不同版本间 jnp.unique 输出数组形状不一致）。维护者已发布补丁修复了这些问题。请确保拉取最新的代码库以获取修复：\n1. 对于 cost_analysis 问题，参考提交：https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002FFBPINNs\u002Fcommit\u002F1850a93edb3d1c039245259086f033edab299518\n2. 对于 jnp.unique 问题，维护者已上传补丁。\n如果问题仍然存在，请检查您的 jax\u002Fjaxlib 版本（如 0.4.25）并尝试升级到最新稳定版或回退到兼容版本。","https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002FFBPINNs\u002Fissues\u002F9",{"id":123,"question_zh":124,"answer_zh":125,"source_url":126},29324,"如何在 Google Colab 上运行 FBPINNs 示例代码？","在 Google Colab 中运行基本示例（如 1D 谐振子）的步骤如下：\n1. 克隆仓库：!git clone https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002FFBPINNs.git\n2. 安装依赖：!pip install -r requirements.txt\n3. 安装额外工具：!pip install tensorboardX\n4. 导入模块并配置 Constants 和 FBPINNTrainer 进行训练。\n注意：如果遇到报错，可能是因为 JAX 版本更新导致的兼容性问题（见其他 FAQ），请确保使用最新代码。另外，通过 pip install -e . 安装的 JAX 可能默认使用 CPU 而非 GPU，如需 GPU 加速需单独配置 JAX GPU 版本。","https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002FFBPINNs\u002Fissues\u002F30",{"id":128,"question_zh":129,"answer_zh":130,"source_url":131},29325,"程序运行后没有退出，一直卡在某个步骤（如 23 次运行后）怎么办？","这种情况通常由以下原因引起：\n1. **内存不足 (RAM)**：脚本默认可能启动过多并行进程（如 23 个）。可以通过修改配置减少进程数来降低内存占用，例如设置 DEVICES = [\"cpu\"]*4 仅使用 4 个进程。\n2. **多进程兼容性问题**：在 Windows 上，multiprocessing 池可能与系统兼容性不佳（主要在 Linux\u002FMacOS 测试过）。可以尝试禁用多进程类，直接在主线程中使用大循环运行所有训练任务。\n3. **监控方法**：程序正常运行时会为每个进程生成日志文件（名为 screenlog.main.[process id].log），可使用 tail -f 命令监控。同时可用 top\u002Fhtop (Linux) 或 nvidia-smi (GPU) 确认进程是否在运行。","https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002FFBPINNs\u002Fissues\u002F3",{"id":133,"question_zh":134,"answer_zh":135,"source_url":136},29326,"如何加载已保存的模型并进行迁移学习或继续训练？","目前该功能尚未作为标准特性实现，但可以通过修改源代码手动实现：\n需要编辑 fbpinns\u002Ftrainers.py 文件中的参数初始化部分（具体在第 589 行和第 601 行附近）。\n将原本使用默认初始化的代码改为从文件中加载 all_params 变量。这样即可加载之前训练保存的权重（例如训练了 50k 步的模型），并在此基础上继续训练额外的步数（如再训练 50k 步）以细化模型。","https:\u002F\u002Fgithub.com\u002Fbenmoseley\u002FFBPINNs\u002Fissues\u002F28",{"id":138,"question_zh":139,"answer_zh":140,"source_url":131},29328,"Windows 用户遇到 'paging file is too small' 或 DLL 加载错误如何解决？","该错误（OSError: [WinError 1455]）通常表示页面文件太小或 PyTorch\u002FCUDA 依赖项加载失败。\n建议解决方案：\n1. **增加虚拟内存**：在 Windows 系统设置中增大页面文件大小。\n2. **检查环境**：确认 Anaconda 环境中 PyTorch 和 CUDA 版本兼容。\n3. **切换平台测试**：如果可能，建议在 Linux (Ubuntu) 或 MacOS 上运行，因为部分多进程功能在 Windows 上可能存在兼容性问题。\n4. **减少并行进程**：如遇到资源耗尽，可尝试减少并行运行的进程数量。",[142],{"id":143,"version":144,"summary_zh":145,"released_at":146},198106,"v0.2.0","## 新特性\n\n🔥 这是 FBPINN 库的一次重大更新 🔥。我们使用 JAX 重写了整个库，并新增了一个更加灵活、易于使用的高级接口。\n\n### 速度提升\n- 当前库的运行速度比原有的 PyTorch 代码快 10 到 1000 倍。核心原因在于使用了 `jax.vmap`，它可以在 GPU 上并行化子域的前向计算和梯度计算（之前是串行进行的）。这使得我们可以扩展到上千个子域，而此前只能处理不到一百个子域。\n\n### 灵活性\n高级接口的灵活性大幅提升。具体来说，现在可以：\n- 定义不规则且多层级的区域分解；\n- 自定义子域神经网络架构；\n- 添加任意类型的边界\u002F数据约束，包括使用“软”边界损失训练 FBPINN；\n- 求解反问题；\n- 学习区域分解方式。\n\n### 易用性\n此外，接口也更加易用。与之前的代码相比：\n- 在应用约束算子时，无需手动更新 FBPINN 的梯度，现在可通过自动微分自动完成；\n- `Domain`、`Problem`、`Decomposition` 和 `Network` 等类的设计更加直观、简洁；\n- 使用 Python 日志系统来控制输出级别；\n- 该库现已支持通过 pip 安装；\n- 增加了更多示例。","2023-07-30T17:26:01"]