<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>椭圆规/tuoyuangui</title><description>Blog of tuoyuangui</description><link>https://tuoyuangui.github.io/</link><language>zh_CN</language><item><title>利用Azure和Cloudflare建站</title><link>https://tuoyuangui.github.io/website/posts/typora/%E7%BD%91%E7%BB%9C%E5%BB%BA%E7%AB%99/%E5%88%A9%E7%94%A8azure%E5%92%8Ccloudflare%E5%BB%BA%E7%AB%99/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E7%BD%91%E7%BB%9C%E5%BB%BA%E7%AB%99/%E5%88%A9%E7%94%A8azure%E5%92%8Ccloudflare%E5%BB%BA%E7%AB%99/</guid><pubDate>Thu, 05 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;利用Azure和Cloudflare建站&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;核心架构：Cloudflare (域名/仅DNS) + Azure 学生免费机 (Ubuntu) + Nginx (Web服务)
适用场景：部署纯静态网页（如 Astro, Vue, React 打包生成的 &lt;code&gt;dist&lt;/code&gt; 目录）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;一、 前期准备：域名与服务器&lt;/h2&gt;
&lt;h3&gt;1. 注册低价域名 &lt;a href=&quot;https://dash.cloudflare.com/&quot;&gt;Cloudflare&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;选购&lt;/strong&gt;：寻找 6-9 位纯数字 &lt;code&gt;.xyz&lt;/code&gt; 域名，成本极低（约 $0.85/年）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;购买限制&lt;/strong&gt;：Cloudflare 不能一次性买 10 年，需先买 1 年，手动续费 8 年，等待 24 小时后再续费 1 年。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;注册人信息&lt;/strong&gt;：必须填写真实拼音地址，地址行不能纯数字。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;img src=&quot;./%E5%88%A9%E7%94%A8Azure%E5%92%8CCloudflare%E5%BB%BA%E7%AB%99.assets/image-20261105165030251.png&quot; alt=&quot;image-20261105165030251&quot; /&gt;2. 申请 &lt;a href=&quot;https://portal.azure.com/&quot;&gt;Azure&lt;/a&gt; 学生免费服务器&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;入口&lt;/strong&gt;：Azure for Students 官网，使用学校邮箱验证，不需要信用卡。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;额度&lt;/strong&gt;：包含 $100 体验金（有效期12个月） + 免费服务列表。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;配置选择（至关重要）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;区域&lt;/strong&gt;：推荐 &lt;code&gt;Japan East&lt;/code&gt; 或 &lt;code&gt;Korea Central&lt;/code&gt;（国内访问延迟低）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;映像&lt;/strong&gt;：&lt;code&gt;Ubuntu Server 24.04 LTS - x64 Gen2&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;大小&lt;/strong&gt;：必须选 &lt;code&gt;Standard_B2ats_v2&lt;/code&gt; 或 &lt;code&gt;Standard_B2ts_v2&lt;/code&gt;（避开收费规格）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;身份验证&lt;/strong&gt;：推荐设置 SSH 公钥或强密码（如用户名 &lt;code&gt;liguolong&lt;/code&gt;）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;磁盘&lt;/strong&gt;：默认 64GB P6（在免费额度内）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;公网 IP&lt;/strong&gt;：标准 SKU 动态 IP（后续会有微小扣费）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E5%88%A9%E7%94%A8Azure%E5%92%8CCloudflare%E5%BB%BA%E7%AB%99.assets/image-20261105165356690.png&quot; alt=&quot;image-20261105165356690&quot; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;二、 网络与端口配置&lt;/h2&gt;
&lt;h3&gt;1. Azure 网络安全组 (NSG) 放行端口&lt;/h3&gt;
&lt;p&gt;在 Azure 门户 -&amp;gt; 虚拟机 -&amp;gt; &lt;strong&gt;网络&lt;/strong&gt; -&amp;gt; 添加入站端口规则：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;规则 1&lt;/strong&gt;：端口 &lt;code&gt;80&lt;/code&gt;，协议 &lt;code&gt;TCP&lt;/code&gt;，操作 &lt;code&gt;允许&lt;/code&gt;，优先级 &lt;code&gt;310&lt;/code&gt;（HTTP）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;规则 2&lt;/strong&gt;：端口 &lt;code&gt;443&lt;/code&gt;，协议 &lt;code&gt;TCP&lt;/code&gt;，操作 &lt;code&gt;允许&lt;/code&gt;，优先级 &lt;code&gt;320&lt;/code&gt;（HTTPS，可选）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SSH端口&lt;/strong&gt;：默认 &lt;code&gt;22&lt;/code&gt; 已开放。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;./%E5%88%A9%E7%94%A8Azure%E5%92%8CCloudflare%E5%BB%BA%E7%AB%99.assets/image-20261105164840477.png&quot; alt=&quot;image-20261105164840477&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;2. Cloudflare DNS 解析&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类型&lt;/strong&gt;：&lt;code&gt;A&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;名称&lt;/strong&gt;：&lt;code&gt;@&lt;/code&gt; （代表根域名，不要填完整域名）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IPv4 地址&lt;/strong&gt;：Azure 的公网 IP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代理状态&lt;/strong&gt;：&lt;strong&gt;仅 DNS（灰色云朵）&lt;/strong&gt;。如果不配 SSL 证书，千万别开橙色云朵，否则会无限重定向。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;./%E5%88%A9%E7%94%A8Azure%E5%92%8CCloudflare%E5%BB%BA%E7%AB%99.assets/image-20261105165543812.png&quot; alt=&quot;image-20261105165543812&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;三、 服务器初始化与 Nginx 部署&lt;/h2&gt;
&lt;h3&gt;1. 安装 Nginx&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sudo apt install nginx -y
# 此时访问 http://你的域名 或 http://你的IP，应能看到 &quot;Welcome to nginx!&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2.部署前端静态项目&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;服务器文件位置&lt;/strong&gt;：必须将打包后的文件放到 &lt;code&gt;/var/www/html/website/&lt;/code&gt; 目录下。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nginx 路径重写&lt;/strong&gt;：在 &lt;code&gt;/etc/nginx/sites-available/default&lt;/code&gt; 中修改：&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;location / {
    root /var/www/html;
    try_files /website$uri /website/index.html =404;
}
location /website/ {
    alias /var/www/html/website/;
    index index.html;
}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>AI每周总结-地球物理 (W45)</title><link>https://tuoyuangui.github.io/website/posts/typora/ai%E6%AF%8F%E6%97%A5%E6%80%BB%E7%BB%93/ai%E6%AF%8F%E5%91%A8%E6%80%BB%E7%BB%93_2026-w45/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/ai%E6%AF%8F%E6%97%A5%E6%80%BB%E7%BB%93/ai%E6%AF%8F%E5%91%A8%E6%80%BB%E7%BB%93_2026-w45/</guid><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;AI每周总结 · 地球物理（2026-11-02）&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;口径声明（必读）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;{{project}}&lt;/code&gt; 未被注入&lt;/strong&gt;：本期沿用既定默认口径 &lt;strong&gt;AI + 深度学习 + HPC + 地震数据处理 + 全波形反演（FWI）&lt;/strong&gt;；若下游模板需要替换，请全局替换该口径即可。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;{{date}}&lt;/code&gt; = 2026-11-02（周一）&lt;/strong&gt;，ISO 周 = &lt;strong&gt;2026-W45&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;采集区间&lt;/strong&gt;：主窗口 &lt;strong&gt;2026-10-26 ~ 2026-11-02（8 天，含端点）&lt;/strong&gt;。实际条目日期落在 &lt;strong&gt;10-26 ~ 10-31&lt;/strong&gt;；&lt;strong&gt;10-30 之后 arXiv 无新增 geo-ph 条目&lt;/strong&gt;（公告排期滞后，周一 11-02 晚才会集中放出新提交），属检索窗口固有缺口，已在第九节说明。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;历史对比基准&lt;/strong&gt;：最近 &lt;strong&gt;2 份&lt;/strong&gt;历史总结 —— &lt;code&gt;AI每周总结_2026-W44.md&lt;/code&gt;（published 2026-10-26）、&lt;code&gt;AI每周总结_2026-W43.md&lt;/code&gt;（published 2026-10-19）。&lt;strong&gt;W40 仍缺档&lt;/strong&gt;（连续第四期挂账，见第八节）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分类口径&lt;/strong&gt;：&lt;strong&gt;传统方法&lt;/strong&gt; = 以物理/数学/数值/信号处理/反演/成像/层析/走时/振幅为核心，不以 DL/ML 为主要创新；&lt;strong&gt;AI/地球物理&lt;/strong&gt; = 以深度学习/机器学习/神经网络/生成模型/LLM 为核心创新。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;两类条数分布（如实披露）&lt;/strong&gt;：&lt;strong&gt;主榜 10 条 = AI/地球物理 5 条 / 传统方法 5 条&lt;/strong&gt;。AI 5 条落在建议区间（5–7）下限，传统 5 条落在建议区间（3–5）上限；&lt;strong&gt;6:4 目标未严格达成&lt;/strong&gt;。原因：本期 AI 侧可验证候选偏薄（窗口内 arXiv geo-ph 仅 12 条 + 跨类 1 条，为六期以来最少），唯一可补入的 AI 候选（QFrFT-PQCNet）&lt;strong&gt;无摘要、无机构、内容未验证&lt;/strong&gt;，为守住&quot;不凑数&quot;原则未提入主榜。替换方案见 9.4。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;一、本期概览&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;项&lt;/th&gt;
&lt;th&gt;值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;覆盖区间&lt;/td&gt;
&lt;td&gt;2026-10-26 ~ 2026-11-02（实际条目 10-26 ~ 10-31；arXiv 尾部因公告排期存在缺口）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;精选条数&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;10 条&lt;/strong&gt;，实际 &lt;strong&gt;AI/地球物理 5 / 传统方法 5&lt;/strong&gt;（目标 6:4 未严格达成，原因见 9.4）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;来源结构&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;期刊 5 条&lt;/strong&gt;（&lt;em&gt;Geophysics Prospect&lt;/em&gt; ×1、GJI ×3、JGR-Solid Earth ×1）· &lt;strong&gt;arXiv 预印本 5 条&lt;/strong&gt; · 一条条目只按&quot;首选可核验载体&quot;计一次&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;去重结果&lt;/td&gt;
&lt;td&gt;与 2 份历史文件（W43/W44）逐条比对（DOI / arXiv ID / 标题关键词三重检索）：&lt;strong&gt;10 条全部为首次收录&lt;/strong&gt;；其中 &lt;strong&gt;3 条属&quot;方向升级&quot;&lt;/strong&gt;（见 5.A / 5.B）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;最强可复现资产&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;github.com/mnky9800n/hmvae-geo&lt;/code&gt;（实测存在，0★，无 license，pushed 2026-10-26）&lt;/strong&gt;、&lt;strong&gt;&lt;code&gt;github.com/jlalvis/uxo-cnn-classification&lt;/code&gt;（实测存在，0★，无 license，pushed 2026-05-16，早于论文发表）&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⚠️ 代码风险项&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;本期主榜无一条&quot;声明公开但 404&quot;&lt;/strong&gt;（六期以来首次）；但 2610.39892（DAS-NanoNet）的 &lt;strong&gt;Zenodo 数据集 DOI 为&quot;发表后公开&quot;预留&lt;/strong&gt;、代码仅&quot;按合理请求向通讯作者索取&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;开源栈状态&lt;/td&gt;
&lt;td&gt;Devito &lt;strong&gt;v4.8.23 / 2026-08-07&lt;/strong&gt;、ObsPy &lt;strong&gt;1.5.1 / 2026-08-28&lt;/strong&gt;、SeisBench &lt;strong&gt;PyPI 0.12.6 / 2026-09-17&lt;/strong&gt;（GitHub releases 仍停在 v0.12.0）—— &lt;strong&gt;本期实测均无新版本&lt;/strong&gt;；三个历史 404 仓库（DiffSpecMatch / MeanFlow4Helmholtz / HypoNet_Nankai_DeeperPINN_PS）&lt;strong&gt;月度复查仍全部 404&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;本期主线&lt;/td&gt;
&lt;td&gt;①**&quot;自适应正则化 + 高效求解器&quot;成为传统反演的公共主题**（白噪自动定权、Hessian 特征值修正、谱域快速解三条各来自不同团队）；②&lt;strong&gt;条件化生成模型从&quot;生成速度模型&quot;下沉到&quot;数据重建&quot;环节&lt;/strong&gt;（低频结构引导的 3D 条件扩散）；③**&quot;显式坐标编码&quot;在拾取任务上复现了 FED-FWI 在 FWI 上的收益逻辑**（同一个思想在不同任务上的一周内重复出现）；④&lt;strong&gt;UBC 组（Heagy/Oldenburg）同周贡献传统正则化与 AI 分类各一条 —— 机构级双线下注信号再现&lt;/strong&gt;。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;二、本期精选 Top 10（整体按相关性排序；AI 5 + 传统 5）&lt;/h2&gt;
&lt;h3&gt;1. 白噪原理自适应定权的各向异性 Tikhonov-TV 叠后反演（Gholami 组新条目）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Adaptive Seismic Inversion in Piecewise Smooth Media Using Whiteness-based Alternating Directions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Lian Zhao、Danping Cao —— &lt;strong&gt;中国石油大学（华东）深层油气全国重点实验室，青岛&lt;/strong&gt;；Kamal Aghazade、Ali Gholami —— &lt;strong&gt;波兰科学院地球物理研究所，华沙&lt;/strong&gt;（arXiv HTML &lt;code&gt;Affiliation:&lt;/code&gt; 字段已逐人核验）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.40433（v1，2026-10-29，physics.geo-ph）· https://arxiv.org/abs/2610.40433&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：叠后声波阻抗反演的不适定性来自带限 + 噪声：Tikhonov 正则糊化界面、TV 正则出阶梯伪影。本文把对数阻抗分解为&lt;strong&gt;分片常值 + 光滑&lt;/strong&gt;两组分量，&lt;strong&gt;各向异性地在垂直/水平两个方向分别施加 TV 与 Tikhonov 约束&lt;/strong&gt;；三个工程要点：①利用 &lt;strong&gt;Sylvester 结构 + FFT 在谱域快速计算候选解&lt;/strong&gt;，降低参数搜索成本；②用&lt;strong&gt;残差白噪原理自动选择正则化参数&lt;/strong&gt;（免人工调权）；③基于交替方向的自适应算法完成整定。目标性质：&quot;同时刻画层间突变与层内渐变&quot;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：叠后声阻抗合成反演算例（摘要范围；⚠️ 是否含实测未在摘要确认）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️ 未验证）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;传统方法&lt;/strong&gt;（正则化反演 / 变分求解；无 DL 组件）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目（AI+DL+HPC+地震数据处理+FWI）的启发&lt;/strong&gt;：①这是 &lt;strong&gt;W44 #2（dual RTM，多重散射对偶成像）同一课题组（波兰科学院 Gholami 组）的新条目&lt;/strong&gt;，问题不同（叠后阻抗 vs 多次散射成像），但&lt;strong&gt;方法论签名完全一致：把&quot;求解效率 + 参数自动选择&quot;做成方法贡献&lt;/strong&gt; —— 该组的&quot;高效数值求解 + 自适应&quot;范式值得作为一条方法学谱系跟踪；②**&quot;残差白噪原理定正则权&quot;是免调参的贝叶斯式验收判据**，可移植到我们 FWI 流程里任何带正则权重的环节（包括扩散先验强度的自动定权 —— 与 W43 #2 ASVGD-FWI 的&quot;先验强度后验自适应&quot;形成传统/AI 两条对照路线）；③Sylvester 结构 + FFT 的谱域快速解是把&quot;参数扫描&quot;成本压下来的通用套路，对正则权消融实验有直接价值。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据 + 逐人机构 + 全文摘要；⚠️ 代码未声明；是否含实测数据未确认。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;2. 低频结构引导的 3D 条件扩散地震数据重建（成都理工组：生成先验下沉到处理环节）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Missing Seismic Data Reconstruction Using Low-Frequency Structure-Guided 3D Diffusion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Hengjun He、Xingye Liu、Fen Lyu、Shaohuan Zu（祖绍环）、Chao Li —— &lt;strong&gt;成都理工大学地球物理学院（自然资源部地球勘探与信息技术重点实验室）&lt;/strong&gt;（Crossref affiliation 字段已核验）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;Geophysical Prospecting&lt;/em&gt; 74(9) · https://doi.org/10.1111/1365-2478.70280（published 2026-10-30）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：连续缺失道/采集缺口比散死道更难（破坏横向相干、断层边界连续性与薄层响应）。传统预测滤波/变换域插值/低秩补全依赖局部线性、稀疏或低秩假设，强非平稳结构 + 宽缺失带下会过平滑、边界错配、高频损失。本文用&lt;strong&gt;低频结构引导的 3D 条件扩散&lt;/strong&gt;：先从不完整 3D 体提取&lt;strong&gt;稳定低频分量&lt;/strong&gt;（3D 结构张量倾角估计 + 事件导向低频插值 + 可靠性加权融合），补全缺失带内的长波长结构（保持反射几何、长波长相位趋势与 3D 层位分布），再把该低频体作为&lt;strong&gt;结构条件&lt;/strong&gt;引导 3D 扩散模型完成重建。卖点：3D 逐体建模利用空间相关，且以条件化规避&quot;高训练成本 + 长采样链 + 稳定结构约束不足&quot;三类既有 3D 方法缺陷。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：3D 地震数据重建算例（摘要范围；⚠️ 合成/实测比例未在摘要确认）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️ 未验证）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;AI/地球物理&lt;/strong&gt;（3D 条件扩散 + 结构条件化为核心创新）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：①这是**&quot;生成先验家族&quot;从速度建模/波场生成下沉到&quot;数据重建&quot;处理环节&lt;strong&gt;的条目 —— 该家族连续第七期出现（W38 扩散 → W41 扩散+算子 → W43 ASVGD → W44 流匹配代际切换 → 本期回流到处理侧的条件扩散），&lt;/strong&gt;&quot;条件化&quot;（低频引导）是本期新增的实现维度**：用&quot;最可靠的粗尺度信息做条件&quot;替代&quot;端到端盲生成&quot;，这个模式对我们任何生成式 FWI/重建任务都是低风险接法；②&lt;strong&gt;注意作者组信号&lt;/strong&gt;：祖绍环 = W44 #5（Mean Flows 频域波场一步生成）作者，Chao Li = W43 #2（ASVGD-FWI 扩散正则）一作（⚠️ 同名，是否同一人未验证）—— 若为同一人，则该作者在&quot;扩散正则 / 流匹配 / 条件扩散重建&quot;三条生成路线上都有产出，可作为&quot;生成先验全域布局&quot;的个案跟踪；③低频引导条件的构造链（结构张量倾角 → 事件导向插值 → 可靠性融合）本身是传统信号处理，可直接复用为&lt;strong&gt;任何生成模型的条件构造器&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ Crossref 全文摘要 + 机构 + 卷期（74(9)）；⚠️ 代码未声明；合成/实测构成未确认；量化指标摘要未给。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;3. 显式坐标编码驱动的高分辨微地震初至拾取（把&quot;坐标即信息&quot;做成最低成本升级）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Explicit Coordinate Encoding Matters: A Coordinate-Driven Framework for First-Arrival Picking in Microseismic Monitoring&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Jinglei Song、Changpeng Yu、Yong Zheng —— &lt;strong&gt;中国地质大学（武汉）+ SINOPEC 地球物理重点实验室&lt;/strong&gt;；Zizheng Li、Deshan Zhou、Yu Wang —— &lt;strong&gt;中石化石油物探技术研究院&lt;/strong&gt;（Crossref affiliation 字段已核验）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;GJI&lt;/em&gt; · https://doi.org/10.1093/gji/ggag469（published 2026-10-30，early view，&lt;strong&gt;卷期页码待定&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：现役深度学习拾取只用单道时间特征，跨道相干特征被丢弃；而微地震监测的密集规则观测排列天然产生空间独特性的初至模式。既有做法是堆复杂架构，训练贵且不一定涨点。本文把微地震记录重排为 2D 图像，&lt;strong&gt;把每个像素的 X/Y 坐标作为两个额外通道拼接进波形图像&lt;/strong&gt;，喂给 U-Net：网络获得绝对空间位置感知，&lt;strong&gt;打破标准 CNN 的平移不变性&lt;/strong&gt;，以&lt;strong&gt;可忽略的额外参数量&lt;/strong&gt;同时捕获时间特征与跨道空间连续性。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：实测微地震数据集；&lt;strong&gt;平均最小损失降低约 54%，模型参数仅增加约 0.015%；P 波优秀率从 73.06% 升至 92.24%，平均误差从 9.51 ms 降到 3.36 ms&lt;/strong&gt;（作者自述）；含坐标通道消融实验&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️ 未验证）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;AI/地球物理&lt;/strong&gt;（显式坐标编码 + CNN/U-Net 拾取为核心创新）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：①&lt;strong&gt;这与 W44 #7（FED-FWI 的 Fourier 特征映射 + NTK 谱解释）是同一底层思想在不同任务上的一周内重复出现&lt;/strong&gt;：给网络显式的坐标/频率信息比堆深度更有效。FED-FWI 解释&quot;为什么 Fourier 特征能解尖锐对比&quot;，本条证明&quot;坐标通道在零参数代价下解决平移不变性误用&quot; —— 两条并读后，&lt;strong&gt;&quot;输入编码设计&quot;应作为我们任何拾取/反演网络的默认消融项&lt;/strong&gt;；②改动成本极低（两通道 + 现有 U-Net），是典型的&quot;半天可验证&quot;升级，建议列入近期实验；③对我们的台网数据，台站坐标/炮检距通道化同理可试。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ Crossref 全文摘要 + 机构；⚠️ early view 卷期待定；代码未声明；全部数字为作者自述。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;4. 磁化矢量反演的柔性正则化：岩石物理 + 结构 + 稀疏约束的统一笛卡尔表述（UBC）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：A flexible regularization for magnetic vector inversion with petrophysical, structural, and sparsity constraints&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：John M. Weis、Lindsey J. Heagy —— &lt;strong&gt;University of British Columbia&lt;/strong&gt;（arXiv HTML &lt;code&gt;Affiliation:&lt;/code&gt; 字段已核验；拟投 &lt;em&gt;Geophysics&lt;/em&gt;，arXiv comment 注明）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.36368（v1，2026-10-26，physics.geo-ph）· https://arxiv.org/abs/2610.36368&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：磁化矢量反演（MVI）能同时容纳感应 + 剩磁，但未知量三倍于标量反演、非唯一性更强。本文提出&lt;strong&gt;笛卡尔坐标下的矢量正则化统一表述&lt;/strong&gt;：①&lt;strong&gt;小项（smallness）&lt;strong&gt;同时容纳笛卡尔参考模型（由磁化率 + 定向剩磁构成）与幅值参考模型（由非定向剩磁或总磁化构成）；&lt;strong&gt;幅值参考使小项的 Hessian 不定 → 解析推导其特征分解并修正特征值&lt;/strong&gt;，使标准共轭梯度求解器仍可用；②&lt;/strong&gt;光滑项&lt;/strong&gt;同时惩罚磁化方向与幅值变化，且与笛卡尔基选择无关 → &lt;strong&gt;稀疏范数不再产生坐标对齐伪影&lt;/strong&gt;，并通过旋转梯度算子支持任意优先平滑方向。泛化既有稀疏笛卡尔表述族。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：合成反演算例（摘要范围）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️ 未验证；Heagy 组历来与 SimPEG 生态绑定，若发表可能随 SimPEG 出代码 —— 属推测，不作断言）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;传统方法&lt;/strong&gt;（正则化设计 / 数值线性代数；无 DL 组件）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：①**&quot;参考模型使 Hessian 不定 → 解析特征分解 + 特征值修正保住 CG 可用性&quot;&lt;strong&gt;是本项目最值得抄的工程细节：任何带参考模型的正则化反演（包括我们的结构先验项）都可能遇到同样的不定 Hessian 问题，这里给了闭式处理模板；②&quot;光滑项与坐标基无关 → 稀疏无伪影&quot;的表述设计，与 W43 #1（结构约束的张量/matmul 实现）同属&quot;&lt;strong&gt;把先验做成数值上干净的算子&lt;/strong&gt;&quot;路线；③&lt;/strong&gt;UBC 组信号**：Heagy 同周还有本榜 #7（UXO CNN）—— 与 W44 的 LANL 双线下注（OWL + PnP-Flow）同构，&lt;strong&gt;&quot;物理引擎侧 + 学习模型侧&quot;的机构级并行布局第二次出现&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据 + 机构 + 全文摘要；⚠️ 代码未声明；合成结果的量化增益未复核。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;5. 面波频散 + 远震/近震体波走时的统一联合反演框架（DSurfTomo + tomoDD + 远震台站对 DD）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：A Unified Joint Inversion Framework of Surface Wave Dispersion Data With Teleseismic and Local Body Wave Traveltimes: Methodology and Applications to Dense Arrays&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Yichen Pan、Ying Liu、Huajian Yao（姚华建）、Jikun Feng —— &lt;strong&gt;中国科学技术大学（精密几何测量全国重点实验室/地球与空间科学学院 + 蒙城地球物理国家野外科学观测研究站）&lt;/strong&gt;；Hongjian Fang（方洪剑）—— &lt;strong&gt;中山大学&lt;/strong&gt;（Crossref affiliation 字段已核验）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;JGR-Solid Earth&lt;/em&gt; 131(11) · https://doi.org/10.1029/2026jb034934（published 2026-10-29）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：在&lt;strong&gt;直接面波层析（DSurfTomo）+ 近震双差层析（tomoDD）&lt;strong&gt;联合框架基础上，纳入&lt;/strong&gt;远震台站对双差走时&lt;/strong&gt;，构建面波频散 + 远震体波 + 近震体波三类数据的&lt;strong&gt;统一 3D Vp/Vs 联合反演&lt;/strong&gt;：利用三类数据互补敏感性，把模型深度范围从上地壳扩展到上地幔，且&lt;strong&gt;对小型临时密集台阵同样适用&lt;/strong&gt;。验证：南加州板块边界区（与既有岩石圈尺度模型一致）→ 潍坊台阵（郯庐断裂带，小型临时密集台阵）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：南加州实测 + 潍坊密集台阵实测（郯庐断裂带）+ 合成测试&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️ 未验证；DSurfTomo/tomoDD 均有历史公开版本，属推测不作断言）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;传统方法&lt;/strong&gt;（地震层析 / 联合反演；无 DL 组件）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：①**&quot;多类数据 → 统一模型&quot;的敏感性互补设计&lt;strong&gt;是层析主线的正统升级路径：对 HPC 的直接含义是三类核（面波频散、近震 DD、远震台站对 DD）的&lt;/strong&gt;核计算与存储策略不同**，统一框架的代价主要在核管理 —— 这与我们&quot;内存而非 FLOPs 是硬约束&quot;的判据直接相关；②**&quot;小型临时密集台阵也能吃到远震数据&quot;**（潍坊/郯庐算例）对我们自有台阵数据的深度范围扩展有直接参考价值；③与 W44 #9（通海 229 站背景噪声成像）连读：&lt;strong&gt;密集台阵的传统成像线连续第二期出现且都在国内&lt;/strong&gt;，&quot;密集台阵专题&quot;的素材已可合并。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ Crossref 全文摘要 + 机构 + 卷期（131(11)）；⚠️ 代码未声明；模型一致性结论未独立复核。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;6. DAS-NanoNet：面向 DAS 边缘智能的神经架构搜索 + OmniDAS 开放基准&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Edge intelligence for distributed acoustic sensing with ultracompact neural networks&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Yuan Gao、Yu Tao、Xuzhe Zhang、Junyi Duan、Da Zhou、Xingcan Liu、Qianlin Qian、Shaomin Zhu —— &lt;strong&gt;上海交通大学（光子学与通信全国重点实验室）&lt;/strong&gt;（arXiv HTML &lt;code&gt;Affiliation:&lt;/code&gt; 字段已核验，全部作者同一机构）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.39892（v1，2026-10-29，physics.optics）· https://arxiv.org/abs/2610.39892&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：现有 AI 方案按场景/任务定制，算力需求阻碍野外受限部署。提出 &lt;strong&gt;DAS-NanoNet&lt;/strong&gt;：为不同 DAS 场景-任务对&lt;strong&gt;自动构造超轻量网络&lt;/strong&gt; —— 为 DAS 信号定制的轻量时间算子 + &lt;strong&gt;自适应神经架构搜索（NAS）&lt;/strong&gt;；覆盖分类、定位、压缩、去噪四类任务、六类代表性环境。同时发布 &lt;strong&gt;OmniDAS 开放基准：6 个场景、17,372 条原生记录、524.1 亿标量值&lt;/strong&gt; —— 号称首个覆盖多场景多任务的开放 DAS 基准。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：OmniDAS 自建基准（六场景）；六分类任务 &lt;strong&gt;99.68% 精度仅 1,391 可训练参数&lt;/strong&gt;，参数量最高减少 18,098×；部署平台推理延迟 &lt;strong&gt;&amp;lt; 9 μs&lt;/strong&gt;（作者自述）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：⚠️ &lt;strong&gt;方法代码&quot;可向通讯作者合理索取&quot;（非开源）&lt;/strong&gt;；数据集**&quot;发表后在 Zenodo 公开，DOI 已预留&quot;**（10.5281/zenodo.21992120，本期实测该 DOI 链接存在于正文，但内容未上架验证）—— 按&quot;声明将公开 ≠ 已公开&quot;惯例标未验证&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;AI/地球物理&lt;/strong&gt;（NAS 超轻量网络 + 边缘部署为核心创新）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：①&lt;strong&gt;DAS 方向连续第三期出现&lt;/strong&gt;（W43 TFXK 反演失配 → W44 semblance 质控 → 本期边缘智能 + 基准）—— &lt;strong&gt;专题合并触发条件已达成，建议增设 &lt;code&gt;DAS&lt;/code&gt; 横向标签&lt;/strong&gt;；②对我们 HPC 线的反直觉价值：&lt;strong&gt;&quot;1,391 参数 + 亚 9 μs 推理&quot;的极限压缩思路&lt;/strong&gt;说明 DAS 的近端（边缘）计算正在独立成线，未来台阵数据的&quot;边端预处理 + 中心反演&quot;分工里，我们可以把质控/事件筛查下推到边端；③OmniDAS 若如约上架，是&lt;strong&gt;首个多场景 DAS 基准&lt;/strong&gt;，可作为我们 DAS 相关实验的第三方对照数据源。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据 + 机构 + 全文摘要 + Zenodo DOI 链接实测在正文；⚠️ &lt;strong&gt;代码非开源、数据集未上架&lt;/strong&gt;；全部数字为作者自述。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;7. 全卷积网络直接从未爆弹（UXO）多分量电磁感应数据分类（绕开反演环节）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：A fully convolutional neural network to classify UXOs using multicomponent electromagnetic induction data&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Jorge Lopez-Alvis、Lindsey J. Heagy、Douglas W. Oldenburg、Stephen D. Billings、Lin-Ping Song、Wouter Deleersnyder —— &lt;strong&gt;University of British Columbia（EOAS 系）&lt;/strong&gt;（arXiv HTML &lt;code&gt;Affiliation:&lt;/code&gt; 字段已核验）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.38177（v1，2026-10-28，physics.geo-ph）· https://arxiv.org/abs/2610.38177&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：UXO 排障标准流程 = 物理反演 + 人工专家复核，成本高。本文用&lt;strong&gt;全卷积网络（分段式架构，保持输入空间维度）直接从多分量时间域 EMI 数据输出高分辨分类图&lt;/strong&gt;（直接可生成挖掘清单），&lt;strong&gt;完全绕开反演环节&lt;/strong&gt;。两级 CNN 串联：第一级检测金属异常并表征预处理后场数据中的空间相关噪声；第二级用**&quot;合成训练数据 + 注入该实测噪声&quot;&lt;strong&gt;做多类分类；对杂波（clutter）类用&lt;/strong&gt;基于物理的参数化**训练网络区分杂波与 UXO。实测验证：&lt;strong&gt;Sequim Bay 海上试验场 UltraTEMA-4 系统&lt;/strong&gt;，校准网格 21 个布设目标（检出全部 UXO、4 个杂波判对 2 个）；&lt;strong&gt;独立盲网格 35 个目标（17 UXO + 18 杂波）全部 UXO 检出并正确分类，假阳性与物理反演方法相当&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：Sequim Bay 实测（UltraTEMA-4）+ 合成训练数据（物理参数化杂波模型）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：✅ &lt;strong&gt;&lt;code&gt;github.com/jlalvis/uxo-cnn-classification&lt;/code&gt; 实测存在&lt;/strong&gt;（0★，&lt;strong&gt;license 字段为 None&lt;/strong&gt;，pushed 2026-05-16，早于论文发布）—— ⚠️ &lt;strong&gt;无许可证文件，复用条款需人工确认&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;AI/地球物理&lt;/strong&gt;（全卷积分类替代反演 + 物理参数化杂波建模为核心创新）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：①核心范式可迁移：&lt;strong&gt;&quot;学习型分类器绕开反演&quot;只适用于目标离散、类别有限的场景&lt;/strong&gt;（UXO/岩性/相），对连续场反演（FWI）不直接适用 —— 但其**&quot;合成数据 + 实测噪声注入&quot;的训练策略&lt;strong&gt;与&lt;/strong&gt;&quot;物理参数化的负类（杂波）建模&quot;**是通用的，可搬到我们任何&quot;实测数据对不上合成训练分布&quot;的场景；②检测级 + 分类级两级串联、第一级专管噪声表征，这个分工对我们做&quot;先筛后精&quot;的管线设计有参考；③与 #4 同组（UBC/Heagy），构成&quot;传统正则化 + AI 分类&quot;双线布局的另一半。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据 + 机构 + 全文摘要；✅ 代码仓库实测（存在性/pushed_at/许可缺失）；⚠️ &lt;strong&gt;无 license，商用/复用条款需人工确认&lt;/strong&gt;；盲测数字为作者自述。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;8. B 样条 DFDM 求解标量波方程的稳定性与频散分析（数值方法学的&quot;体检报告&quot;）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Stability and dispersion analysis of DFDM for the scalar wave equation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Giacomo Aloisi、Andrea Zunino、Scott Keating、Andreas Fichtner —— &lt;strong&gt;ETH Zürich 地球与行星科学系&lt;/strong&gt;（Crossref affiliation 字段已核验）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;GJI&lt;/em&gt; · https://doi.org/10.1093/gji/ggag472（published 2026-10-31，early view，&lt;strong&gt;卷期页码待定&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：对&lt;strong&gt;分布有限差分法（DFDM）&lt;strong&gt;的 B 样条实例在 1D 标量波方程上做系统数值分析：与有限差分（FD）、谱元法（SEM）对比&lt;/strong&gt;时间步长限制与精度折中&lt;/strong&gt;；引入&lt;strong&gt;成本度量&lt;/strong&gt;量化&quot;达到目标频散误差阈值所需计算量&quot;。结论：&lt;strong&gt;DFDM 稳定性界更紧（时间步更受限制），但在每波长更低采样点数下频散性能更优&lt;/strong&gt; —— 对&lt;strong&gt;内存受限应用特别有吸引力&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：1D 标量波方程数值实验（方法学论文）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️ 未验证）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;传统方法&lt;/strong&gt;（数值分析 / 波动方程离散；无 DL 组件）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：①&lt;strong&gt;历史六期首次出现&quot;纯数值方法稳定性/频散分析&quot;类条目&lt;/strong&gt; —— 这类工作不产生新方法，但&lt;strong&gt;直接决定新离散格式能不能上大规模作业&lt;/strong&gt;；②结论与我们的判据精确同频：&lt;strong&gt;&quot;稳定性换频散 + 内存友好&quot;&lt;/strong&gt; —— 在反演中要跑上万次正演，每波长采样点数的下降直接转化为网格量与内存的下降（W39 判据&quot;内存而非 FLOPs&quot;的又一次印证）；③若我们评估任何新波场离散格式（包括 DFDM 类、W44 #6 的 GSLS 型 FD），&lt;strong&gt;应把&quot;成本度量 vs 频散阈值&quot;这张图作为标准验收图&lt;/strong&gt;；DFDM 的原始文献（Fichtner 组既有工作）值得回溯一次。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ Crossref 全文摘要 + 机构；⚠️ early view 卷期待定；代码未声明；仅 1D（作者自述范围）。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;9. 专家岩性标签不提升学习效果：海洋沉积物性质预测的负结果（自监督嵌入 + 掩码 VAE）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Expert lithological labels do not improve learning when used to predict marine sediment properties&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：John M. Aiken（&lt;strong&gt;University of Oslo, Norway&lt;/strong&gt; + Expert Analytics, Oslo）、William Gilpin（&lt;strong&gt;University of Texas at Austin 物理系&lt;/strong&gt;）、Thorsten W. Becker（&lt;strong&gt;UT Austin 杰克逊学院地球物理研究所 + 地球与行星科学系&lt;/strong&gt;）（arXiv HTML 作者-机构对应已核验）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.36410（v2，v1 2026-10-26，physics.geo-ph + cs.AI）· https://arxiv.org/abs/2610.36410&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：科学钻探档案不完整（仪器采样间隔不一、取芯不全、破坏性分析不可重复）。作者在 &lt;strong&gt;LILY 大洋钻探数据库&lt;/strong&gt;上训练&lt;strong&gt;自监督嵌入模型&lt;/strong&gt;（掩码变分自编码器 + 异方差高斯解码器 + 可学习掩码 token），输入六项常规测井属性（密度、磁化率、自然伽马、RGB 反射率），覆盖 &lt;strong&gt;296 个钻孔 236,963 条观测&lt;/strong&gt;。核心负结果：&lt;strong&gt;嵌入空间对岩性的区分度与&quot;用专家岩性标签训练的变体&quot;相当；加大标签权重反而恶化重建而分类不变&lt;/strong&gt; —— 因为标签是连续测量的有损压缩，训练其上会丢弃测量中记录的成岩过程信息。嵌入还能预测训练中缺失的物理性质（未见过的钻孔上：嵌入 R² 0.20 vs 仅用深度 R² -0.02）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：LILY 大洋钻探数据库（296 孔 / 236,963 观测）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：✅ &lt;strong&gt;&lt;code&gt;github.com/mnky9800n/hmvae-geo&lt;/code&gt; 实测存在&lt;/strong&gt;（0★，&lt;strong&gt;license 字段为 None&lt;/strong&gt;，pushed 2026-10-26）—— ⚠️ &lt;strong&gt;无许可证文件，需人工确认&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;AI/地球物理&lt;/strong&gt;（自监督嵌入 + 掩码 VAE 为核心创新；负结果论文）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：①**&quot;专家标签 = 连续测量的有损压缩&quot;&lt;strong&gt;这个论证对我们有直接管理价值：组内若积累了解释层位/岩相/速度拾取标签，&lt;strong&gt;先把它们当作监督目标之前，应先验证&quot;连续测量本身能否自监督恢复等价信息&quot;&lt;/strong&gt;（本文给了现成的验证协议：嵌入区分度 vs 标签监督区分度对照）；②异方差解码器 + 可学习掩码 token 的设计，天然适配我们&quot;仪器采样间隔不一 + 部分缺失&quot;的任何多源观测融合（VSP + 地面 + DAS 混合数据同理）；③负结果论文在地球物理 AI 里仍稀缺，其&quot;标签无增益&quot;结论引用时须限定在&lt;/strong&gt;海洋沉积物 + 六项测井属性**场景，不可外推到成像标签。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据（v2）+ 逐人机构 + 全文摘要；✅ 代码仓库实测（存在性/pushed_at/许可缺失）；⚠️ &lt;strong&gt;无 license&lt;/strong&gt;；R² 数字为作者自述。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;10. 超分辨谱分析（SRSA）：Hankel-SVD 噪声子空间正交性构造 2D 超分辨谱，应用于地球自由振荡&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Super-Resolution Spectral Analysis for Signal Recognition: Theory and Application to Earth&apos;s Free Oscillations&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Zhifeng Chen（陈志峰）、Hao Ding（丁浩）—— &lt;strong&gt;武汉大学测绘学院？—— Crossref 记录为&quot;School of Earth and Space Science and Technology, Wuhan University&quot;&lt;/strong&gt;（Crossref affiliation 字段已核验；院系中文名以学校官网为准，⚠️ 未人工复核）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;GJI&lt;/em&gt; · https://doi.org/10.1093/gji/ggag466（published 2026-10-29，early view，&lt;strong&gt;卷期页码待定&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：有限长记录的经典 Fourier 谱分辨率受谱窗宽（Rayleigh 标度）限制；AR / HTLS 等非 Fourier 方法虽可超分辨，但&lt;strong&gt;依赖窄带位置与谐波数 K 的精确先验&lt;/strong&gt;且不形成直观谱。提出 &lt;strong&gt;SRSA&lt;/strong&gt;：用不同窗长 L 构造的 &lt;strong&gt;Hankel 矩阵 SVD 的多尺度噪声子空间&lt;/strong&gt;与 &lt;strong&gt;Vandermonde 矩阵的正交性&lt;/strong&gt;，构造 2D 超分辨谱 I(L, f_c)：&lt;strong&gt;对 K 的中等扰动稳健、无需各谱峰位置或真实模型阶数的精确先验&lt;/strong&gt;即可可靠识别信号，且形成可目视检查的显式谱。应用于&lt;strong&gt;地球自由振荡&lt;/strong&gt;信号识别。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：理论 + 数值仿真 + 地球自由振荡观测应用（摘要范围）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️ 未验证）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;传统方法&lt;/strong&gt;（谱估计 / 信号处理；无 DL 组件）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：①**&quot;多尺度子空间正交性 → 2D 超分辨谱&quot;**是有限时长信号频率识别的通用武器，与我们相关的三个直接落点：&lt;strong&gt;低频 FWI 数据的频谱完整性诊断&lt;/strong&gt;、&lt;strong&gt;密集台阵简正模/面波多模式分离&lt;/strong&gt;、&lt;strong&gt;DAS 长记录的频率域质控&lt;/strong&gt;；②其&quot;对模型阶数 K 稳健&quot;的卖点正好补上 AR/HTLS 类方法最致命的先验依赖 —— 若我们做过任何 Prony/AR 类谱分析，这是值得试的替代品；③与 W44 N1（QR 分解台阵相干性）同属&quot;&lt;strong&gt;用矩阵分解做高效信号筛查&lt;/strong&gt;&quot;家族，可合并观察。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ Crossref 全文摘要 + 机构；⚠️ early view 卷期待定；代码未声明；⚠️ 院系中文对应未人工复核。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;三、本期提名区（未进 Top 10，但值得记录；不计入 10 条）&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;只列&lt;strong&gt;已核实元数据&lt;/strong&gt;的条目，字段从简。排序按&quot;与我方相关性&quot;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;标题&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;载体（已核验）&lt;/th&gt;
&lt;th&gt;一句话价值&lt;/th&gt;
&lt;th&gt;验证状态&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;N1&lt;/td&gt;
&lt;td&gt;QFrFT-PQCNet: A quantum-inspired framework for seismic denoising using classically simulated parameterized unitary circuits&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;&lt;em&gt;J. Appl. Geophys.&lt;/em&gt; 106606 · https://doi.org/10.1016/j.jappgeo.2026.106606（created 2026-11-01）&lt;/td&gt;
&lt;td&gt;分数阶 Fourier 变换 + 经典模拟参数化量子线路做地震去噪；&lt;strong&gt;量子启发路线在本领域罕见&lt;/strong&gt;，值得作为方法族观察点&lt;/td&gt;
&lt;td&gt;⚠️ &lt;strong&gt;Crossref 无摘要、全部 6 位作者无机构字段 → 内容与机构均未验证&lt;/strong&gt;，如需引用取 PDF 首页&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N2&lt;/td&gt;
&lt;td&gt;Physics-constrained and uncertainty-quantified 3D probabilistic inversion of magnetic gradient tensor data&lt;/td&gt;
&lt;td&gt;未定&lt;/td&gt;
&lt;td&gt;&lt;em&gt;J. Appl. Geophys.&lt;/em&gt; 106610 · https://doi.org/10.1016/j.jappgeo.2026.106610（created 2026-10-29）&lt;/td&gt;
&lt;td&gt;磁梯度张量的物理约束 + UQ 概率反演；从标题看与 W38 以来的&quot;概率反演 + UQ&quot;主线连续，但&lt;strong&gt;无法判定其核心是贝叶斯数值法还是神经网络&lt;/strong&gt;（分类未定）&lt;/td&gt;
&lt;td&gt;⚠️ &lt;strong&gt;Crossref 无摘要、6 位作者无机构 → 内容未验证&lt;/strong&gt;；取 PDF 后补分类&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N3&lt;/td&gt;
&lt;td&gt;Alternating matrix factorization for efficient 5D seismic data reconstruction&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;&lt;em&gt;J. Appl. Geophys.&lt;/em&gt; 106607 · https://doi.org/10.1016/j.jappgeo.2026.106607（created 2026-10-28；Ouyang Zhiyuan / Wang Benfeng，机构未给）&lt;/td&gt;
&lt;td&gt;交替矩阵分解做高效 5D 地震重建 —— 与主榜 #1 同属&quot;高效数值求解&quot;主题，5D 插值是我们处理管线的直接上游环节&lt;/td&gt;
&lt;td&gt;⚠️ &lt;strong&gt;Crossref 无摘要、机构缺失 → 内容未验证&lt;/strong&gt;；取 PDF 后补&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N4&lt;/td&gt;
&lt;td&gt;3D Magnetization Inversion With Significant Remanence at Low Latitudes Using Modified Normalized Source Strength (MNSS)&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;&lt;em&gt;Geophys. Prospect.&lt;/em&gt; 74(9) · https://doi.org/10.1111/1365-2478.70281（published 2026-10-30；Ming Hu，江西财经大学）&lt;/td&gt;
&lt;td&gt;低磁纬强剩磁场景 NSS 不稳定 → 修正归一化源强度（MNSS）+ 近似正演算子 + 重加权正则化共轭梯度（RRCG）；实测数据上恢复源结构走向优于总场幅值 Ta 解释&lt;/td&gt;
&lt;td&gt;✅ Crossref 全文摘要 + 机构；⚠️ 代码未声明&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N5&lt;/td&gt;
&lt;td&gt;Diffraction–Reflection Jointly Constrained Multi-Scale Inversion Framework for Dielectric Permittivity Estimation on Chang&apos;E-4 LPR Data&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;&lt;em&gt;GJI&lt;/em&gt; · https://doi.org/10.1093/gji/ggag465（published 2026-10-28；Shaoyue Zhang / Shengbo Chen，吉林大学；Stewart Greenhalgh，ETH Zürich；Xingguo Huang，吉林大学）&lt;/td&gt;
&lt;td&gt;绕射（MVA 定背景速度）+ 反射（混合相位子波校正 + 稀疏反射率）联合约束的多尺度介电常数反演，应用于&lt;strong&gt;嫦娥四号月基穿透雷达&lt;/strong&gt;实测 —— 行星际 GPR 的带宽限制处理有通用参考价值&lt;/td&gt;
&lt;td&gt;✅ Crossref 全文摘要 + 机构；⚠️ 代码未声明&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N6&lt;/td&gt;
&lt;td&gt;Research Note: Enhancing the Convergent POCS Method Through Intermediate Value Correction (CP+)&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;&lt;em&gt;Geophys. Prospect.&lt;/em&gt; 74(9) · https://doi.org/10.1111/1365-2478.70272（published 2026-10-27；Yimin Sun，中石化胜利油田；Miaoyang Yuan，SLB/CHG Digital）&lt;/td&gt;
&lt;td&gt;收敛 POCS 的振铃噪声根因是多解性 → 外环中间值主动校正引导投影轨迹；短文（Research Note），工程上即插即用&lt;/td&gt;
&lt;td&gt;✅ Crossref 全文摘要 + 机构；⚠️ 代码未声明&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N4b&lt;/td&gt;
&lt;td&gt;4D sensitivity kernels for infrasound atmospheric propagation（时变观测算子的 4D 灵敏度核 + 数据同化）&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;arXiv 2610.36810（v1，2026-10-27，physics.ao-ph + physics.geo-ph；Raphael F. Garcia 等）&lt;/td&gt;
&lt;td&gt;声波传播期间大气参数变化 → 需要时变观测算子；伴随法计算 4D 灵敏度核，证明&lt;strong&gt;只有窗口长于传播时长的变分/集合 DA 方法可用&lt;/strong&gt; —— 跨域（大气声学）但&quot;伴随 + 时变算子 + DA&quot;方法论与我们同源&lt;/td&gt;
&lt;td&gt;✅ arXiv 元数据 + 摘要；⚠️ 代码未声明&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N8&lt;/td&gt;
&lt;td&gt;3-D Plate Interaction Beneath the Active Taiwan Orogen Revealed by Source-Side Seismic Tomography&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;&lt;em&gt;JGR-Solid Earth&lt;/em&gt; 131(11) · https://doi.org/10.1029/2026jb034301（published 2026-10-31）&lt;/td&gt;
&lt;td&gt;震源侧层析揭示台湾造山带 3D 板块相互作用 —— 应用类条目，作为国内周边构造成像案例记录&lt;/td&gt;
&lt;td&gt;✅ Crossref 元数据 + 卷期；⚠️ 摘要未逐条读取，内容以标题与载体为准&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;四、本期全量条目索引&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;标题（简）&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;载体 / ID&lt;/th&gt;
&lt;th&gt;日期（以载体为准）&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;白噪自适应 Tikhonov-TV 叠后反演&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;arXiv 2610.40433&lt;/td&gt;
&lt;td&gt;2026-10-29&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;低频结构引导 3D 条件扩散重建&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1111/1365-2478.70280&lt;/td&gt;
&lt;td&gt;2026-10-30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;显式坐标编码微地震初至拾取&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1093/gji/ggag469&lt;/td&gt;
&lt;td&gt;2026-10-30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;MVI 柔性正则化（UBC）&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;arXiv 2610.36368&lt;/td&gt;
&lt;td&gt;2026-10-26&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;面波+远震+近震统一联合反演&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;10.1029/2026jb034934&lt;/td&gt;
&lt;td&gt;2026-10-29&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;DAS-NanoNet 边缘智能 + OmniDAS 基准&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.39892&lt;/td&gt;
&lt;td&gt;2026-10-29&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;UXO 全卷积分类（绕开反演）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.38177&lt;/td&gt;
&lt;td&gt;2026-10-28&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;DFDM 稳定性与频散分析（ETH）&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;10.1093/gji/ggag472&lt;/td&gt;
&lt;td&gt;2026-10-31&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;专家岩性标签不提升学习（负结果）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.36410（v2）&lt;/td&gt;
&lt;td&gt;2026-10-26&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;SRSA 超分辨谱分析 + 自由振荡&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;10.1093/gji/ggag466&lt;/td&gt;
&lt;td&gt;2026-10-29&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N1&lt;/td&gt;
&lt;td&gt;QFrFT-PQCNet 量子启发去噪&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1016/j.jappgeo.2026.106606&lt;/td&gt;
&lt;td&gt;2026-11-01（created）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N2&lt;/td&gt;
&lt;td&gt;磁梯度张量 UQ 概率反演&lt;/td&gt;
&lt;td&gt;未定&lt;/td&gt;
&lt;td&gt;10.1016/j.jappgeo.2026.106610&lt;/td&gt;
&lt;td&gt;2026-10-29（created）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N3&lt;/td&gt;
&lt;td&gt;交替矩阵分解 5D 重建&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;10.1016/j.jappgeo.2026.106607&lt;/td&gt;
&lt;td&gt;2026-10-28（created）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N4&lt;/td&gt;
&lt;td&gt;MNSS 低纬剩磁 3D 磁化反演&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;10.1111/1365-2478.70281&lt;/td&gt;
&lt;td&gt;2026-10-30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N5&lt;/td&gt;
&lt;td&gt;嫦娥四号 LPR 绕射-反射联合反演&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;10.1093/gji/ggag465&lt;/td&gt;
&lt;td&gt;2026-10-28&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N6&lt;/td&gt;
&lt;td&gt;CP+ 收敛 POCS 中间值校正&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;10.1111/1365-2478.70272&lt;/td&gt;
&lt;td&gt;2026-10-27&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N4b&lt;/td&gt;
&lt;td&gt;次声 4D 灵敏度核 + 数据同化&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;arXiv 2610.36810&lt;/td&gt;
&lt;td&gt;2026-10-27&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N8&lt;/td&gt;
&lt;td&gt;台湾造山带震源侧层析&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;10.1029/2026jb034301&lt;/td&gt;
&lt;td&gt;2026-10-31&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;分布&lt;/strong&gt;：Top 10 = &lt;strong&gt;AI 5 / 传统 5&lt;/strong&gt;；含提名区共 18 条 = &lt;strong&gt;AI 7 / 传统 10 / 未定 1&lt;/strong&gt;。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;五、与历史总结的对比：重复 / 升级 / 新增&lt;/h2&gt;
&lt;h3&gt;5.A AI/地球物理线&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;（1）重复（同题或同方法的再次出现）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;与 2 份历史文件（W43/W44）逐条比对（DOI / arXiv ID / 标题关键词三重检索），&lt;strong&gt;本期 AI 线 5 条主榜条目均未出现&lt;/strong&gt;：&lt;strong&gt;无严格意义上的重复条目&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;方向级重复 2 处：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;生成先验家族连续第七期出现&lt;/strong&gt;（W38 扩散 → W39 扩散 VMB → W41 扩散+算子 → W43 ASVGD/escaping prior → W44 流匹配代际切换 → 本期 &lt;strong&gt;#2 低频结构引导 3D 条件扩散重建&lt;/strong&gt;）：本期的新维度是&lt;strong&gt;目标从&quot;模型生成&quot;下沉到&quot;数据重建&quot;处理环节&lt;/strong&gt;，且条件化方式为&quot;最可靠的粗尺度（低频）信息做条件&quot;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DAS 方向连续第三期出现&lt;/strong&gt;（W43 TFXK 反演失配 → W44 semblance 质控 → 本期 &lt;strong&gt;#6 DAS-NanoNet 边缘智能 + OmniDAS 基准&lt;/strong&gt;）：三个条目分别占据&quot;反演-质控-边缘计算&quot;三个环节，&lt;strong&gt;专题合并触发条件（第三条同类）已达成&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;（2）升级（同一方向的实质性推进）&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;方向&lt;/th&gt;
&lt;th&gt;历史状态&lt;/th&gt;
&lt;th&gt;本期升级&lt;/th&gt;
&lt;th&gt;升级的实质&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;成都理工-祖绍环/李超组的生成模型谱系&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;W43 #2（ASVGD-FWI，UT Austin，Chao Li 一作）；W44 #5（Mean Flows 频域波场一步生成，成都理工，祖绍环）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;#2（70280，成都理工，两人均在合作者列表；⚠️ W43 的 Chao Li 与本期是否同一人未验证）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;同一（疑似同一）作者群在&lt;strong&gt;扩散正则 → 流匹配 → 条件扩散重建&lt;/strong&gt;三条生成路线上连续产出，且目标域从&quot;速度模型/波场&quot;扩展到&quot;数据体重建&quot; —— &lt;strong&gt;&quot;生成先验全域布局&quot;的个案证据&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;显式输入编码的跨任务验证&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;W44 #7（FED-FWI：Fourier 特征映射丰富 NTK 谱，FWI 场景）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;#3（ggag469：显式 X/Y 坐标通道，微地震拾取场景，&quot;以 ~0.015% 参数代价打破平移不变性&quot;）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;同一思想（给网络显式坐标/频率信息）在拾取任务上独立复现成功&lt;/strong&gt; —— 输入编码设计从&quot;FWI 专用技巧&quot;升格为&quot;跨任务通用设计原则&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&quot;AI 只给点估计&quot;的旧病&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;W44 观察：概率/集合产出成为 AI 条目标配&lt;/td&gt;
&lt;td&gt;**#9（专家标签负结果）**延续了&quot;先验证再监督&quot;的反思；但本期 5 条 AI 主榜中 &lt;strong&gt;3 条（#2/#3/#7）无不确定度产出&lt;/strong&gt;，与上期&quot;配标&quot;趋势有回落&lt;/td&gt;
&lt;td&gt;上期&quot;AI 条目必带 UQ&quot;的判断&lt;strong&gt;本期未复现&lt;/strong&gt;，需继续观察是否为窗口偏短的偶然现象&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;（3）新增方向&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;边缘智能 + NAS 进入 DAS&lt;/strong&gt;（#6）：历史条目的 DAS 均为反演/质控侧，&lt;strong&gt;&quot;超轻量网络 + 边缘部署 + 开放基准&quot;为首次&lt;/strong&gt;；OmniDAS 若上架将是首个多场景 DAS 开放基准。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;负结果方法论&lt;/strong&gt;（#9）：历史六期首次收录&quot;标签无增益&quot;类负结果论文及其验证协议。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&quot;绕开反演的学习型分类&quot;&lt;/strong&gt;（#7）：历史 AI 条目均在&quot;辅助/加速/替代正演&quot;位置，&lt;strong&gt;&quot;完全跳过反演环节直接出决策产品&quot;为首次&lt;/strong&gt;（限定于离散目标场景）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5.B 传统方法线&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;（1）重复&lt;/strong&gt;：无严格重复。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;（2）升级&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;方向&lt;/th&gt;
&lt;th&gt;历史状态&lt;/th&gt;
&lt;th&gt;本期升级&lt;/th&gt;
&lt;th&gt;升级的实质&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Gholami 组（波兰科学院）反演方法学谱系&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;W44 #2（dual RTM：对偶空间 + 数据空间 Hessian 离线装配）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;#1（2610.40433：各向异性 Tikhonov-TV 分解 + 白噪自动定权 + Sylvester/FFT 谱域快速解）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;同组第二篇，问题从多次散射成像换到叠后阻抗，但**&quot;高效求解 + 参数自动选择&quot;的方法论签名一致** —— 该组已形成可识别的谱系，建议作为固定跟踪对象&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&quot;把先验做成数值上干净的算子&quot;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;W43 #1（结构约束的多维张量/matmul 实现）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;#4（MVI 柔性正则化：幅值参考 Hessian 不定 → 解析特征分解修正保 CG）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;从&quot;结构先验的批量实现&quot;到&quot;参考模型先验的数值可解性保障&quot;，&lt;strong&gt;同一主题的数值层面深化&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;密集台阵传统成像&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;W44 #9（通海 229 站背景噪声成像，断裂带判读）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;#5（USTC 面波+远震+近震统一联合反演，南加州 + 潍坊/郯庐密集台阵）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;从&quot;单类数据直接 3D 反演&quot;升级为**&quot;三类数据统一框架 + 小台阵吃到远震深度&quot;**；连续第二期出现且均为国内团队&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;（3）新增方向&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;纯数值方法学&quot;体检&quot;条目&lt;/strong&gt;（#8 DFDM 稳定性/频散分析）：历史六期首次收录以&quot;分析既有离散格式性质&quot;为主贡献的论文；其&quot;成本度量 vs 频散阈值 + 内存友好&quot;结论直接服务 HPC 选型。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;超分辨谱分析&lt;/strong&gt;（#10 SRSA）：谱估计类在历史条目中仅以&quot;N1 QR 相干性&quot;出现过信号筛查侧；&lt;strong&gt;显式超分辨谱构造 + 自由振荡应用为首次&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;行星 GPR 反演&lt;/strong&gt;（N5 嫦娥四号 LPR）：历史首次出现月基雷达数据反演条目（跨域记录）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5.C 交叉观察（本期最重要的两个信号）&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;信号一：机构级&quot;双线下注&quot;第二次出现。&lt;/strong&gt; W44 的 LANL（OWL 传统引擎 + PnP-Flow 生成先验）之后，本期 &lt;strong&gt;UBC（Heagy/Oldenburg）同周贡献 #4（传统 MVI 正则化）与 #7（AI UXO 分类）&lt;/strong&gt;。两家机构一北一美、一国家实验室一大学，但布局模式相同：&lt;strong&gt;在维持物理引擎/正则化方法学产出的同时，并行布局学习模型侧&lt;/strong&gt;。加上疑似成都理工组的跨三路线产出（见 5.A 升级表），&lt;strong&gt;&quot;传统侧与 AI 侧将在同一批团队内汇合&quot;的判断已获得第三个机构级证据&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;信号二：&quot;自适应参数选择&quot;成为两条线的公共主题。&lt;/strong&gt; 传统线 #1（白噪原理自动定正则权）、#4（特征值修正保 CG 可用）、#8（成本度量量化精度-步长折中）与 AI 线 #6（NAS 自动架构搜索）、#2（低频条件替代端到端盲生成）表面上分属两类，&lt;strong&gt;共同点是把&quot;超参选择&quot;从人工经验移入算法闭环&lt;/strong&gt;。这与 W43 观察（&quot;把能确定性判定的移出神经网络自由裁量&quot;）互补：&lt;strong&gt;能自动定的自动定，能确定性校验的确定性校验 —— 两条线在工程哲学上正在收敛。&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;六、本期趋势总结&lt;/h2&gt;
&lt;h3&gt;6.A AI/地球物理线&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;生成先验家族进入&quot;条件化下沉&quot;阶段&lt;/strong&gt;：目标从速度建模/波场生成下沉到数据重建（#2），条件化方式从&quot;标签/井约束&quot;扩展为&quot;低频粗尺度结构条件&quot;。&lt;strong&gt;&quot;先用传统手段把最可靠的信息提取出来做条件，再让生成模型补细节&quot;正在成为家族内的标准接法。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;输入编码设计升格为跨任务原则&lt;/strong&gt;（#3 vs W44 #7）：显式坐标/频率信息以近零参数代价带来精度跳升，&lt;strong&gt;&quot;编码设计消融&quot;应进入任何网络的默认实验清单&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;负结果论文出现&lt;/strong&gt;（#9）：专家标签在连续测量自监督可恢复时不带来增益 —— 地球物理 AI 开始出现&quot;先验证监督信号本身价值&quot;的方法论自觉。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UQ 配标回落&lt;/strong&gt;：本期 AI 主榜 5 条中 3 条无不确定度产出，上期&quot;AI 条目必带 UQ&quot;的趋势未延续（窗口偏短，待下期确认）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;6.B 传统方法线&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&quot;自适应正则化 + 高效求解&quot;三连&lt;/strong&gt;（#1/#4/#8，来自三个互不相关的团队）：白噪自动定权、Hessian 特征值修正、成本度量化的稳定性-频散折中 —— &lt;strong&gt;传统反演的主战场正在从&quot;新物理&quot;转向&quot;把已有物理做得更省更稳更自动&quot;&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;联合反演走向&quot;多类数据统一框架&quot;&lt;/strong&gt;（#5）：面波 + 近震 + 远震统一到一套 3D Vp/Vs，且面向小型临时密集台阵 —— &lt;strong&gt;敏感性互补的框架化整合是层析主线的当前形态&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数值方法学&quot;体检&quot;成为独立产出&lt;/strong&gt;（#8）：对离散格式做系统性稳定性/频散/成本分析本身就是论文 —— &lt;strong&gt;HPC 选型可以直接消费这类产出&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;谱估计/相干性分析家族扩员&lt;/strong&gt;（#10 + N6）：有限时长信号的频率识别与数据重建的收敛性修正，传统信号处理仍在持续产出即插即用件。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;6.C 一句话总结&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;AI 线把生成先验从&quot;造模型&quot;下沉到&quot;补数据&quot;、把坐标信息直接喂进网络；传统线在批量生产&quot;更省、更稳、更自动&quot;的正则化与求解器；两线共同的题目只剩一个 —— 让算法自己选参数，让确定性工具守验收关口。&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;七、对 &lt;code&gt;{{project}}&lt;/code&gt;（AI + DL + HPC + 地震数据处理 + FWI）的行动建议&lt;/h2&gt;
&lt;h3&gt;A. 立即可做（本周内，零/低风险）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;【半天级实验】#3 的坐标通道消融&lt;/strong&gt;：在我们现有的任一 U-Net 拾取/分割网络上，给输入拼接 X/Y 坐标两通道，对照作者口径（优秀率、误差）看是否复现收益。改动近零参数，风险最低。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clone 两个已验证仓库&lt;/strong&gt;：&lt;code&gt;mnky9800n/hmvae-geo&lt;/code&gt;（#9 自监督嵌入，先读 README 与数据管线，注意&lt;strong&gt;无 license&lt;/strong&gt;）与 &lt;code&gt;jlalvis/uxo-cnn-classification&lt;/code&gt;（#7，同样&lt;strong&gt;无 license&lt;/strong&gt;）。两者均为 0★ 且无许可证，&lt;strong&gt;clone 使用没问题，对外分发需人工确认条款&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;把 #9 的&quot;标签价值验证协议&quot;写进组内数据管理规范&lt;/strong&gt;：任何专家标签（层位/岩相/拾取）在进入监督训练前，先跑&quot;嵌入区分度 vs 标签监督区分度&quot;对照。&lt;/li&gt;
&lt;li&gt;交叉核对历史挂账：SPBench 项目页、GeoFWI3D 代码地址（连续三期未推进）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;B. 需要评估（1–4 周，先做可行性判断）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;#1 的白噪自动定权&lt;/strong&gt;：评估把&quot;残差白噪原理选正则权&quot;接入我们 FWI/反演流程的先验权重（含 W43 ASVGD 的扩散先验强度）自动整定 —— 若可行，可消掉一组人工扫参。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;#4 的&quot;Hessian 不定 → 特征分解修正&quot;&lt;/strong&gt;：检查我们带参考模型的正则项是否曾出现 CG 收敛异常；若有，按本文模板做闭式修正。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;#8 的&quot;成本度量 vs 频散阈值&quot;验收图&lt;/strong&gt;：作为我们评估任何新波场离散格式（含 DFDM 类、GSLS 型 FD）的标准图件；DFDM 原始文献回溯一次。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;#2 的低频条件构造器&lt;/strong&gt;：其&quot;结构张量倾角 + 事件导向插值 + 可靠性融合&quot;链条可独立于扩散模型复用 —— 评估作为我们生成式任务（FWI 先验、重建）条件输入的标准构造器。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OmniDAS 基准&lt;/strong&gt;（#6）：设置月度复查，待 Zenodo 上架后评估是否纳入 DAS 实验对照数据。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;C. 仅记录（暂不投入）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;#5（USTC 统一联合反演）—— 层析非主战场，记录其&quot;三类核的存储/管理差异&quot;结论供 HPC 参考。&lt;/li&gt;
&lt;li&gt;#10（SRSA）—— 记录方法与适用条件；等我们遇到有限时长谱识别需求（如低频完整性诊断）再回看。&lt;/li&gt;
&lt;li&gt;N4b（次声 4D 核 + DA）、N5（嫦娥四号 LPR）—— 跨域记录。&lt;/li&gt;
&lt;li&gt;N1/N2/N3（无摘要无机构的三条 JAG 条目）—— 待取 PDF 后再定去留。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;D. HPC 侧的具体提醒&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;#8 的结论直接可用&lt;/strong&gt;：DFDM &quot;稳定性界更紧但低 PPW 频散更优、内存友好&quot; —— 若我们实验内存吃紧（对反演几乎是常态），DFDM 类格式值得进对比表；但&lt;strong&gt;1D 结果不可直接外推 2D/3D&lt;/strong&gt;，作者自述范围就是 1D。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;#6 的亚 9 μs 推理与 1,391 参数为作者自述&lt;/strong&gt;（消费级边缘硬件），与我们集群卡无关，但其&quot;边端预处理 + 中心反演&quot;分工值得在台阵系统设计时预留接口。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;开源栈无更新&lt;/strong&gt;（本期实测）：Devito 4.8.23 / ObsPy 1.5.1 / SeisBench 0.12.6（PyPI）；下次复查 2026-11-09。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;保持&quot;内存而非 FLOPs&quot;判据&lt;/strong&gt;（延续 W39–W44）：#8（低 PPW 内存友好）是本期唯一直接服务该判据的条目。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;八、未解决项 / 需人工确认&lt;/h2&gt;
&lt;h3&gt;8.1 本期新增（按优先级）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;三个历史 404 仓库月度复查（本期执行）&lt;/strong&gt;：&lt;code&gt;hu567/DiffSpecMatch&lt;/code&gt;、&lt;code&gt;Lipeng-Lai/MeanFlow4Helmholtz&lt;/code&gt;、&lt;code&gt;eagleray2020/HypoNet_Nankai_DeeperPINN_PS&lt;/code&gt; —— &lt;strong&gt;GitHub API 实测仍全部 404&lt;/strong&gt;，继续挂账至下月复查。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;本期两条&quot;无 license 仓库&quot;&lt;/strong&gt;（#7 &lt;code&gt;jlalvis/uxo-cnn-classification&lt;/code&gt;、#9 &lt;code&gt;mnky9800n/hmvae-geo&lt;/code&gt;）：GitHub license 字段均为 None，&lt;strong&gt;复用/分发条款需人工读仓库确认&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;#6 DAS-NanoNet 的 Zenodo 数据集&lt;/strong&gt;（DOI 10.5281/zenodo.21992120 为&quot;发表后公开&quot;预留）：本期未上架验证，&lt;strong&gt;按&quot;声明将公开 ≠ 已公开&quot;处理&lt;/strong&gt;，列入月度复查。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;三条 Elsevier 条目无摘要无机构&lt;/strong&gt;（N1 106606、N2 106610、N3 106607）：&lt;strong&gt;内容、机构、甚至 AI/传统分类均未验证&lt;/strong&gt;，如需引用取 PDF 首页。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;early view 卷期挂账&lt;/strong&gt;（本期新增 3 条）：&lt;code&gt;ggag469&lt;/code&gt;、&lt;code&gt;ggag472&lt;/code&gt;、&lt;code&gt;ggag466&lt;/code&gt;；&lt;strong&gt;上期挂账复查（本期实测 Crossref）&lt;/strong&gt;：&lt;code&gt;ggag450&lt;/code&gt;、&lt;code&gt;ggag451&lt;/code&gt;、&lt;code&gt;geo-2026-1864&lt;/code&gt; 仍未见卷期分配记录（本期未逐一复查，因上期挂账条目未进本期候选池 —— &lt;strong&gt;需人工或下期补查&lt;/strong&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;#10 的作者院系中文对应&lt;/strong&gt;：Crossref 记录 &quot;School of Earth and Space Science and Technology, Wuhan University&quot;，院系中文名未人工复核。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;W40 缺档&lt;/strong&gt;：连续第四期挂账，仍未决定是否补做。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;8.2 跨期悬置（延续上期，本期未能推进）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;SPBench 项目页与 GeoFWI3D 代码地址：连续第三期未复查。&lt;/li&gt;
&lt;li&gt;去混采专题触发条件：本期无去混采条目，计数器保持 0。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增专题&lt;/strong&gt;：&lt;strong&gt;DAS 方向第三条已出现（W43 反演 → W44 质控 → 本期边缘智能），建议增设 &lt;code&gt;DAS&lt;/code&gt; 横向标签并合并专题&lt;/strong&gt;（待人工确认后执行）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;8.3 本期口径层面的观察（无新教训，两条旧经验再验证）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&quot;声明将公开 ≠ 已公开&quot;&lt;/strong&gt;：本期 #6（Zenodo 预留 DOI）再次适用，六期累计四起（含三个 404 仓库 + 本条）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Elsevier 系（JAG/Crossref）摘要与机构缺失是系统性现象&lt;/strong&gt;：本期 3 条 JAG 全部无摘要无机构，与 W43 N4/W44 N5/N7 一致 —— &lt;strong&gt;Elsevier 条目默认&quot;取 PDF 后才能验证内容&quot;&lt;/strong&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;8.4 需人工确认的性能数字（均为作者自述，本文件未独立复核）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;#3 坐标编码：最小损失 −54%、参数 +0.015%、优秀率 73.06%→92.24%、误差 9.51→3.36 ms。&lt;/li&gt;
&lt;li&gt;#6 DAS-NanoNet：六分类 99.68% / 1,391 参数、参数量最高减少 18,098×、推理延迟 &amp;lt; 9 μs。&lt;/li&gt;
&lt;li&gt;#7 UXO CNN：盲网格 35 目标全部 UXO 检出并正确分类、假阳性与物理反演相当。&lt;/li&gt;
&lt;li&gt;#9 标签负结果：held-out 钻孔嵌入 R² 0.20 vs 仅深度 -0.02。&lt;/li&gt;
&lt;li&gt;#1/#2/#4/#5/#8/#10：摘要为定性表述或未给出量化指标。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;九、检索说明&lt;/h2&gt;
&lt;h3&gt;9.1 检索路径（全部可复现）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;arXiv 结构化检索&lt;/strong&gt;：&lt;code&gt;export.arxiv.org/api/query&lt;/code&gt;（https），&lt;code&gt;cat:physics.geo-ph&lt;/code&gt; 按 submittedDate 取最新 150 条，过滤窗口（2026-10-26 起）得 &lt;strong&gt;12 条&lt;/strong&gt;；另跑 6 组关键词查询（seismic+FWI / seismic+diffusion / seismic+neural operator / FWI+cs.LG / seismology+deep learning / DAS）合并去重，窗口内命中 &lt;strong&gt;1 条跨类补充&lt;/strong&gt;（2610.39892，physics.optics）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;arXiv 全文核验&lt;/strong&gt;：&lt;code&gt;arxiv.org/html/{id}&lt;/code&gt; 抓正文，核实 &lt;strong&gt;Code/Data Availability 章节、作者机构（&lt;code&gt;Affiliation:&lt;/code&gt; 字段与 ltx_authors 块）、基准 DOI 链接&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Crossref 期刊扫描&lt;/strong&gt;：&lt;code&gt;api.crossref.org/journals/{ISSN}/works?filter=from-created-date:2026-10-26,until-created-date:2026-11-02&lt;/code&gt;，扫描 &lt;strong&gt;11 本期刊&lt;/strong&gt;（Geophysics 0016-8033、GJI 0956-540X、Geophys. Prospect. 1365-2478、J. Appl. Geophys. 0926-9851、JGR-Solid Earth 2169-9313、EPSL 0012-821X、J. Geodynamics 0264-3707、Surv. Geophys. 0169-3298、Comput. Geosci. 0098-3004、Interpretation 1070-485X 等）；候选逐条 &lt;code&gt;works/{DOI}&lt;/code&gt; 取作者/机构/卷期/摘要。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码仓库核验&lt;/strong&gt;：&lt;code&gt;api.github.com/repos/{owner}/{repo}&lt;/code&gt; 取存在性 / stars / license / pushed_at；404 复查用 HTTP 状态码实测。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;开源栈版本核验&lt;/strong&gt;：&lt;strong&gt;PyPI JSON API 单源&lt;/strong&gt;（SeisBench 口径按 8.3 惯例以 PyPI 为准；本期 GitHub 侧无新 release 记录需求）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;历史去重&lt;/strong&gt;：对 2 份历史文件（W43/W44）做 &lt;strong&gt;DOI / arXiv ID / 标题关键词&lt;/strong&gt; 三重字符串检索，&lt;strong&gt;全部候选零命中，判为首次收录&lt;/strong&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;9.2 两类条数分布&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;范围&lt;/th&gt;
&lt;th&gt;AI/地球物理&lt;/th&gt;
&lt;th&gt;传统方法&lt;/th&gt;
&lt;th&gt;未定&lt;/th&gt;
&lt;th&gt;合计&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;主榜 Top 10（实际）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;5&lt;/strong&gt;（#2/#3/#6/#7/#9）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;5&lt;/strong&gt;（#1/#4/#5/#8/#10）&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;提名区&lt;/td&gt;
&lt;td&gt;1（N1）&lt;/td&gt;
&lt;td&gt;6（N3/N4/N5/N6/N4b/N8）&lt;/td&gt;
&lt;td&gt;1（N2）&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;总计&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;11&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;配比达成情况&lt;/strong&gt;：主榜 &lt;strong&gt;5:5&lt;/strong&gt;（目标 6:4 未严格达成）。AI 5 条落在建议区间（5–7）下限，传统 5 条落在建议区间（3–5）上限，&lt;strong&gt;两类均在用户给定的浮动区间内&lt;/strong&gt;，故未做硬替换。&lt;/p&gt;
&lt;h3&gt;9.3 历史重复 / 升级 / 新增（速览）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;线&lt;/th&gt;
&lt;th&gt;严格重复&lt;/th&gt;
&lt;th&gt;方向级重复&lt;/th&gt;
&lt;th&gt;升级&lt;/th&gt;
&lt;th&gt;新增方向&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AI/地球物理&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0 条&lt;/td&gt;
&lt;td&gt;2（生成先验家族连续第七期；DAS 连续第三期 → 触发专题）&lt;/td&gt;
&lt;td&gt;3 项（成都理工组三路线布局；显式坐标编码跨任务复现；标签价值验证方法论）&lt;/td&gt;
&lt;td&gt;3 项（DAS 边缘智能 + 开放基准；负结果论文；绕开反演的学习型分类）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;传统方法&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0 条&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;3 项（Gholami 组谱系第二篇；先验算子的数值可解性深化；密集台阵联合反演框架化）&lt;/td&gt;
&lt;td&gt;3 项（数值方法学体检条目；超分辨谱分析；行星 GPR 跨域记录）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;9.4 条数不足或偏差的原因说明&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;窗口尾部缺口（客观）&lt;/strong&gt;：arXiv 最新 geo-ph 提交仅到 &lt;strong&gt;2026-10-29&lt;/strong&gt;（10-30/10-31/11-01 的提交按公告排期将于 11-02 晚及之后放出）—— 本期实际可比窗口约为 6 天而非 8 天。这是&lt;strong&gt;检索时点（周一上午）的固有滞后&lt;/strong&gt;，非检索遗漏。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 侧偏薄&lt;/strong&gt;：窗口内 arXiv geo-ph 仅 12 条 + 跨类 1 条，为六期以来最少；AI 可验证候选 6 条（主榜用 5 + 提名 1），&lt;strong&gt;唯一可升入主榜的 QFrFT-PQCNet（N1）无摘要、无机构，内容未验证 —— 为守住&quot;不凑数&quot;原则不升入&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;传统侧偏强&lt;/strong&gt;：期刊侧（GJI/JP/JGR-SE）10-27~10-31 集中上线，传统可验证候选 11 条（主榜 5 + 提名 6）。&lt;strong&gt;无凑数；传统侧超出配比 1 条（5 vs 4）属&quot;排序诚实&quot;的结果&lt;/strong&gt;：#4（MVI 正则化）与 #5（联合反演）分别承载&quot;Hessian 数值可解性模板&quot;与&quot;密集台阵框架化&quot;两个独立价值点，删除任一条都损失信息。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;替换方案（若需严格 6:4）&lt;/strong&gt;：可将 N1（QFrFT-PQCNet，⚠️ 内容未验证）顶替 #10（SRSA）—— &lt;strong&gt;不建议&lt;/strong&gt;：以未验证条目替换已验证条目违反诚实性原则；或将 #10 移入提名区、主榜保持 9 条 —— 由用户拍板。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跳过的窗口内条目&lt;/strong&gt;（相关性弱，未收录）：2610.39393（Kumamoto 地震起始预测，与本口径弱相关）、2610.39376（月球岩浆浮力模拟）、2610.38921（流体驱动摩擦破裂，水力压裂物理）、2610.38047（航空磁异常导航匹配）、2610.36827（可微作物模拟，非地球物理）、2610.36775（震源失活因子短文）、2610.36368 之外的 UBC 条目已收录、Geophysics 91(6) 期次目录页、GJI ggag439/443/422/464/468/460（古地磁/构造/灾害方向，与本口径弱相关）、EPSL 全部（岩石学/地球化学方向）、Comput. Geosci. 其余（软件工程类，INTEGRATE 概率反演包因与 N2 同主题且信息更少未单列）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;9.5 诚实性声明&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;所有链接、作者、机构、日期、DOI、卷期、star 数、推送时间、HTTP 状态码，均来自 9.1 所述 API / HTML / 实测；凡未能核实的字段&lt;strong&gt;一律标注&quot;未验证&quot;并给出获取路径&lt;/strong&gt;，未做任何推断或补齐。&lt;/li&gt;
&lt;li&gt;N1/N2/N3 三条 &lt;strong&gt;内容未验证&lt;/strong&gt;（Crossref 无摘要、Elsevier 未提供机构），已在条目内明确标注；N2 的 AI/传统分类&lt;strong&gt;因无法读取方法而未定&lt;/strong&gt;，未强行归类。&lt;/li&gt;
&lt;li&gt;8.4 所列性能数字&lt;strong&gt;全部为作者自述&lt;/strong&gt;，本文件未独立复核任何数值结果。&lt;/li&gt;
&lt;li&gt;#2 中&quot;Chao Li 与 W43 #2 一作是否同一人&quot;、#5 中 DSurfTomo/tomoDD 历史公开版本情况，均为&lt;strong&gt;未验证的观察性提示&lt;/strong&gt;，已在正文注明。&lt;/li&gt;
&lt;li&gt;本文件生成过程&lt;strong&gt;仅做只读检索与单文件写入&lt;/strong&gt;；未提交任何作业、未删除或覆盖任何既有文件、未修改任何模型或数据。涉及的操作建议（clone 仓库、坐标通道消融、正则权接入）&lt;strong&gt;均只给方向，待人工确认后再执行&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>食伴 (dinner)｜私有的小册子</title><link>https://tuoyuangui.github.io/website/posts/typora/%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91/%E9%A3%9F%E4%BC%B4/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91/%E9%A3%9F%E4%BC%B4/</guid><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;hr /&gt;
&lt;h1&gt;食伴 (dinner)｜私有的小册子&lt;/h1&gt;
&lt;p&gt;项目地址：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://gitee.com/tuoyuangui/dinner
https://gitcode.com/tuoyuangui/dinner
https://github.com/tuoyuangui/dinner
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;食伴记一日三餐，也记晚霞、学习、运动、创作和风景。&lt;br /&gt;
把三餐和日子，记在我们自己的小册子里。&lt;br /&gt;
不需要点赞，不需要给谁看，更不想让两个人的日常变成被围观的动态。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;数据安全&lt;/strong&gt;：数据直接存储在你自己控制的&lt;strong&gt;百度网盘&lt;/strong&gt;中，不经过食伴（dinner）或任何第三方服务器。&lt;br /&gt;
&lt;strong&gt;数据隐私&lt;/strong&gt;：一本私有的小册子，只有我们两个能打开。&lt;br /&gt;
&lt;strong&gt;数据保留&lt;/strong&gt;：不受即时通讯软件 7 天/30 天备份或保留期限的限制。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;把三餐和日子，记在我们自己的小册子里。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;开发初衷&lt;/h2&gt;
&lt;p&gt;开发&lt;strong&gt;食伴（dinner）&lt;/strong&gt;，最初只是一个小小的私心：想每天和女朋友（PXX）留下一点共同的记录。&lt;/p&gt;
&lt;p&gt;我们每天都会吃饭，也都会遇到一些值得说一句的小事——今天各自吃了什么、傍晚的风景很好看、晚上跑了步、学了一会儿，或者一起写了一半的歌。这些事情单独看都很轻，但攒在一起，就是我们两个人的日子。最初只是想记下“今天有没有好好吃饭”，后来慢慢发现，想记的不只是三餐，还有饭桌以外的风景、学习、运动和创作。&lt;/p&gt;
&lt;p&gt;也不想把这些发在社交平台上。不需要点赞，不需要给谁看，更不想让两个人的日常变成被围观的动态。所以食伴从一开始就是一本私有的小册子：数据直接存在我们自己的百度网盘里，不经过食伴或任何第三方服务器，只有我们两个能打开。它像一个共同的餐桌，也像一份日子的底稿——各自忙碌的时候，打开它，就像在同一个餐桌旁碰了个面。&lt;/p&gt;
&lt;p&gt;所以有了食伴：记一日三餐，也记晚霞、学习、运动、创作和风景。把三餐和日子，记在我们自己的小册子里。&lt;/p&gt;
&lt;h2&gt;目录&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%E9%A1%B9%E7%9B%AE%E4%BF%A1%E6%81%AF&quot;&gt;项目信息&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%8A%9F%E8%83%BD%E7%89%B9%E8%89%B2&quot;&gt;功能特色&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%95%8C%E9%9D%A2%E5%8F%82%E8%80%83&quot;&gt;界面参考&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97&quot;&gt;使用指南&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E7%8E%AF%E5%A2%83%E8%A6%81%E6%B1%82&quot;&gt;环境要求&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%91%BD%E4%BB%A4%E8%A1%8C%E6%9E%84%E5%BB%BA%E4%B8%8E%E5%AE%89%E8%A3%85&quot;&gt;命令行构建与安装&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E8%B4%A1%E7%8C%AE&quot;&gt;贡献&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%BC%80%E5%8F%91%E8%80%85%E5%A3%B0%E6%98%8E&quot;&gt;开发者声明&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E8%AE%B8%E5%8F%AF&quot;&gt;许可&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;项目信息&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;项目&lt;/th&gt;
&lt;th&gt;内容&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;版本&lt;/td&gt;
&lt;td&gt;1.0.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;包名&lt;/td&gt;
&lt;td&gt;&lt;code&gt;com.guolongli.dinner&lt;/code&gt;（debug 包为 &lt;code&gt;com.guolongli.dinner.debug&lt;/code&gt;）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;技术栈&lt;/td&gt;
&lt;td&gt;Kotlin + Jetpack Compose&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;存储&lt;/td&gt;
&lt;td&gt;需百度网盘（Baidu Netdisk）授权，默认目录 &lt;code&gt;/apps/dinner/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;开发者&lt;/td&gt;
&lt;td&gt;Guolong Li &lt;a href=&quot;mailto:guolongli_upc@foxmail.com&quot;&gt;guolongli_upc@foxmail.com&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;协议&lt;/td&gt;
&lt;td&gt;MIT&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;功能特色&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;功能&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;时间线&lt;/td&gt;
&lt;td&gt;按天分组，显示总条数与跨越天数；卡片预览九宫格媒体、备注、评分与评论&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;索引&lt;/td&gt;
&lt;td&gt;全部 / 星标 / 九种类型筛选常驻；跨月显示月份条，点击跳转&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;日历&lt;/td&gt;
&lt;td&gt;月历标出有记录日期，点选只看当天；只读本地，不耗接口配额&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;记录类型&lt;/td&gt;
&lt;td&gt;早 / 午 / 晚 / 加餐 + 风景 / 学习 / 运动 / 创作 / 其他&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;多媒体&lt;/td&gt;
&lt;td&gt;单条 0–9 段媒体，照片视频混排；照片统一转 JPEG（HEIF / AVIF 也可读取）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;视频&lt;/td&gt;
&lt;td&gt;九宫格显示封面帧与时长，点开全屏播放&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;压缩存储&lt;/td&gt;
&lt;td&gt;一个开关同时管理照片和视频，默认关闭；开启后照片长边 1920、视频 1280；转码失败保留原片&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;评论&lt;/td&gt;
&lt;td&gt;记录下可评论，删除同步；卡片预览最近两条&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;成员&lt;/td&gt;
&lt;td&gt;管理员口令 + 动态入群密码；成员上限 10 人，每人独立身份与头像&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;口令&lt;/td&gt;
&lt;td&gt;两份口令以明文存储在云端（产品要求）；管理员操作需在群组页输入口令，解锁仅在本次运行内存中有效&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;删除&lt;/td&gt;
&lt;td&gt;只删本地 / 只删云端 / 都删，二次确认；只能删自己上传的云端文件&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;管理员&lt;/td&gt;
&lt;td&gt;可修改、删除所有记录与评论，可转让；后端统一权限校验&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;应用锁&lt;/td&gt;
&lt;td&gt;打开时用指纹 / 人脸 / 锁屏密码验证，应用不保存口令&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;统计&lt;/td&gt;
&lt;td&gt;总记录 / 我记的 / 已同步三个数字可点，进入明细列表&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;本地保留&lt;/td&gt;
&lt;td&gt;默认 30 天，可调 7 / 30 / 90 / 180 / 永久；清理前确认云端有副本&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;区间取回&lt;/td&gt;
&lt;td&gt;选时间段从云端补回记录与评论，也可取回全部；照片视频点开时再下载，不耗接口配额&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;网盘重试&lt;/td&gt;
&lt;td&gt;可设 1 / 2 / 3 / 5 次，默认 3 次；仅重试频控与断网等瞬时故障&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;自动取回&lt;/td&gt;
&lt;td&gt;授权、配对、绑定手机号后自动拉取云端历史；进时间线先拉后推&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;离线优先&lt;/td&gt;
&lt;td&gt;先写本地，联网自动补传；失败标记，可手动重试&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;界面参考&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;./%E9%A3%9F%E4%BC%B4.assets/%E5%9B%BE%E7%89%871-1793595301015-1.png&quot; alt=&quot;图片1&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;使用指南&lt;/h2&gt;
&lt;p&gt;进入 &lt;a href=&quot;https://pan.baidu.com/union/console/applist&quot;&gt;&lt;strong&gt;百度网盘开放平台&lt;/strong&gt;&lt;/a&gt;，注册帐号；选择个人开发者即可，软件名称填写 &lt;strong&gt;dinner&lt;/strong&gt;（不能修改），获得 &lt;code&gt;AppKey&lt;/code&gt; 和 &lt;code&gt;SecretKey&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E9%A3%9F%E4%BC%B4.assets/%E5%9B%BE%E7%89%872-1793595308468-3.png&quot; alt=&quot;图片2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;注意：&lt;code&gt;AppKey&lt;/code&gt; 和 &lt;code&gt;SecretKey&lt;/code&gt; 仅应分享给特定的人；它们会以明文形式存储在百度网盘中（产品要求），以避免忘记口令后无法取回数据。请妥善保管。&lt;/p&gt;
&lt;h2&gt;环境要求&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;软件&lt;/th&gt;
&lt;th&gt;版本&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;JDK&lt;/td&gt;
&lt;td&gt;17 或更高&lt;/td&gt;
&lt;td&gt;AGP 9.x 需要（Temurin / OpenJDK 17 均可）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Android SDK&lt;/td&gt;
&lt;td&gt;platform 35 + build-tools 35&lt;/td&gt;
&lt;td&gt;&lt;code&gt;compileSdk 35&lt;/code&gt;，&lt;code&gt;minSdk 28&lt;/code&gt;（Android 9+），&lt;code&gt;targetSdk 35&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gradle&lt;/td&gt;
&lt;td&gt;8.9 或更高&lt;/td&gt;
&lt;td&gt;&lt;code&gt;scripts/build.sh&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;无需安装 Android Studio：只要有 JDK、Android SDK 命令行工具和 Gradle，即可完成构建与安装。&lt;/p&gt;
&lt;h2&gt;命令行构建与安装&lt;/h2&gt;
&lt;h3&gt;第 1 步：准备 Android SDK（只需一次）&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 目录可以随意换，下文以 ~/android-sdk 为例
mkdir -p ~/android-sdk/cmdline-tools &amp;amp;&amp;amp; cd ~/android-sdk/cmdline-tools

# 从 https://developer.android.com/studio#command-tools 下载 commandlinetools-linux-*.zip 后：
unzip commandlinetools-linux-*.zip
mv cmdline-tools latest   # 让 sdkmanager 位于 cmdline-tools/latest/bin

export ANDROID_SDK_ROOT=~/android-sdk
yes | $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --licenses
$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager \
  &quot;platform-tools&quot; &quot;platforms;android-35&quot; &quot;build-tools;35.0.0&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;把 &lt;code&gt;export ANDROID_SDK_ROOT=...&lt;/code&gt; 写进 &lt;code&gt;~/.bashrc&lt;/code&gt;，后续就不用每次设置。&lt;/p&gt;
&lt;h3&gt;第 2 步：打包 debug 与 release&lt;/h3&gt;
&lt;p&gt;日常开发用 &lt;code&gt;build.sh&lt;/code&gt; 就够。要出两个可安装的成品包（自己用一份、发给对方一份），用 &lt;code&gt;package.sh&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;./scripts/package.sh              # debug + release
./scripts/package.sh release      # 只出 release
./scripts/package.sh debug        # 只出 debug
./scripts/package.sh all --clean  # 先 clean 再全量构建
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;产物按版本号命名，多个版本可以并存：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apk/dinner-3.8.0-debug.apk       applicationId: com.guolongli.dinner.debug
apk/dinner-3.8.0-release.apk     applicationId: com.guolongli.dinner
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;每种构建还会额外留一份固定名字的副本，方便直接发给人安装（永远指向最新一次构建）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apk/dinner.apk                   debug 包
apk/dinner-release.apk           release 包
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;debug 与 release 的包名不同，可以同时装在手机上；桌面图标相同，认名字里的版本号区分。&lt;/p&gt;
&lt;p&gt;release 目前不做代码混淆与资源压缩（&lt;code&gt;isMinifyEnabled = false&lt;/code&gt;），只做正式签名与去掉 debug 后缀，便于对照排查问题。&lt;/p&gt;
&lt;p&gt;首次安装需在系统设置里允许「安装未知来源应用」。&lt;/p&gt;
&lt;h2&gt;贡献&lt;/h2&gt;
&lt;p&gt;本项目在人工智能辅助下开发与完善，难免存在不足，欢迎提交问题报告和功能请求。如果你想贡献代码，请：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Fork 本项目&lt;/li&gt;
&lt;li&gt;创建功能分支&lt;/li&gt;
&lt;li&gt;提交更改&lt;/li&gt;
&lt;li&gt;发起 Pull Request&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;提交前建议简要说明复现步骤、设备型号、系统版本与应用版本，便于定位问题。&lt;/p&gt;
&lt;h2&gt;开发者声明&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ 使用前请阅读：&lt;/strong&gt; 本项目按“现状”提供，开发者不承担数据损失等责任；&lt;strong&gt;强烈建议在更新版本前备份好数据&lt;/strong&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;本项目基于 &lt;strong&gt;MIT License&lt;/strong&gt; 开源发布。本声明是对 MIT License 免责条款的补充说明，不改变、不替代其条款；如有冲突，以 MIT License 为准。&lt;/p&gt;
&lt;h3&gt;1. 按“现状”提供&lt;/h3&gt;
&lt;p&gt;本应用按“现状”（AS IS）和“现有”（AS AVAILABLE）提供，不附带任何明示或默示担保。开发者不保证应用无错误、无中断、无漏洞，也不保证其与任何设备、系统、网络或第三方服务兼容。使用风险由你自行承担。&lt;/p&gt;
&lt;h3&gt;2. 不承担数据损失等责任&lt;/h3&gt;
&lt;p&gt;在法律允许的最大范围内，开发者、贡献者及版权持有人不对因使用本应用产生的任何损害承担责任，包括但不限于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;饮食记录、照片、视频、评论、评分、备注及本地数据库等数据的丢失、损坏、不可恢复或无法访问；&lt;/li&gt;
&lt;li&gt;因版本更新、覆盖安装、卸载、本地保留策略清理、压缩转码、同步失败或重试耗尽导致的数据问题；&lt;/li&gt;
&lt;li&gt;因百度网盘或其他第三方服务变更、频控、故障、关停、账号异常或授权失效导致的数据无法上传、下载、取回或同步；&lt;/li&gt;
&lt;li&gt;因设备故障、系统升级、误操作、存储损坏、网络中断或不可抗力导致的数据损失；&lt;/li&gt;
&lt;li&gt;间接损失、附带损失、特殊损失、惩罚性损失或后果性损失；&lt;/li&gt;
&lt;li&gt;因群组成员操作或管理员权限行使导致的内容变化或数据不可用。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3. 备份是你的责任&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;强烈建议在更新版本前备份好数据&lt;/strong&gt;，并为重要记录保留多份副本。应用提供的“云端副本确认”“区间取回”“自动取回”等机制不是备份方案，不能替代独立备份。&lt;/p&gt;
&lt;h3&gt;4. 第三方服务&lt;/h3&gt;
&lt;p&gt;主要数据直接存储在你个人控制的百度网盘中，不经过开发者服务器或中间第三方服务器。百度网盘的服务可用性、数据安全、接口稳定性和存储策略由其运营方独立决定，开发者不对百度网盘侧的数据状态承担责任。使用百度网盘还应遵守其自身服务条款。&lt;/p&gt;
&lt;h3&gt;5. 用户责任&lt;/h3&gt;
&lt;p&gt;你应妥善保管百度网盘账号、群组口令和管理员口令；确保上传内容合法合规、不侵犯他人权利；理解删除档位、本地保留策略及管理员权限设计的后果，并自行做好备份。&lt;/p&gt;
&lt;h3&gt;6. 衍生作品与条款&lt;/h3&gt;
&lt;p&gt;修改、分发或部署本项目代码，应遵守 MIT License（保留版权声明与许可声明），并自行承担相关责任。开发者不对第三方衍生版本负责。本声明任何条款无效或不可执行，不影响其余条款效力。&lt;/p&gt;
&lt;p&gt;下载、安装、使用或继续使用本应用，即视为你已阅读、理解并同意本声明及 MIT License。&lt;/p&gt;
&lt;h2&gt;许可&lt;/h2&gt;
&lt;p&gt;本项目采用 MIT License，详见 &lt;a href=&quot;LICENSE&quot;&gt;LICENSE&lt;/a&gt;。&lt;/p&gt;
</content:encoded></item><item><title>AI每周总结-地球物理 (2026-10-26)</title><link>https://tuoyuangui.github.io/website/posts/typora/ai%E6%AF%8F%E6%97%A5%E6%80%BB%E7%BB%93/ai%E6%AF%8F%E5%91%A8%E6%80%BB%E7%BB%93_2026-w44/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/ai%E6%AF%8F%E6%97%A5%E6%80%BB%E7%BB%93/ai%E6%AF%8F%E5%91%A8%E6%80%BB%E7%BB%93_2026-w44/</guid><pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;AI每周总结 · 地球物理（2026-10-26）&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;口径声明（必读）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;{{project}}&lt;/code&gt; 未被注入&lt;/strong&gt;：本期沿用既定默认口径 &lt;strong&gt;AI + 深度学习 + HPC + 地震数据处理 + 全波形反演（FWI）&lt;/strong&gt;；若下游模板需要替换，请全局替换该口径即可。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;{{date}}&lt;/code&gt; = 2026-10-26（周一）&lt;/strong&gt;，覆盖 ISO 周 &lt;strong&gt;2026-W43 全周 + W44 周一&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;采集区间&lt;/strong&gt;：主窗口 &lt;strong&gt;2026-10-19 ~ 2026-10-26（8 天，含端点）&lt;/strong&gt;。所有条目日期（以首选载体为准）均落在 10-19 ~ 10-25，本期无&quot;补齐窗口&quot;条目。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;历史对比基准&lt;/strong&gt;：最近 &lt;strong&gt;4 份&lt;/strong&gt;历史总结 —— &lt;code&gt;AI每周总结_2026-10-19.md&lt;/code&gt;、&lt;code&gt;AI每周总结_2026-W41.md&lt;/code&gt;、&lt;code&gt;AI每周总结_2026-W39.md&lt;/code&gt;、&lt;code&gt;AI每周总结_2026-W38.md&lt;/code&gt;。&lt;strong&gt;W40 仍缺档&lt;/strong&gt;（详见第八节）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分类口径&lt;/strong&gt;：&lt;strong&gt;传统方法&lt;/strong&gt; = 以物理/数学/数值/信号处理/反演/成像/层析/干涉/走时为核心，不以 DL/ML 为主要创新；&lt;strong&gt;AI/地球物理&lt;/strong&gt; = 以深度学习/机器学习/神经网络/生成模型/LLM 为核心创新。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;两类条数分布（如实披露）&lt;/strong&gt;：&lt;strong&gt;主榜 10 条 = AI/地球物理 6 条 / 传统方法 4 条&lt;/strong&gt;，&lt;strong&gt;目标配比 6:4 本期严格达成&lt;/strong&gt;（上期为 5:5，本期未出现需要披露的偏差）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;一、本期概览&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;项&lt;/th&gt;
&lt;th&gt;值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;覆盖区间&lt;/td&gt;
&lt;td&gt;2026-10-19 ~ 2026-10-26（无补齐窗口）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;精选条数&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;10 条&lt;/strong&gt;，实际 &lt;strong&gt;AI/地球物理 6 / 传统方法 4&lt;/strong&gt;（目标 6:4 &lt;strong&gt;达成&lt;/strong&gt;）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;来源结构&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;期刊 4 条&lt;/strong&gt;（GJI ×2、&lt;em&gt;Geophysics&lt;/em&gt; ×1、JGR-Solid Earth ×1）· &lt;strong&gt;arXiv 预印本 6 条&lt;/strong&gt; · 一条条目只按&quot;首选可核验载体&quot;计一次&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;去重结果&lt;/td&gt;
&lt;td&gt;与 4 份历史文件逐条比对（DOI / arXiv ID / 标题关键词三重检索）：&lt;strong&gt;10 条全部为首次收录&lt;/strong&gt;；其中 &lt;strong&gt;4 条属&quot;方向升级&quot;&lt;/strong&gt;（见 5.A / 5.B）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;最强可复现资产&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;github.com/lanl/owl&lt;/code&gt;（BSD-3-Clause，9★，实测 2026-10-24 仍有推送）&lt;/strong&gt; —— LANL 官方开源的声波/弹性波建模与 FWI 框架；&lt;strong&gt;&lt;code&gt;github.com/siting6/pnpflow-fwi-numerics&lt;/code&gt;（实测存在，0★）&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⚠️ 代码风险项&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;github.com/Lipeng-Lai/MeanFlow4Helmholtz&lt;/code&gt; 与 &lt;code&gt;github.com/eagleray2020/HypoNet_Nankai_DeeperPINN_PS&lt;/code&gt; 均&quot;论文声明公开&quot;但实测 HTTP 404&lt;/strong&gt;（后者作者账号存在、旧版仓库在，唯独新仓库不存在）—— 上期&quot;will be made publicly available ≠ 已开源&quot;的教训本期&lt;strong&gt;再次出现两次&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;开源栈状态&lt;/td&gt;
&lt;td&gt;Devito &lt;strong&gt;v4.8.23 / 2026-08-07&lt;/strong&gt;、ObsPy &lt;strong&gt;1.5.1 / 2026-08-28&lt;/strong&gt;（均无新版本）；&lt;strong&gt;SeisBench：GitHub releases 仍停在 v0.12.0，但 PyPI 已到 0.12.6（2026-09-17 上传）→ 判定&quot;有新版本&quot;&lt;/strong&gt;，并记录&quot;GitHub releases 滞后于 PyPI&quot;这一口径教训（见 8.3）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;本期主线&lt;/td&gt;
&lt;td&gt;①&lt;strong&gt;生成先验进入&quot;一步生成 / 流匹配&quot;阶段&lt;/strong&gt;：mean flow 与 PnP-Flow 两条流匹配路线同周出现，效率首次成为生成式反演的核心卖点；②&lt;strong&gt;传统成像正式把&quot;多重散射&quot;做成对偶空间的高效框架&lt;/strong&gt;（dual RTM 定位为 RTM/LSRTM 与非线性波形反演之间的桥梁）；③&lt;strong&gt;LLM 以&quot;系统/工程&quot;形态进入地震数据处理&lt;/strong&gt;（合同约束、状态图、确定性几何工具）；④&lt;strong&gt;开源基础设施出现重量级传统侧资产&lt;/strong&gt;（OWL）。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;二、本期精选 Top 10（整体按相关性排序；AI 6 + 传统 4）&lt;/h2&gt;
&lt;h3&gt;1. ⭐ OWL：LANL 开源的声波/弹性波建模与全波形反演库（本期最强可复现资产）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：OWL: Open Wave Library for seismic wave modeling and full-waveform inversion in acoustic and elastic media&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Kai Gao、Jackson W. Saftner、Ting Chen、Ryan T. Modrak —— &lt;strong&gt;Los Alamos National Laboratory&lt;/strong&gt;（Earth and Environmental Sciences Division；Crossref affiliation 字段已核验；Saftner 兼 Pennsylvania State University）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;GJI&lt;/em&gt; · https://doi.org/10.1093/gji/ggag450（published-online 2026-10-19，early view，&lt;strong&gt;卷期页码待定&lt;/strong&gt;）· CC BY 4.0&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：把&quot;波场求解器 + 失配函数 + 反演算法&quot;三件事集成进一个开源框架：&lt;strong&gt;2D/3D 各向同性声波、各向同性弹性、一般各向异性弹性介质的高阶有限差分求解器&lt;/strong&gt;；&lt;strong&gt;曲线网格 + 局部加密&lt;/strong&gt;表达地形弹性自由表面；&lt;strong&gt;CFS-MAXWELL 多轴 PML&lt;/strong&gt;保证强各向异性介质稳定模拟。FWI 侧实现常规波形/互相关/自适应波形三类失配，另加&lt;strong&gt;两个广义动态时间规整（GDTW）目标&lt;/strong&gt;（一个惩罚估计出的时移、一个度量 warping 后的振幅差），多分量数据共用同一 warping 函数；伴随态梯度由存储边界的波场重构计算；&lt;strong&gt;炮级并行 + 3D 分布内存域分解 + OpenMP&lt;/strong&gt;。诚实边界：&lt;strong&gt;假设地球曲率可忽略（不适合区域/全球尺度）；当前 CPU-only，异构计算/黏弹性/声弹耦合列为 future work&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：灵敏度核研究 + 合成与实测数据算例（摘要明确）；与谱元法解对比验证求解器精度&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：✅ &lt;strong&gt;&lt;code&gt;github.com/lanl/owl&lt;/code&gt; 实测存在&lt;/strong&gt; —— &lt;strong&gt;BSD-3-Clause&lt;/strong&gt;，9★，&lt;strong&gt;Fortran + MPI + OpenMP&lt;/strong&gt;，支持 2D/3D 各向同性/各向异性声学/弹性介质与多种 misfit，&lt;strong&gt;pushed_at 2026-10-24&lt;/strong&gt;（论文发表同周仍在活跃开发）。README 注明&lt;strong&gt;当前仅支持 Intel 编译器&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;传统方法&lt;/strong&gt;（有限差分波场模拟 + 伴随态 FWI 的开源工程化；无 DL 组件）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目（AI+DL+HPC+地震数据处理+FWI）的启发&lt;/strong&gt;：这是本期对 FWI/HPC 主线&lt;strong&gt;工程价值最高&lt;/strong&gt;的条目。三点：①它把 GDTW 类 misfit、伴随源、炮级并行做成了&lt;strong&gt;可直接调用的实现&lt;/strong&gt;，是我们做&quot;失配函数消融&quot;类实验时能与 Devito 并列的第二个可复现基线；②&lt;strong&gt;CPU-only + 仅 Intel 编译器&lt;/strong&gt;是明确短板 —— 对我们的启示是异构（GPU）支持在这个层级的开源库里仍是空白，自研的 GPU 波场算子有存在价值；③LANL 同时贡献了本期 #3（PnP-Flow FWI）—— &lt;strong&gt;同一机构在&quot;传统引擎&quot;与&quot;生成先验&quot;两侧同时布局&lt;/strong&gt;，值得作为一个观察信号。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ Crossref 全文摘要 + 机构；✅ 代码仓库实测（stars/license/pushed_at）；⚠️ 卷期页码待定（early view）；性能数字未复核。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;2. Dual RTM：把多重散射成像重构为对偶空间的定点迭代（传统侧方法学最硬核条目）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Dual Reverse Time Migration: Efficient Least-squares Imaging with Multiple Scattering in Dual Space&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Mahdi Sonbolestan、Toktam Zand、Ali Gholami —— &lt;strong&gt;Institute of Geophysics, Polish Academy of Sciences, Warsaw&lt;/strong&gt;（arXiv HTML &lt;code&gt;Affiliation:&lt;/code&gt; 字段已核验）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.25995（v1，2026-10-19，physics.geo-ph）· https://arxiv.org/abs/2610.25995 · &lt;strong&gt;CC BY 4.0&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：LSRTM 受限于&lt;strong&gt;一阶 Born 近似&lt;/strong&gt;且需迭代求解&lt;strong&gt;源相关的模型空间 Hessian&lt;/strong&gt;。本文提出 dual RTM：把反问题改写在对偶空间，优化变量是&lt;strong&gt;所有阶次的散射信息&lt;/strong&gt;（而非仅一阶散射）；通过对&lt;strong&gt;全波方程控制的定点迭代&lt;/strong&gt;重构&quot;缺失的散射数据&quot;（对偶变量），从而在&lt;strong&gt;不做背景速度反复更新&lt;/strong&gt;的情况下恢复高阶散射与多次波；把源相关 Hessian 替换为&lt;strong&gt;源无关的数据空间 Hessian&lt;/strong&gt;，借助&lt;strong&gt;时-频混合公式&lt;/strong&gt;把它在 Fourier 域&lt;strong&gt;一次性离线装配并求逆&lt;/strong&gt;，使每次在线迭代的代价降到单次 RTM 水平。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：挑战性合成基准（含 &lt;strong&gt;Marmousi 模型&lt;/strong&gt; 与 &lt;strong&gt;crustal-scale&lt;/strong&gt; 两个算例，见正文目录 §5.1/§5.2）；结论：压制采集足印、改善振幅保真、增强仅一次反射照明不足时的深部成像&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️ 未验证）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;传统方法&lt;/strong&gt;（反演成像 / 非线性多次散射；无 DL 组件）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：作者明确定位 dual RTM 为 &lt;strong&gt;&quot;常规 RTM/LSRTM 与非线性波形反演之间的高效桥梁&quot;&lt;/strong&gt; —— 这条谱系（RTM → LSRTM → 非线性 FWI）正是我们主战场。两个可移植点：①**&quot;数据空间 Hessian 离线装配 + 一次求逆&quot;&lt;strong&gt;的时-频混合写法，是把迭代代价从 O(源数×迭代) 压到 O(迭代) 的通用思路，值得对照我们 FWI 流程里的预条件设计（与上期 JI-FNO&quot;学习型预条件&quot;形成两条不同的预条件哲学）；②对偶变量=散射信息的参数化，可以作为&lt;/strong&gt;检验我们生成式 FWI 输出是否物理一致**的中间诊断量。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据 + 机构 + 许可（CC BY 4.0）；✅ 方法细节来自全文 HTML；⚠️ 代码未声明；Marmousi/crustal 算例的量化增益未复核。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;3. ⭐ PnP-Flow FWI：流匹配先验即插即用做全波形反演（代码已实测可获取）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：An exploration of plug-and-play flow matching for full-waveform inversion on breast imaging&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Cristina Garcia-Cardona（&lt;strong&gt;Los Alamos National Laboratory&lt;/strong&gt;, Computing &amp;amp; AI Division）、Siting Liu（&lt;strong&gt;UC Riverside&lt;/strong&gt;, Math）、Fatma Terzioglu（&lt;strong&gt;NC State&lt;/strong&gt;）、Shanyin Tong（&lt;strong&gt;UPenn&lt;/strong&gt;）、Lu Zhang（&lt;strong&gt;Rice&lt;/strong&gt;）—— HTML &lt;code&gt;Affiliation:&lt;/code&gt; 字段逐人核验&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.32185（v1，2026-10-23，eess.IV + math.NA）· https://arxiv.org/abs/2610.32185&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：把 &lt;strong&gt;plug-and-play flow matching（PnP-Flow）&lt;/strong&gt; 适配到 FWI：&lt;strong&gt;交替执行波形失配更新与预训练流先验更新&lt;/strong&gt;。在两组圆形包含物模型族（常背景 / 空变背景）上分别训练流先验，与 &lt;strong&gt;TV 正则化&lt;/strong&gt;基线在无噪声透射平面波数据上对比；并做&lt;strong&gt;分布外迁移&lt;/strong&gt;：把高斯圆先验与重建设置&lt;strong&gt;不重训练、不重调参&lt;/strong&gt;直接迁移到乳腺声学 phantom 图块。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：合成圆模型族 + &lt;strong&gt;Li et al. (2021) 数值声学乳腺 phantom&lt;/strong&gt;（A/B/C/D 四类组织，32 个父 phantom、32 个测试图块；声速按 m(m/s)×8/1450 映射）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：✅ &lt;strong&gt;&lt;code&gt;github.com/siting6/pnpflow-fwi-numerics&lt;/code&gt; 实测存在&lt;/strong&gt;（0★，pushed_at &lt;strong&gt;2026-10-12&lt;/strong&gt;，license 为 NOASSERTION 自定义声明，正文含 &quot;Code availability&quot; 章节）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;AI/地球物理&lt;/strong&gt;（流匹配生成先验 + PnP 交替优化为核心创新）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：①这是**&quot;生成先验家族&quot;中代码最扎实的一条**（LANL 系，与 #1 OWL 同机构）；②核心卖点可量化引用：&lt;strong&gt;在 2500 次更新下，整体相对 L2 误差 PnP-Flow 1.56% vs TV 1.52%（打平），但病灶对比度误差 0.214 vs 0.263（PnP-Flow 在 28/32 图块更优）&lt;/strong&gt; —— 即&quot;先验的价值体现在任务相关量（对比度）而非全局误差&quot;，这个评测视角值得抄进我们的验收指标；③&quot;&lt;strong&gt;廉价代理数据训练重模型 + 分析分布偏移&lt;/strong&gt;&quot;的实验设计（因乳腺公开数据受隐私限制），对我们缺实测数据时构造代理训练集有直接方法论参考。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据 + 机构 + 全文数字（Table 3 实读）；✅ 代码仓库实测；⚠️ license 非标准 SPDX；0★ 仓库长期维护性存疑。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;4. GeoAgent：合同约束的 LLM Agent 驱动 Madagascar 处理地震数据（LLM 走进处理主线的第一条系统级工作）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：GeoAgent: Contract-Constrained LLM Agents for Seismic Data Processing&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Zhilong Fang（通讯）、Qi Zhang、Jujie Yan、Zhong Wang、Xinbin Gu、Ziyang Zhang、Hua Wang —— &lt;strong&gt;电子科技大学 资源与环境学院&lt;/strong&gt;（UESTC；arXiv HTML &lt;code&gt;Affiliation:&lt;/code&gt; 字段已核验，v2）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.31096（&lt;strong&gt;v2&lt;/strong&gt;，v1 2026-10-22，updated 2026-10-23，physics.geo-ph）· https://arxiv.org/abs/2610.31096&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：LLM 通过 function calling 驱动科学软件时，长链数据依赖流程会&lt;strong&gt;漏参数、编造单位、接错输入、报成功却无可验证产物&lt;/strong&gt;。GeoAgent 建立在 Madagascar 约 &lt;strong&gt;1,965 个命令行程序&lt;/strong&gt;之上：暴露 &lt;strong&gt;54 个算子 agent&lt;/strong&gt;（51 个由声明式规范自动生成）、从 &lt;strong&gt;1,937 个算子索引&lt;/strong&gt;做检索、把处理流编码为&lt;strong&gt;九阶段状态图&lt;/strong&gt;；用&lt;strong&gt;四个显式合同&lt;/strong&gt;（named artifacts / input resolution / parameter takeover / artifact validation）把图能确定的事全部从&quot;模型自由裁量&quot;中移出；一个&lt;strong&gt;确定性几何工具&lt;/strong&gt;解析自描述的 SPS/RPS/XPS 与 SEG-Y 头，交叉校验 8 项一致性条件，并&lt;strong&gt;精确复现参考 shell 配方&lt;/strong&gt;；容器化运行 + 会话/任务级隔离 + 有界执行。实测：2D 陆上数据九阶段管线 &lt;strong&gt;6–11 分钟&lt;/strong&gt;跑完且每阶段产物可验证；检索把每轮工具上下文从 &lt;strong&gt;~12k token 压到 ~2k&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：一个 2D 陆上数据集 + 开发迭代（作者自述&quot;非受控基准&quot;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：⚠️ &lt;strong&gt;方法代码未提供&lt;/strong&gt;（全文无代码仓库声明）；&lt;strong&gt;在线部署 http://47.109.133.239/ 本期实测 HTTP 200 可访问&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;AI/地球物理&lt;/strong&gt;（LLM 多智能体 + 工作流约束工程为核心创新）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：这条是本期&lt;strong&gt;范式层面&lt;/strong&gt;最有意思的 AI 条目：它不训练任何地球物理模型，而是回答&quot;&lt;strong&gt;LLM 怎样才能可靠地跑一条 60 年历史的命令行处理链&lt;/strong&gt;&quot;。四个合同里的 &lt;strong&gt;&quot;artifact validation&quot;（每阶段产物必须通过确定性校验才算完成）&lt;/strong&gt; 可以直接移植为我们 HPC 处理管线的 agent 层验收标准 —— 与上期 JI-FNO 的&quot;objective-space mismatch 失效模式&quot;教训同构：&lt;strong&gt;把能确定性判定的东西移出神经网络的自由裁量，是两类工作共同给出的工程原则&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据（v2）+ 机构 + 全文；✅ live site 本期实测 200；⚠️ 代码未声明、量化结果均为作者自述（单数据集）。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;5. 条件均值流（Mean Flows）一步生成频域散射波场&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Conditional Mean Flows for Frequency-Domain Scattered Wavefield Generation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Lipeng Lai、Shaohuan Zu —— &lt;strong&gt;成都理工大学&lt;/strong&gt;（正文致谢&quot;Chengdu University of Technology 高性能计算平台&quot;及&quot;四川自然科学基金（2024DQ02-0139）&quot;可佐证；⚠️ 正文无显式 &lt;code&gt;Affiliation:&lt;/code&gt; 字段，机构以&quot;高度可信、未逐人验证&quot;记录）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.31071（v1，2026-10-22，physics.geo-ph）· https://arxiv.org/abs/2610.31071&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：频域波场建模中反复求解 Helmholtz 方程代价高；神经算子出训练分布会掉精度，扩散模型需要多步采样。本文用&lt;strong&gt;条件均值流&lt;/strong&gt;生成复数散射波场：&lt;strong&gt;解析背景波场作为条件&lt;/strong&gt;（与速度模型一起提供源位置与频率的空间组织信息），只学散射场以避开点源奇异性；模型估计连接高斯噪声与散射场的有限区间上的&lt;strong&gt;平均输运速度&lt;/strong&gt;，因而支持&lt;strong&gt;全区间一步生成&lt;/strong&gt;与区间分割采样。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：&lt;strong&gt;OpenFWI&lt;/strong&gt; 训练；分布内/分布外速度结构、频率泛化、推理效率三组评估；计时平台 Intel i9-14900KF + RTX 5070（12 GB），三组预热 + 十次计时取中位数&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：⚠️ &lt;strong&gt;论文&quot;Data and Code Availability&quot;声明公开于 &lt;code&gt;github.com/Lipeng-Lai/MeanFlow4Helmholtz&lt;/code&gt;，但实测 HTTP 404&lt;/strong&gt;；作者账号 &lt;code&gt;Lipeng-Lai&lt;/code&gt; 存在（5 个 public repos），&lt;strong&gt;仓库确不存在&lt;/strong&gt; → 判定&quot;尚未上传&quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;AI/地球物理&lt;/strong&gt;（mean flow 生成模型为核心创新）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：①**&quot;一步生成打败多步扩散&quot;&lt;strong&gt;如果成立，生成式波场代理的推理成本叙事彻底改写 —— 与上期 JI-FNO 报告的&quot;神经算子不稳定/代价问题&quot;恰好互补：&lt;strong&gt;流路线的卖点是&quot;少步数 + 更稳&quot;，算子路线的卖点是&quot;零步数&quot;&lt;/strong&gt;，两条线值得并读；②&quot;用解析背景场做条件、只学生散场&quot;的&lt;/strong&gt;残差式参数化&lt;strong&gt;是绕开点源奇异性的通用技巧，对我们任何&quot;背景+扰动&quot;类波场学习都适用；③作者给出的精度对比在&lt;/strong&gt;多数设定**下成立（非全部）—— 引用时要保留这个限定。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据 + 全文方法与实验细节；⚠️ &lt;strong&gt;代码 404（论文声明与实际不符）&lt;/strong&gt;；⚠️ 机构未逐人验证；计时数字为作者自述。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;6. HypoNet Nankai PS：P+S 波三维速度模型的 PINN 震源快速定位（上期 PINN 走时层析同一团队的升级）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：HypoNet Nankai PS: rapid hypocenter determination for the Nankai Trough using physics-informed neural networks with three-dimensional P- and S-wave velocity models&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Ryoichiro Agata（JAMSTEC）、Ayako Nakanishi（JAMSTEC）、Dan Bassett、Satoru Baba、Yasuyuki Nakamura、Gou Fujie —— &lt;strong&gt;JAMSTEC + Victoria University of Wellington + 名古屋大学&lt;/strong&gt;等（HTML 正文逐人署名核验；JAMSTEC/Wellington 已确认，其余 affiliation 字段未逐人摘录）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.27561（v1，2026-10-20，physics.geo-ph + cs.LG）· https://arxiv.org/abs/2610.27561&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：前作 HypoNet Nankai（PINN 走时 + 3D P 波模型）只支持 P 走时。本版扩展到 &lt;strong&gt;P+S 双波走时&lt;/strong&gt;：先用海洋沉积与地壳的经验转换关系从 P 波模型构造 S 波模型；&lt;strong&gt;S 波速度更低 → 走时梯度更陡 → 原 PINN 训练方案失效&lt;/strong&gt;，为此重新设计&lt;strong&gt;配点分布、网络结构与优化器&lt;/strong&gt;；与 fast marching 基准对比，修订方案显著降低 P/S 双波 RMSD。应用于 &lt;strong&gt;DONET 台网记录的 223 个地震&lt;/strong&gt;（纪伊半岛外海）：台网下方震源与 JMA 目录总体一致；更向海一侧的震源显著浅于 JMA（1D 模型 + 台站改正吸收了 3D 结构效应），落在洋壳与最上地幔内，与既往 3D 重定位一致。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：Nankai 海槽 3D P 波模型（JAMSTEC OBS/MCS 数据库，申请制）+ 经验转换的 S 波模型；DONET 223 个地震&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：⚠️ &lt;strong&gt;论文声明 &quot;HypoNet Nankai PS will be available at &lt;code&gt;github.com/eagleray2020/HypoNet_Nankai_DeeperPINN_PS&lt;/code&gt;&quot;，实测 HTTP 404&lt;/strong&gt;；作者账号存在、旧版 &lt;code&gt;HypoNet_Nankai_P&lt;/code&gt;（9★）在，&lt;strong&gt;新仓库确实尚未发布&lt;/strong&gt;；S 波模型&quot;接收后由 JAMSTEC 提供&quot;（in review）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;AI/地球物理&lt;/strong&gt;（PINN 走时推断 + 业务化监测系统为核心创新）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：①这是上期提名区 N2（ggag433，PINN + fParVI 3D 贝叶斯走时层析，同一第一作者 Agata）的&lt;strong&gt;直系续作&lt;/strong&gt;：从&quot;方法&quot;走向&quot;业务工具&quot;，且&lt;strong&gt;把&quot;物理变陡导致 PINN 训练失效 → 重设计训练&quot;这个失效-修复过程完整写出来&lt;/strong&gt;，是 PINN 类工作里少见的诚实失败报告，可作为我们 PINN 实验的对照清单；②&quot;1D 模型 + 台站改正掩盖 3D 结构效应 → 海侧震源系统性偏深&quot;的结论，对我们用任何快速定位/走时代理时做偏差诊断都有警示价值。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据 + 全文；⚠️ &lt;strong&gt;代码 404（&quot;will be available&quot; ≠ 已开源）&lt;/strong&gt;；部分作者 affiliation 未逐人摘录；量化数字为作者自述。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;7. FED-FWI：Fourier MLP + 余弦相似度优化器 + NTK 视角的复合失配 FWI&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Enhanced full-waveform inversion through Fourier MLP and cosine-similarity optimization: A neural tangent kernel and multiscale loss approach&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Hanrui Wang、Shuaishuai Li、Zhefeng Wei、Linong Liu、Jiangjie Zhang —— &lt;strong&gt;中国科学院地质与地球物理研究所（深层油气智能勘探与开发重点实验室）+ 国科大 + 中国石化石油勘探开发研究院&lt;/strong&gt;（Crossref affiliation 字段已核验）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;Geophysics&lt;/em&gt; · https://doi.org/10.1190/geo-2026-1864（published-online 2026-10-21，early view，&lt;strong&gt;卷期页码待定&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：在正演问题的 RNN 表述内组合三件事：①对参数化速度模型的 MLP &lt;strong&gt;坐标输入做 Fourier 特征映射&lt;/strong&gt; —— 丰富 &lt;strong&gt;NTK 谱&lt;/strong&gt;，改善尖锐速度对比的表示；②&lt;strong&gt;复合失配&lt;/strong&gt;：对相位偏移稳健的最优传输项 + 小波域多尺度一致性项，用&lt;strong&gt;指数滑动平均加权&lt;/strong&gt;自适应平衡（系数不要求随迭代单调）；③&lt;strong&gt;优化器按相邻梯度间的余弦相似度调节步长&lt;/strong&gt;，抑制振荡更新。全流程自动微分，无需手推伴随方程。**从 1200–4800 m/s 线性初始模型出发（不假设水层已知）**重建 Marmousi II：&lt;strong&gt;SSIM 0.804 / MSE 0.075&lt;/strong&gt;（对比 OT-FWI 0.626/0.212、Sobolev-norm FWI 0.695/0.134），&lt;strong&gt;收敛时间最短且额外 GPU 显存 &amp;lt; 200 MiB&lt;/strong&gt;；消融验证各组件均有贡献；两个盐体模型实验恢复主盐体几何。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：Marmousi II（线性初值）+ 两个盐体模型（均为合成）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️ 未验证）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;AI/地球物理&lt;/strong&gt;（隐式神经表示 + 学习式优化动力学用于 FWI 为核心创新）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：①这是&quot;&lt;strong&gt;把网络正确接进 FWI&lt;/strong&gt;&quot;主线的延续（W39 HFNO 正演 → 上期 JI-FNO 预条件 → 本期端到端 RNN 式表示 + 失配 + 优化器三件套），本期贡献是把 &lt;strong&gt;NTK 谱整形&lt;/strong&gt;当作&quot;为什么 Fourier 特征能解尖锐对比&quot;的理论解释 —— 我们若做 INR/SIREN 类速度表示，这是一条现成的调参依据；②**&quot;额外显存 &amp;lt; 200 MiB&quot;**是单卡可复现性的关键数字（作者自述），上期两条大模型类条目都不给显存账，这条给了。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ Crossref 元数据 + 机构 + 全摘要（含全部数字）；⚠️ early view 卷期待定；代码未声明；数字为作者自述。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;8. CURIE：1773 站 USArray MT 数据的大陆尺度概率电阻率参考模型（normalizing flows）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：CURIE: A continental-scale probabilistic magnetotelluric reference model of USArray data for the contiguous United States&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Sihong Wu、Jiajia Sun、Jiefu Chen（&lt;strong&gt;University of Houston&lt;/strong&gt;）、Dikun Yang（&lt;strong&gt;南方科技大学&lt;/strong&gt;；Sihong Wu 兼 &lt;strong&gt;MIT&lt;/strong&gt;）—— Crossref affiliation 字段已核验&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;GJI&lt;/em&gt; · https://doi.org/10.1093/gji/ggag451（published-online 2026-10-19，early view，&lt;strong&gt;卷期页码待定&lt;/strong&gt;）· CC BY 4.0&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：用&lt;strong&gt;无监督、物理驱动的 normalizing flows&lt;/strong&gt; 对 USArray MT 计划 &lt;strong&gt;1,773 个台站&lt;/strong&gt;的 Zxy/Zyx 两模式独立反演，得到两套互补的&lt;strong&gt;概率参考模型集合（CURIE）&lt;/strong&gt;：每台站每模式给出&lt;strong&gt;后验电阻率分布、不确定度与预测 MT 响应&lt;/strong&gt;。用滤波数据失配、模式间差异、相位张量 skew/ellipticity 三种指标诊断 &lt;strong&gt;1D 假设&lt;/strong&gt;的适用范围：多数台站滤波失配 &amp;lt; 4；低 skew/ellipticity 区与低失配区在内陆平原与山间高原一致，构造带与大陆边缘则提示需谨慎 1D 解释。浅部恢复主要地质省份的电阻率格局；中-下岩石圈深度分辨出构造活动西部与稳定东部克拉通的宽对比；太平洋/墨西哥湾沿岸与佛罗里达的 Zxy/Zyx 差异反映正交敏感性，指示 3D 结构走向。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：USArray MT 1,773 站实测数据&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️ 未验证）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;AI/地球物理&lt;/strong&gt;（normalizing flows 概率反演 + 大陆尺度产品化为核心创新）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：这是 &lt;strong&gt;&quot;大陆/区域尺度概率电阻率参考模型&quot;&lt;/strong&gt; 方向的第三条（W38 澳洲 AEM 的 INN 路线 → 上期 GGST 的 rigid-motion MT 概率参考 → 本期 CURIE），且本期这条&lt;strong&gt;第一次把方法做成&quot;参考模型产品&quot;&lt;/strong&gt;：附带了成套的质控指标（1D 假设诊断）与明确的下游用途（3D 反演初值/参考模型、数据质控）。方法论上&quot;&lt;strong&gt;同一数据两模式独立反演 → 差异即 3D 效应诊断&lt;/strong&gt;&quot;的设计很干净，任何张量类电磁/地震相位数据的模式一致性检验都可以借鉴。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ Crossref 全文摘要 + 机构；⚠️ early view 卷期待定；代码未声明。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;9. 云南通海 QJF–XJF 断裂交汇区的浅层 3D S 波速度与方位各向异性（229 站背景噪声）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Shallow S-Wave Velocity Structure and Azimuthal Anisotropy Beneath the Qujiang-Xiaojiang Fault Junction in Tonghai, Yunnan Province, China&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Huigui Sun（&lt;strong&gt;中国地震局地球物理研究所 + 北京大学&lt;/strong&gt;）、Xiaodong Song（&lt;strong&gt;北京大学&lt;/strong&gt;）、Lijun Chang（&lt;strong&gt;地球物理研究所&lt;/strong&gt;）、Haoran Meng（&lt;strong&gt;南方科技大学&lt;/strong&gt;）、Zengxi Ge（&lt;strong&gt;北京大学&lt;/strong&gt;）、Zhousheng Yang（&lt;strong&gt;云南省地震局&lt;/strong&gt;）、Weicui Ding（&lt;strong&gt;中国地质科学院&lt;/strong&gt;）—— Crossref affiliation 字段已核验&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;JGR-Solid Earth&lt;/em&gt; 131(10) · https://doi.org/10.1029/2026jb035554（published-online 2026-10-23）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：2023 年布设的 &lt;strong&gt;229 个短周期台站&lt;/strong&gt;连续背景噪声记录，&lt;strong&gt;Rayleigh 波与 Love 波频散直接反演到 6 km 深度的 3D S 波速度与方位各向异性&lt;/strong&gt;（不经过 1D 反演拼接）。发现：浅部速度变化总体跟随地表地质单元；&lt;strong&gt;QJF 两盘存在明显速度梯度（岩性对比）&lt;/strong&gt;；&lt;strong&gt;XJF 南段西支沿线的低速带&lt;/strong&gt;指示破裂损伤与物质弱化。结合 GPS 速度与地貌证据，各向异性格局指示&lt;strong&gt;分段式浅层变形&lt;/strong&gt;：XJF 西支相对不活跃，&lt;strong&gt;QJF 承担区域变形的主导角色&lt;/strong&gt;；1970 年 Ms 7.7 通海地震震源区存在高速异常体与陡速度梯度带相邻的结构组合。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：229 站背景噪声连续记录（2023 年部署）+ GPS + 地貌&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️ 未验证）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;传统方法&lt;/strong&gt;（背景噪声面波成像 / 各向异性；无 DL 组件）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：①这是本期唯一&lt;strong&gt;实测密集台阵 + 传统成像&lt;/strong&gt;的条目，其价值在于&quot;&lt;strong&gt;频散直接反演 3D（跳过 1D 拼接）&lt;/strong&gt;&quot;的处理链是可对标的多参数反演流程；②对 We 侧的价值：&lt;strong&gt;断裂带构造解释结论与速度结构异常一一挂钩&lt;/strong&gt;的写法（梯度带↔发震构造、低速带↔损伤带），是检验我们速度模型/成像结果地质合理性的判读模板；③作为国内密集台阵工作，数据获取路径明确（地方地震局合作），如果后续需要中国大陆实测背景噪声数据做方法验证，这是一个可联系的样例。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ Crossref 全文摘要 + 机构 + 卷期（131(10)）；⚠️ 代码未声明。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;10. DAS 通道质量的 semblance distance 统计框架&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Semblance Distance Analysis for Channel Quality Assessment in Distributed Acoustic Sensing&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Reinhardt Rading、Markus Hoffmann、Norbert Meyners（&lt;strong&gt;Helmut-Schmidt-Universität / Universität der Bundeswehr Hamburg&lt;/strong&gt;）、Holger Schlarb（DESY 相关团队，⚠️ affiliation 未逐人摘录）、Céline Hadziioannou（&lt;strong&gt;Universität Hamburg&lt;/strong&gt;）、Oliver Gerberding、Katharina-Sophie Isleif —— HTML &lt;code&gt;Affiliation:&lt;/code&gt; 字段部分核验（HSU Hamburg 已确认）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.30401（v1，2026-10-21，eess.SP + physics.app-ph）· https://arxiv.org/abs/2610.30401&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：DAS 通道质量受空间非均匀噪声与光缆-地面耦合限制，常规 SNR/相关性方法在非平稳复杂噪声环境不够用。提出基于 &lt;strong&gt;semblance distance&lt;/strong&gt; 的统计框架：度量单通道相对&quot;局部相干参考信号&quot;的偏离，把通道选择表述为&lt;strong&gt;相干增强信号空间中的距离估计问题&lt;/strong&gt;；&lt;strong&gt;无需安装条件或噪声统计的先验知识&lt;/strong&gt;即可识别非相干噪声与耦合畸变。三个独立数据集验证：&lt;strong&gt;2023 年土耳其-叙利亚地震记录&lt;/strong&gt;、受控震源实验、长期连续观测；结果与独立 SNR/RMSE 指标相关，且能检测&lt;strong&gt;季节尺度上低于 1 dB 的耦合条件时变&lt;/strong&gt; —— 可做光缆健康连续监测。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：2023 土耳其-叙利亚地震 DAS 记录 + 受控震源实验 + 长期连续观测（多数据集独立验证）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️ 未验证）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;传统方法&lt;/strong&gt;（信号处理 / 相干性统计；无 DL 组件）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：与上期 #5（4D TFXK，DAS 波形反演的目标函数）构成&lt;strong&gt;同一&quot;DAS 相干性&quot;家族的两个环节&lt;/strong&gt;：反演侧要&quot;利用&quot;相干性，质控侧要&quot;度量&quot;相干性偏离。三个可复用点：①&lt;strong&gt;无需先验噪声模型的通道自动筛选&lt;/strong&gt;，是我们接手任何 DAS 数据前的标准预处理候选；②&quot;亚 dB 级耦合时变检测&quot;意味着 DAS 耦合漂移会缓慢污染跨期对比（4D 监测）—— 做时移分析时这是必须控制的系统差；③原文点名其应用包括引力波探测器等高灵敏系统的噪声治理，说明该框架的工程成熟度较高。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据 + 全文摘要；⚠️ 部分作者 affiliation 未逐人摘录；代码未声明。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;三、本期提名区（未进 Top 10，但值得记录；不计入 10 条）&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;只列&lt;strong&gt;已核实元数据&lt;/strong&gt;的条目，字段从简。排序按&quot;与我方相关性&quot;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;标题&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;载体（已核验）&lt;/th&gt;
&lt;th&gt;一句话价值&lt;/th&gt;
&lt;th&gt;验证状态&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;N1&lt;/td&gt;
&lt;td&gt;QR-Based Coherence Analysis for Seismic Signal Detection in Dense Arrays&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;&lt;em&gt;GJI&lt;/em&gt; · https://doi.org/10.1093/gji/ggag459（published 2026-10-23；Abdul Hafiz S. Issah / Eileen R. Martin / Luis Tenorio，Colorado School of Mines）· CC BY 4.0&lt;/td&gt;
&lt;td&gt;用 &lt;strong&gt;QR 分解&lt;/strong&gt;高效近似台阵相干性（array coherence），提升弱/渐变信号检测的时间分辨率；面向密集台阵&quot;数据过剩&quot;场景，先在台阵端筛出候选事件、减少需传输与深分析的数据量。与本期 #10 同属&quot;相干性即质控/筛查工具&quot;家族，但对象是台阵而非 DAS 光缆&lt;/td&gt;
&lt;td&gt;✅ Crossref 全文摘要 + 机构；⚠️ 代码未声明&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N2&lt;/td&gt;
&lt;td&gt;Self-Supervised Seismic Random Noise Attenuation Using Positive2Negative Learning With Frequency–Wavenumber Coherence Constraints&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;&lt;em&gt;Geophys. Prospect.&lt;/em&gt; 74(8) · https://doi.org/10.1111/1365-2478.70274（online 2026-10-18 / Crossref created 2026-10-19，以 created 计入窗口；Yilong Ma / Yamin Xiao / Dong Zhang —— 河北地质大学 + 河北师范大学 + TU Delft）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;P2N+&lt;/strong&gt;：用正/负两组噪声生成训练对减少自监督信息损失，再加 &lt;strong&gt;f-k 域信号回注机制&lt;/strong&gt;从残差中提取相干成分、在局部振幅阈值约束下选择性回填，保护弱反射；3 合成 + 5 实测对比 P2N / Noise2Void / 阻尼降秩&lt;/td&gt;
&lt;td&gt;✅ Crossref 全文摘要 + 机构 + 卷期；⚠️ 代码未声明&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N3&lt;/td&gt;
&lt;td&gt;Super-resolution method based on a Transformer (SDST)&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;&lt;em&gt;Geophysics&lt;/em&gt; · https://doi.org/10.1190/geo-2026-1896（online 2026-10-25；Shiqi Dong / Xintong Dong / Kaiyuan Zheng / Ming Cheng / Tie Zhong / Hongzhou Wang）&lt;/td&gt;
&lt;td&gt;单步超分辨率同时做&lt;strong&gt;去噪+插值+频率外推&lt;/strong&gt;；Transformer 提取融合局部/全局特征，强调有效同相轴的振幅特征与空间连续性，面向叠加/偏移后低主频、稀疏采样数据的分辨率增强&lt;/td&gt;
&lt;td&gt;✅ Crossref 摘要前半 + 作者；⚠️ 摘要后半未读取；代码未声明&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N4&lt;/td&gt;
&lt;td&gt;Coseis-Diff: A Data-Independent Diffusion Transformer for Single Coseismic Interferogram Error Correction&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;&lt;em&gt;JGR-Solid Earth&lt;/em&gt; 131(10) · https://doi.org/10.1029/2025jb033630（online 2026-10-24；Chisheng Wang / Zuqi Lan / Jiaqiao Gan / Chuanhua Zhu）&lt;/td&gt;
&lt;td&gt;残差去噪扩散框架修正&lt;strong&gt;单帧 InSAR 同震干涉图&lt;/strong&gt;误差（大气湍流+分层延迟+DEM 残差+轨道误差+失相干），&lt;strong&gt;推理时不依赖外部辅助数据&lt;/strong&gt;——对无时间序列存档区的同震形变提取有直接价值&lt;/td&gt;
&lt;td&gt;✅ Crossref 元数据 + 摘要前半；⚠️ 机构未逐人核验（未读取 affiliation 字段）；代码未声明&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N5&lt;/td&gt;
&lt;td&gt;3D density gravity inversion in spherical coordinate system using a U-net neural network with a self-attention mechanism&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;&lt;em&gt;J. Geodynamics&lt;/em&gt; 170 · https://doi.org/10.1016/j.jog.2026.102178（created 2026-10-21；Wenjin Chen / Zhengfeng Jin / Shengwang Yu / Lei Yi / Xiao Gong）&lt;/td&gt;
&lt;td&gt;球坐标系 3D 密度重力反演 + U-Net 自注意力；⚠️ &lt;strong&gt;Crossref 与 Elsevier 均未提供摘要&lt;/strong&gt;，方法细节仅从标题推断&lt;/td&gt;
&lt;td&gt;⚠️ 仅元数据可核实，&lt;strong&gt;内容未验证&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N6&lt;/td&gt;
&lt;td&gt;A Conflict-Free Framework for Physical Constraint TEM Inversion Based on Deep Learning (PhyTEMNet + ConFIG)&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;&lt;em&gt;Geophys. Prospect.&lt;/em&gt; 74(8) · https://doi.org/10.1111/1365-2478.70278（online 2026-10-22；Yichong Wang / Yanfei Wang）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;PhyTEMNet&lt;/strong&gt;：把预训练正演模型作为&lt;strong&gt;可微约束&lt;/strong&gt;嵌入网络训练环（保证预测满足 Maxwell 方程）；核心创新是 &lt;strong&gt;Conflict-Free Inverse Gradient（ConFIG）&lt;/strong&gt;，解决物理约束梯度与数据梯度方向冲突&lt;/td&gt;
&lt;td&gt;✅ Crossref 摘要前半 + 作者；⚠️ 摘要后半未读取；代码未声明&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N7&lt;/td&gt;
&lt;td&gt;Entropy-regularized W2 misfit with a closed-form adjoint source for acoustic FWI&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;&lt;em&gt;J. Appl. Geophys.&lt;/em&gt; 106585 · https://doi.org/10.1016/j.jappgeo.2026.106585（created 2026-10-23；Jian Sun / Wenshuai Wang / Fei Dong / Shaolin Liu）&lt;/td&gt;
&lt;td&gt;熵正则化 &lt;strong&gt;Wasserstein-2 失配 + 闭式伴随源&lt;/strong&gt;的声波 FWI —— 若闭式伴随源成立，可省掉伴随态求解的额外正演；⚠️ &lt;strong&gt;Crossref 未提供摘要与机构&lt;/strong&gt;，方法细节仅从标题推断&lt;/td&gt;
&lt;td&gt;⚠️ 仅元数据可核实，&lt;strong&gt;机构与内容未验证&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N8&lt;/td&gt;
&lt;td&gt;Dip-aligned structural constraints for suppression of partially coherent seismic noise using self-supervised learning&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;&lt;em&gt;GJI&lt;/em&gt; · https://doi.org/10.1093/gji/ggag441（online 2026-10-23；Ji Li / Dawei Liu）&lt;/td&gt;
&lt;td&gt;部分相干噪声（涌浪/散射噪声）违背自监督盲点去噪的独立性假设；用&lt;strong&gt;倾向对齐的局部地质结构方向一致性&lt;/strong&gt;作为约束做结构感知自监督去噪&lt;/td&gt;
&lt;td&gt;✅ Crossref 摘要前半 + 作者；⚠️ 摘要后半未读取；代码未声明&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N9&lt;/td&gt;
&lt;td&gt;Physics-constrained and data-driven synergistic audio-frequency magnetotelluric inversion (PD-AMTNet)&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;&lt;em&gt;Geophysics&lt;/em&gt; · https://doi.org/10.1190/geo-2025-0231（online 2026-10-21；Rongzhe Zhang / Guoqing Zhang / Tonglin Li / Yang Zhang / Xinze Kang / Qilei Yin）&lt;/td&gt;
&lt;td&gt;平滑约束反演结果作为先验，&lt;strong&gt;门控融合&lt;/strong&gt;多尺度 TM 模式视电阻率/相位特征，物理约束与数据驱动协同的 AMT 反演，面向深部矿产勘探&lt;/td&gt;
&lt;td&gt;✅ Crossref 摘要前半 + 作者；⚠️ 摘要后半未读取；代码未声明&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;四、本期全量条目索引&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;标题（简）&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;载体 / ID&lt;/th&gt;
&lt;th&gt;日期（以载体为准）&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;OWL: Open Wave Library&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;10.1093/gji/ggag450&lt;/td&gt;
&lt;td&gt;2026-10-19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Dual Reverse Time Migration&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;arXiv 2610.25995&lt;/td&gt;
&lt;td&gt;2026-10-19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;PnP-Flow FWI（乳腺成像）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.32185&lt;/td&gt;
&lt;td&gt;2026-10-23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;GeoAgent（合同约束 LLM Agent）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.31096（v2）&lt;/td&gt;
&lt;td&gt;2026-10-22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Conditional Mean Flows 频域散射波场&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.31071&lt;/td&gt;
&lt;td&gt;2026-10-22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;HypoNet Nankai PS&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.27561&lt;/td&gt;
&lt;td&gt;2026-10-20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;FED-FWI（Fourier MLP + NTK + OT）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1190/geo-2026-1864&lt;/td&gt;
&lt;td&gt;2026-10-21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;CURIE（大陆尺度 MT 概率参考）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1093/gji/ggag451&lt;/td&gt;
&lt;td&gt;2026-10-19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;通海 QJF–XJF 3D S 波 + 方位各向异性&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;10.1029/2026jb035554&lt;/td&gt;
&lt;td&gt;2026-10-23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;DAS semblance distance 通道质量&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;arXiv 2610.30401&lt;/td&gt;
&lt;td&gt;2026-10-21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N1&lt;/td&gt;
&lt;td&gt;QR 台阵相干性信号检测&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;10.1093/gji/ggag459&lt;/td&gt;
&lt;td&gt;2026-10-23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N2&lt;/td&gt;
&lt;td&gt;P2N+ 自监督随机噪声衰减&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1111/1365-2478.70274&lt;/td&gt;
&lt;td&gt;2026-10-19（created）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N3&lt;/td&gt;
&lt;td&gt;SDST Transformer 超分辨&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1190/geo-2026-1896&lt;/td&gt;
&lt;td&gt;2026-10-25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N4&lt;/td&gt;
&lt;td&gt;Coseis-Diff 单帧 InSAR 误差修正&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1029/2025jb033630&lt;/td&gt;
&lt;td&gt;2026-10-24&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N5&lt;/td&gt;
&lt;td&gt;3D 重力反演 U-Net 自注意力&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1016/j.jog.2026.102178&lt;/td&gt;
&lt;td&gt;2026-10-21（created）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N6&lt;/td&gt;
&lt;td&gt;PhyTEMNet + ConFIG TEM 反演&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1111/1365-2478.70278&lt;/td&gt;
&lt;td&gt;2026-10-22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N7&lt;/td&gt;
&lt;td&gt;熵正则 W2 失配 + 闭式伴随源 FWI&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;10.1016/j.jappgeo.2026.106585&lt;/td&gt;
&lt;td&gt;2026-10-23（created）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N8&lt;/td&gt;
&lt;td&gt;Dip-aligned 结构约束自监督去噪&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1093/gji/ggag441&lt;/td&gt;
&lt;td&gt;2026-10-23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N9&lt;/td&gt;
&lt;td&gt;PD-AMTNet 物理约束+数据驱动 AMT&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1190/geo-2025-0231&lt;/td&gt;
&lt;td&gt;2026-10-21&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;分布&lt;/strong&gt;：Top 10 = &lt;strong&gt;AI 6 / 传统 4&lt;/strong&gt;；含提名区共 19 条 = &lt;strong&gt;AI 13 / 传统 6&lt;/strong&gt;。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;五、与历史总结的对比：重复 / 升级 / 新增&lt;/h2&gt;
&lt;h3&gt;5.A AI/地球物理线&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;（1）重复（同题或同方法的再次出现）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;与 4 份历史文件逐条比对（DOI / arXiv ID / 标题关键词三重检索），&lt;strong&gt;本期 AI 线 6 条主榜条目均未出现&lt;/strong&gt;：&lt;strong&gt;无严格意义上的重复条目&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;方向级重复 2 处：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;生成先验用于波场/反演&lt;/strong&gt;：W38（PSG 物理状态引导扩散）→ W39（由浅到深扩散 VMB）→ W41（扩散先验 + 神经算子）→ 上期（扩散正则 ASVGD，2610.19187）→ 本期 &lt;strong&gt;#3 PnP-Flow 与 #5 Mean Flows&lt;/strong&gt;。连续第六期出现，&lt;strong&gt;本期完成了从&quot;扩散&quot;到&quot;流匹配&quot;的代际切换&lt;/strong&gt;（判断：不是重复，是方法族换代）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DAS 相干性&lt;/strong&gt;：上期 #5（4D TFXK 失配，反演环节）→ 本期 &lt;strong&gt;#10（semblance distance，质控环节）&lt;/strong&gt; —— 同一物理量家族在管线不同位置出现。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;（2）升级（同一方向的实质性推进）&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;方向&lt;/th&gt;
&lt;th&gt;历史状态&lt;/th&gt;
&lt;th&gt;本期升级&lt;/th&gt;
&lt;th&gt;升级的实质&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Agata 组 PINN 走时/定位&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;上期提名区 N2（&lt;em&gt;GJI&lt;/em&gt; ggag433，PINN + fParVI 的 3D 贝叶斯走时层析；第一作者 Ryoichiro Agata，合作者含 Bassett/Fujie）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;#6 HypoNet Nankai PS（2610.27561）&lt;/strong&gt;：同一第一作者与核心合作者；从&quot;概率反演方法&quot;推进为&quot;P+S 双波 + 业务化监测工具&quot;；并完整披露&quot;S 波走时梯度更陡 → 原 PINN 训练失效 → 重设计配点/结构/优化器&quot;的失败-修复过程&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;从方法论文到可部署工具，且给出了 PINN 在更陡物理梯度下失效的第一手对照&lt;/strong&gt;。这是我们 PINN 实验清单的直接素材&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;生成先验的计算效率问题&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;上期 JI-FNO（2610.15331）报告&quot;标准 FNO 不稳定 + objective-space mismatch&quot;；扩散路线的短板一直是多步采样贵&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;#5 Mean Flows（一步生成精度多数设定优于多步扩散）&lt;/strong&gt; 与 &lt;strong&gt;#3 PnP-Flow（与 TV 打平整体误差、显著改善任务对比度）&lt;/strong&gt;：流匹配路线正面回应效率与稳定性&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;生成式反演从&quot;能不能用&quot;进入&quot;算力账&quot;阶段&lt;/strong&gt;；一步生成 + PnP 交替是两条不同的接法，值得并读&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;大陆/区域尺度概率电阻率参考模型&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;W38 #5（澳洲 AEM 2660 万测深，INN 一次前向得后验）→ 上期 GGST（&lt;em&gt;GJI&lt;/em&gt; ggaf405，rigid motion + advection GMRF 的 MT 概率参考，已见刊 244(1)）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;#8 CURIE&lt;/strong&gt;：normalizing flows + 1,773 站 + 成套 1D 假设质控指标 + 明确下游定位（3D 反演初值/数据质控）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;第三次出现，第一次产品化&lt;/strong&gt;。三条路线（INN/GMRF/normalizing flows）已集齐，可作为专题合并跟踪&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&quot;网络接进 FWI&quot;的系统化&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;W39 HFNO（正演算子）→ 上期 JI-FNO（学习型预条件）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;#7 FED-FWI&lt;/strong&gt;：端到端 RNN 式表示 + NTK 谱解释 + 复合失配自适应 + 余弦相似度优化器，附&quot;额外显存 &amp;lt; 200 MiB&quot;的单卡可复现账&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;从&quot;插入一个网络组件&quot;升级为&quot;表示-失配-优化器三件套联合设计&quot;&lt;/strong&gt;，且首次给出显存账&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;（3）新增方向&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LLM agent 系统级进入地震数据处理&lt;/strong&gt;（#4 GeoAgent）：历史四期只有&quot;评测基准&quot;（W39 SPBench）与数据集（W41 GeoFWI3D），本期是&lt;strong&gt;第一条把 LLM 做成带约束的执行系统&lt;/strong&gt;的条目 —— 合同约束、状态图、确定性校验工具的工程设计可直接移植。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多重散射的对偶空间成像&lt;/strong&gt;（#2 Dual RTM）：历史四期无 LSRTM/多次波成像条目，本期首次，且明确自我定位为&quot;RTM/LSRTM 与非线性波形反演之间的桥梁&quot;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;mean flow 一步波场生成&lt;/strong&gt;（#5）：即使放在生成先验家族内，&quot;学习平均输运速度 → 一步生成&quot;也是新机制。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5.B 传统方法线&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;（1）重复&lt;/strong&gt;：无严格重复；DAS 相干性属方向级重复（见 5.A）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;（2）升级&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;方向&lt;/th&gt;
&lt;th&gt;历史状态&lt;/th&gt;
&lt;th&gt;本期升级&lt;/th&gt;
&lt;th&gt;升级的实质&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;开源 FWI 基础设施&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;W39 TorchFDTD（GPU FDTD + 离散伴随）、W39 SPBench（评测基准）；开源栈连续五期无新版本&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;#1 OWL&lt;/strong&gt;：LANL 级别的完整 FWI 框架（各向异性弹性 + 曲线网格 + GDTW 失配 + 分布内存），BSD-3-Clause，&lt;strong&gt;论文发表同周代码仍在推送&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;传统线第一次拿到&quot;期刊论文 + 活跃仓库 + 宽松许可&quot;三要素齐全的重量级资产&lt;/strong&gt;；短板明确（CPU-only、仅 Intel 编译器）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;（3）新增方向&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;密集台阵背景噪声成像服务断裂构造判读&lt;/strong&gt;（#9 通海）：历史四期首次出现 ambient noise 类条目（&quot;Rayleigh/Love 频散直接 3D 反演&quot;的流程 + 断裂带结构解读模板）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DAS 通道质量统计框架&lt;/strong&gt;（#10）：DAS 相关条目此前只有上期 #5（反演失配侧），质控侧为首次。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;台阵相干性的 QR 高效实现&lt;/strong&gt;（N1）：信号筛查方向的新算法实现。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5.C 交叉观察（本期最重要的一个信号）&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;生成先验家族在本期完成了&quot;跨物理域 + 跨接法&quot;的收拢&lt;/strong&gt;：同一周内，成都理工把 mean flow 用于&lt;strong&gt;频域波场生成&lt;/strong&gt;（#5），LANL 把流匹配先验 PnP 进&lt;strong&gt;声速 FWI&lt;/strong&gt;（#3）——加上 W38→上期积累的扩散先验条目，&quot;学习型先验替代手工正则&quot;已经覆盖波场正演、速度反演、电阻率反演（#8 CURIE 同属生成式概率反演）三个对象。&lt;strong&gt;判断：这不是一条趋势在冒头，而是一个方法族在完成全谱部署；下期若再出现第三条流匹配条目，建议增设横向标签 &lt;code&gt;Flow-Generative&lt;/code&gt; 专题跟踪。&lt;/strong&gt; 另一个次级信号：&lt;strong&gt;LANL 同周贡献了传统引擎（OWL）与生成先验（PnP-Flow）各一条&lt;/strong&gt; —— 大装置机构在&quot;物理引擎&quot;与&quot;学习先验&quot;两侧同时下注，可视为两条线终将合并的机构级证据。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;六、本期趋势总结&lt;/h2&gt;
&lt;h3&gt;6.A AI/地球物理线&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;生成先验进入&quot;一步生成/流匹配&quot;阶段&lt;/strong&gt;：扩散模型的多步采样成本首次被正面攻克（#5），PnP 交替接法给出与手工正则（TV）严格对照的验收数据（#3）。效率从&quot;顺带提及&quot;变成&quot;核心卖点&quot;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LLM 从&quot;单点模型&quot;走向&quot;带合同约束的系统&quot;&lt;/strong&gt;（#4）：漏参数、编单位、错接线、假成功这四类失效被用工程手段（named artifacts / input resolution / parameter takeover / artifact validation）结构性消除 —— 这是本期 AI 线最&quot;不像论文、像系统设计文档&quot;的一条，也最可移植。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PINN 走时线业务化并学会向物理低头&lt;/strong&gt;（#6）：不是把网络做得更强，而是承认 S 波梯度更陡后重新设计训练 —— 失败模式被写进正文，稀缺且有用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;概率/集合产出成为 AI 条目标配&lt;/strong&gt;：CURIE 给后验与质控指标（#8），PnP-Flow 给分布外迁移实验（#3），HypoNet PS 给与目录一致的偏差诊断（#6）。&lt;strong&gt;&quot;只给点估计&quot;的 AI 反演条目在本期主榜已经绝迹。&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;6.B 传统方法线&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;成像正式向&quot;多重散射&quot;推进&lt;/strong&gt;（#2）：dual RTM 用&quot;数据空间 Hessian 离线一次装配&quot;把多次波成像的迭代代价压到单次 RTM 水平，并自我定位为通往非线性波形反演的桥梁 —— 传统线在为下一阶段的非线性化铺路。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;基础设施出现旗舰资产&lt;/strong&gt;（#1）：OWL 把各向异性弹性、地形自由表面、GDTW 失配、分布式并行打包开源；其&quot;CPU-only&quot;短板同时划出了 GPU 侧的空白带。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;背景噪声成像继续下沉到断裂带尺度&lt;/strong&gt;（#9）：229 站、6 km 深度、频散直接 3D 反演，结论（QJF 主导变形、XJF 西支弱化）与 GPS/地貌互相咬合 —— 传统成像的&quot;构造解释闭环&quot;依然是 AI 条目难以替代的。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DAS/台阵质控走向&quot;无先验统计框架&quot;&lt;/strong&gt;（#10 + N1）：semblance distance 与 QR 相干性都是&quot;不假设噪声统计也能筛通道/筛事件&quot;的设计，密集观测数据的入口端正在标准化。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;6.C 一句话总结&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;AI 线在换发动机（扩散 → 流匹配）并补显存账，传统线在换底盘（RTM → 多重散射对偶）并开源旗舰引擎；两条线在本期由同一机构（LANL）各贡献一条，合并的迹象已经从方法层面上升到机构布局层面。&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;七、对 &lt;code&gt;{{project}}&lt;/code&gt;（AI + DL + HPC + 地震数据处理 + FWI）的行动建议&lt;/h2&gt;
&lt;h3&gt;A. 立即可做（本周内，零/低风险）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Clone 并 smoke-test 两个已验证仓库&lt;/strong&gt;：&lt;code&gt;lanl/owl&lt;/code&gt;（BSD-3；注意仅 Intel 编译器，CPU 环境）与 &lt;code&gt;siting6/pnpflow-fwi-numerics&lt;/code&gt;（0★，license 为自定义声明，先读 LICENSE）。OWL 优先验证 2D 声波单炮正演跑通。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;环境更新&lt;/strong&gt;：SeisBench 升级到 &lt;strong&gt;0.12.6&lt;/strong&gt;（PyPI，2026-09-17；GitHub releases 未打 tag，安装以 PyPI 为准）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;把 #3 Table 3 的评测口径&lt;/strong&gt;（整体 L2 与任务相关量分开报告）抄进我们的实验记录模板。&lt;/li&gt;
&lt;li&gt;交叉核对历史挂账：SPBench 项目页、GeoFWI3D 代码地址（上期跨期未决项，本期未推进）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;B. 需要评估（1–4 周，先做可行性判断）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;GeoAgent 的四合同设计&lt;/strong&gt;（#4）移植评估：我们处理管线里哪些环节可做成&quot;named artifact + 确定性校验&quot;；它的九阶段状态图可作为我们流程 agent 化的参照架构。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dual RTM 的数据空间 Hessian 离线化&lt;/strong&gt;（#2）：评估在 Marmousi 尺度上离线装配的内存/IO 代价，与我们的预条件方案做算力对照。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mean flow 一步生成作为伴随波场/波场代理&lt;/strong&gt;（#5）：若代码后续真的放出（现 404），评估其 RTX 5070 级别的一步推理能否替代我们内层迭代的重复正演。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FED-FWI 三件套&lt;/strong&gt;（#7）：在低显存条件下复现其 Fourier 特征映射 + 复合失配的组合（作者称额外 &amp;lt; 200 MiB），验证对我们初始模型敏感场景的增益。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;C. 仅记录（暂不投入）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;CURIE 作为 MT 反演初值产品（#8）——非我方主战场，记录其&quot;两模式独立反演差异即 3D 诊断&quot;的设计即可。&lt;/li&gt;
&lt;li&gt;HypoNet Nankai PS（#6）——记录其 PINN 失效-修复清单；Nankai S 波模型为 JAMSTEC 申请制，暂无获取必要。&lt;/li&gt;
&lt;li&gt;提名区 N4（Coseis-Diff）、N5（重力 U-Net）、N9（PD-AMTNet）——方向记录。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;D. HPC 侧的具体提醒&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;OWL 是 CPU-only（Fortran + MPI + OpenMP，仅 Intel 编译器）&lt;/strong&gt;，异构支持是 future work —— 与我们 GPU 波场算子的定位不冲突，反而确认了空白；评估时单独准备 Intel 工具链环境，勿占用现有 GPU 节点。&lt;/li&gt;
&lt;li&gt;FED-FWI 的&quot;&amp;lt; 200 MiB 额外显存&quot;为&lt;strong&gt;作者自述&lt;/strong&gt;，复现时以实测为准；其 Marmousi II 规模适合单卡验证。&lt;/li&gt;
&lt;li&gt;Mean Flows 论文的计时基准是&lt;strong&gt;消费级 RTX 5070（12 GB）&lt;/strong&gt;，若迁移到集群卡（A100/H100）需重测，不能直接外推。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;八、未解决项 / 需人工确认&lt;/h2&gt;
&lt;h3&gt;8.1 本期新增（按优先级）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;两条代码仓库&quot;声明公开但 404&quot;&lt;/strong&gt;（本期最重要的风险项，两起）：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;github.com/Lipeng-Lai/MeanFlow4Helmholtz&lt;/code&gt;（#5，论文有明确 &quot;Data and Code Availability&quot; 章节）—— &lt;strong&gt;404&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;github.com/eagleray2020/HypoNet_Nankai_DeeperPINN_PS&lt;/code&gt;（#6，论文写 &quot;will be available&quot;）—— &lt;strong&gt;404&lt;/strong&gt;；作者账号存在且旧版 &lt;code&gt;HypoNet_Nankai_P&lt;/code&gt;（9★）可访问，新仓库确未发布。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;处置建议&lt;/strong&gt;：两条均列入月度复查清单；上期 &lt;code&gt;hu567/DiffSpecMatch&lt;/code&gt;（仍 404）+ 本期两条 = &lt;strong&gt;累计三起&quot;will be available ≠ 已开源&quot;案例&lt;/strong&gt;，该教训从&quot;个案&quot;升级为&quot;模式&quot;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GeoAgent 无代码仓库&lt;/strong&gt;（#4）：论文只给在线部署（&lt;code&gt;http://47.109.133.239/&lt;/code&gt;，本期实测 HTTP 200）与 Madagascar 实现描述；如需复现需基于论文自建或联系作者。上期记录中出现的 &lt;code&gt;www.geoagents.net&lt;/code&gt;（403）与 v2 正文无对应链接，&lt;strong&gt;该旧记录作废&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上期 early view 卷期复查结果&lt;/strong&gt;（本期实测 Crossref）：&lt;code&gt;ggag433&lt;/code&gt;、&lt;code&gt;ggag435&lt;/code&gt;、&lt;code&gt;ggag448&lt;/code&gt;、&lt;code&gt;geo-2026-1391&lt;/code&gt;、&lt;code&gt;geo-2025-0638&lt;/code&gt;、&lt;code&gt;geo-2025-1009&lt;/code&gt; &lt;strong&gt;仍未分配卷期页码&lt;/strong&gt;；&lt;code&gt;2025jb033081&lt;/code&gt; 已分至 &lt;strong&gt;131(10)&lt;/strong&gt;；&lt;code&gt;ggaf405&lt;/code&gt; 已见刊 &lt;strong&gt;244(1)&lt;/strong&gt;。→ 本期新增 3 条 GJI/&lt;em&gt;Geophysics&lt;/em&gt; early view（ggag450/ggag451/geo-2026-1864）继续挂账。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;两条无摘要条目&lt;/strong&gt;：&lt;code&gt;jappgeo.2026.106585&lt;/code&gt;（N7）与 &lt;code&gt;jog.2026.102178&lt;/code&gt;（N5）Crossref 无摘要无机构 → &lt;strong&gt;机构与内容未验证&lt;/strong&gt;，如需引用须取 PDF 首页。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;W40 缺档&lt;/strong&gt;：连续第三期挂账，仍未决定是否补做。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;8.2 跨期悬置（延续上期，本期未能推进）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;SPBench 项目页与 GeoFWI3D 代码地址：未复查。&lt;/li&gt;
&lt;li&gt;混采方向合并专题的触发条件（第三条同类出现）：本期无混采条目，计数器保持 0。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;8.3 本期口径层面的新教训&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;GitHub releases 滞后于 PyPI&lt;/strong&gt;：SeisBench 的 GitHub &quot;latest release&quot; 停在 v0.12.0，而 PyPI 已到 0.12.6（连续 5 个版本未打 GitHub tag）。&lt;strong&gt;开源栈版本核查必须 PyPI + GitHub 双源&lt;/strong&gt;，以 PyPI 为准（对 Python 包）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;arXiv HTML 的机构字段并非总在 &lt;code&gt;Affiliation:&lt;/code&gt; 标签里&lt;/strong&gt;：#5（成都理工）无显式 affiliation 字段，机构从致谢与基金标注推断 —— 引用时必须写明推断路径。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;v2 修订会替换正文内容&lt;/strong&gt;：GeoAgent v1→v2 间隔一天，live site 地址以 v2 为准；引用 arXiv 条目时应注明版本号。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;8.4 需人工确认的性能数字（均为作者自述，本文件未独立复核）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;#7 FED-FWI：SSIM 0.804 / MSE 0.075（vs OT-FWI 0.626/0.212、Sobolev 0.695/0.134）；额外 GPU 显存 &amp;lt; 200 MiB。&lt;/li&gt;
&lt;li&gt;#3 PnP-Flow：乳腺 32 图块上中位整体 L2 1.56%（TV 1.52%）、病灶对比度误差 0.214（TV 0.263）、28/32 图块更优。&lt;/li&gt;
&lt;li&gt;#4 GeoAgent：九阶段管线 6–11 分钟；检索压缩工具上下文 12k→2k token。&lt;/li&gt;
&lt;li&gt;#5 Mean Flows：&quot;多数设定下一步生成误差低于多步扩散&quot;（作者限定语，非全部设定）。&lt;/li&gt;
&lt;li&gt;#10 DAS semblance：亚 dB 级耦合时变检测（跨季节）。&lt;/li&gt;
&lt;li&gt;#6 HypoNet PS：DONET 223 地震与 JMA 目录的一致性/海侧系统性偏浅。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;九、检索说明&lt;/h2&gt;
&lt;h3&gt;9.1 检索路径（全部可复现）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;arXiv 结构化检索&lt;/strong&gt;：&lt;code&gt;export.arxiv.org/api/query&lt;/code&gt;，多关键词（seismic / full waveform inversion / geophysical / seismology / physics-informed+wave / neural operator 等）+ &lt;code&gt;cat:physics.geo-ph&lt;/code&gt; 共 9 个查询合并，去重后 &lt;strong&gt;1,712 条&lt;/strong&gt;，按 &lt;code&gt;published&lt;/code&gt; 过滤窗口（2026-10-19 起）得 &lt;strong&gt;418 条&lt;/strong&gt;；再按地球物理关键词+分类筛出 &lt;strong&gt;80 条&lt;/strong&gt;候选。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;arXiv 全文核验&lt;/strong&gt;：&lt;code&gt;arxiv.org/html/{id}&lt;/code&gt; 抓取正文，核实 &lt;strong&gt;Code/Data Availability 章节、作者机构（&lt;code&gt;Affiliation:&lt;/code&gt; 字段）、实验模型、计时平台&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Crossref 期刊扫描&lt;/strong&gt;：&lt;code&gt;api.crossref.org/journals/{ISSN}/works&lt;/code&gt; 按窗口过滤，扫描 &lt;strong&gt;11 本期刊&lt;/strong&gt;（Geophysics 0016-8033、GJI 0956-540X、J. Appl. Geophys. 0926-9851、Geophys. Prospect. 1365-2478、JGR-Solid Earth 2169-9313、EPSL 0012-821X、J. Geodynamics 0264-3707 等）；候选逐条 &lt;code&gt;works/{DOI}&lt;/code&gt; 取作者/机构/卷期/摘要。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码仓库核验&lt;/strong&gt;：&lt;code&gt;api.github.com/repos/{owner}/{repo}&lt;/code&gt; 取存在性 / stars / license / pushed_at；&lt;strong&gt;必要时列出作者账号下全部仓库&lt;/strong&gt;（本期对 404 两条即用此法区分&quot;仓库未建&quot;与&quot;账号错误&quot;）；对论文给出的在线部署 URL 用 curl 实测 HTTP 状态。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;开源栈版本核验&lt;/strong&gt;：GitHub &lt;code&gt;releases/latest&lt;/code&gt; + &lt;strong&gt;PyPI JSON API 双源&lt;/strong&gt;（本期新增，原因见 8.3-1）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;历史去重&lt;/strong&gt;：对 4 份历史文件做 &lt;strong&gt;DOI / arXiv ID / 标题关键词&lt;/strong&gt; 三重字符串检索，零命中判为首次收录。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;9.2 两类条数分布&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;范围&lt;/th&gt;
&lt;th&gt;AI/地球物理&lt;/th&gt;
&lt;th&gt;传统方法&lt;/th&gt;
&lt;th&gt;合计&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;主榜 Top 10（实际）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;6&lt;/strong&gt;（#3/#4/#5/#6/#7/#8）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;4&lt;/strong&gt;（#1/#2/#9/#10）&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;提名区&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;7&lt;/strong&gt;（N2/N3/N4/N5/N6/N8/N9）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2&lt;/strong&gt;（N1/N7）&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;总计&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;13&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;配比达成情况&lt;/strong&gt;：主榜 &lt;strong&gt;6:4，目标严格达成&lt;/strong&gt;（上期 5:5 的偏差本期未复现）。排序仍按&quot;对本项目相关性&quot;而非类别 —— 首条为传统条目（OWL），理由见 #1 的启发栏。&lt;/p&gt;
&lt;h3&gt;9.3 历史重复 / 升级 / 新增（速览）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;线&lt;/th&gt;
&lt;th&gt;严格重复&lt;/th&gt;
&lt;th&gt;方向级重复&lt;/th&gt;
&lt;th&gt;升级&lt;/th&gt;
&lt;th&gt;新增方向&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AI/地球物理&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0 条&lt;/td&gt;
&lt;td&gt;2（生成先验家族连续第六期；DAS 相干性）&lt;/td&gt;
&lt;td&gt;4 项（PINN 走时业务化+PS 扩展；生成先验补算力账；概率电阻率参考产品化；网络接进 FWI 三件套化）&lt;/td&gt;
&lt;td&gt;3 项（LLM 合同约束系统；mean flow 一步波场生成；PnP 流先验接法）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;传统方法&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0 条&lt;/td&gt;
&lt;td&gt;1（DAS 相干性，与 AI 线共享）&lt;/td&gt;
&lt;td&gt;1 项（开源 FWI 基础设施旗舰化）&lt;/td&gt;
&lt;td&gt;3 项（多重散射对偶成像；密集台阵背景噪声断裂判读；DAS/台阵无先验质控）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;9.4 条数不足或偏差的原因说明&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;本期两类条数均不&quot;不足&quot;，主榜配比 6:4 严格达成，无偏差需要披露。&lt;/strong&gt; 供参考的候选池情况：AI 类可验证候选约 14 条（主榜用 6 + 提名 7 + 1 条 N2 计数说明），传统类可验证候选 8 条（主榜用 4 + 提名 2 + SWOT 数据同化条目 &lt;code&gt;2610.31409&lt;/code&gt; 因属物理海洋 DA、非地球物理主线未收录 + 冠层/沉积输运等 physics.geo-ph 条目相关性弱未收录）。&lt;strong&gt;无凑数。&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;9.5 诚实性声明&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;所有链接、作者、机构、日期、DOI、版本号、star 数、推送时间、HTTP 状态码，均来自 9.1 所述 API / HTML / curl 实测；凡未能核实的字段&lt;strong&gt;一律标注&quot;未验证&quot;并给出获取路径&lt;/strong&gt;，未做任何推断或补齐。&lt;/li&gt;
&lt;li&gt;两条&quot;论文声明代码公开但仓库 404&quot;的判定&lt;strong&gt;均已通过列出作者账号下全部仓库做二次确认&lt;/strong&gt;，排除账号拼写错误的可能。&lt;/li&gt;
&lt;li&gt;8.4 所列性能数字&lt;strong&gt;全部为作者自述&lt;/strong&gt;，本文件未独立复核任何数值结果。&lt;/li&gt;
&lt;li&gt;N5/N7 两条因 Crossref 无摘要，&lt;strong&gt;方法描述仅来自标题推断，已在条目内明确标注&quot;内容未验证&quot;&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;本文件生成过程&lt;strong&gt;仅做只读检索与单文件写入&lt;/strong&gt;；未提交任何作业、未删除或覆盖任何既有文件、未修改任何模型或数据。涉及的后续操作（clone 仓库、升级 SeisBench、复现实验）&lt;strong&gt;均只给方向建议，命令待人工确认后再执行&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>AI每周总结-地球物理 (2026-10-19)</title><link>https://tuoyuangui.github.io/website/posts/typora/ai%E6%AF%8F%E6%97%A5%E6%80%BB%E7%BB%93/ai%E6%AF%8F%E5%91%A8%E6%80%BB%E7%BB%93_2026-w43/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/ai%E6%AF%8F%E6%97%A5%E6%80%BB%E7%BB%93/ai%E6%AF%8F%E5%91%A8%E6%80%BB%E7%BB%93_2026-w43/</guid><pubDate>Mon, 19 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;AI每周总结 · 地球物理（2026-10-19）&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;口径声明（必读）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;{{project}}&lt;/code&gt; 未被注入&lt;/strong&gt;：本期沿用既定默认口径 &lt;strong&gt;AI + 深度学习 + HPC + 地震数据处理 + 全波形反演（FWI）&lt;/strong&gt;；若下游模板需要替换，请全局替换该口径即可。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;{{date}}&lt;/code&gt; = 2026-10-19（周一）&lt;/strong&gt;，ISO 周 = &lt;strong&gt;2026-W43&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;采集区间&lt;/strong&gt;：主窗口 &lt;strong&gt;2026-10-12 ~ 2026-10-19（8 天，含端点）&lt;/strong&gt;；同时把 10-09 ~ 10-11（W41 日报未覆盖的尾部）的条目作为&quot;补齐窗口&quot;处理，逐条注明。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;历史对比基准&lt;/strong&gt;：&lt;code&gt;{{history_dir}}&lt;/code&gt; 中最近 &lt;strong&gt;3 份&lt;/strong&gt;历史总结 —— &lt;code&gt;AI每周总结_2026-W41.md&lt;/code&gt;（published 2026-10-11）、&lt;code&gt;AI每周总结_2026-W39.md&lt;/code&gt;、&lt;code&gt;AI每周总结_2026-W38.md&lt;/code&gt;。&lt;strong&gt;W40 缺档&lt;/strong&gt;（详见第九节）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分类口径&lt;/strong&gt;：&lt;strong&gt;传统方法&lt;/strong&gt; = 以物理/数学/数值/信号处理/反演/成像/层析/地震干涉/走时/振幅为核心，不以 DL/ML 为主要创新（AI 仅作辅助/对比/后处理仍归传统）；&lt;strong&gt;AI/地球物理&lt;/strong&gt; = 以深度学习/机器学习/神经网络/基础模型/生成模型/强化学习为核心创新。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;两类条数分布（如实披露）&lt;/strong&gt;：&lt;strong&gt;主榜 10 条实际为 AI/地球物理 5 条 / 传统方法 5 条&lt;/strong&gt;。&lt;strong&gt;目标配比 6:4 未在主榜严格达成&lt;/strong&gt;，原因见 9.4：本期传统方法侧产出异常强（可验证候选 8 条）、且首条（结构约束 4D 叠前反演）相关性确实最高；&lt;strong&gt;为守住&quot;按相关性排序、不为配比硬塞&quot;的原则，未把低相关 AI 条目提进主榜&lt;/strong&gt;。&lt;strong&gt;若严格按 6:4 口径，可用提名区 N2（PINN + fParVI 3D 贝叶斯走时层析）替换 #9 或 #10。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;一、本期概览&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;项&lt;/th&gt;
&lt;th&gt;值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;覆盖区间&lt;/td&gt;
&lt;td&gt;2026-10-12 ~ 2026-10-19（+ 10-09~10-11 补齐窗口）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;精选条数&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;10 条&lt;/strong&gt;，实际 &lt;strong&gt;AI/地球物理 5 / 传统方法 5&lt;/strong&gt;（目标 6:4 未严格达成，偏差原因见 9.4）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;来源结构&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;期刊 6 条&lt;/strong&gt;（GJI ×3、&lt;em&gt;Geophysics&lt;/em&gt; ×3、JGR-SE ×1、&lt;em&gt;J. Appl. Geophys.&lt;/em&gt; ×1，其中 GJI ggag433 为补齐窗口）· &lt;strong&gt;arXiv 预印本 5 条&lt;/strong&gt;（其中 2610.14812/2610.15331 为补齐窗口）· 注：一条条目可能同时有 arXiv 与期刊版本，此处按&quot;首选可核验载体&quot;计&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;去重结果&lt;/td&gt;
&lt;td&gt;与 W38/W39/W41 逐条比对（DOI / arXiv ID / 标题关键词三重检索）：&lt;strong&gt;10 条全部为首次收录&lt;/strong&gt;；但有 &lt;strong&gt;2 条属&quot;方向升级&quot;&lt;/strong&gt;（见 5.A / 5.B）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;最强可复现资产&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;github.com/DeepWave-KAUST/DiffVMB3D-pub&lt;/code&gt;（MIT，实测存在）&lt;/strong&gt;、&lt;strong&gt;&lt;code&gt;github.com/AI4EPS/EQNet&lt;/code&gt;（57★，实测 2026-10-15 仍有推送）&lt;/strong&gt;、&lt;strong&gt;&lt;code&gt;github.com/jiaweish23/fracture-latent-diffusion&lt;/code&gt;（MIT，实测存在）&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⚠️ 代码风险项&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;github.com/hu567/DiffSpecMatch&lt;/code&gt; 实测 HTTP 404&lt;/strong&gt;（论文声明&quot;发表后公开&quot;）→ 标&quot;未验证&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;开源栈状态&lt;/td&gt;
&lt;td&gt;Devito &lt;strong&gt;v4.8.23 / 2026-08-07&lt;/strong&gt;、ObsPy &lt;strong&gt;1.5.1 / 2026-08-28&lt;/strong&gt;、SeisBench &lt;strong&gt;v0.12.0 / 2026-06-24&lt;/strong&gt; —— &lt;strong&gt;连续五期无新版本&lt;/strong&gt;（本次实测确认）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;本期主线&lt;/td&gt;
&lt;td&gt;①&lt;strong&gt;贝叶斯反演正在从&quot;点估计&quot;全面转向&quot;后验 + 不确定度&quot;&lt;/strong&gt;（传统线与 AI 线各出 2 条、方向高度收敛）；②&lt;strong&gt;传统方法出现&quot;物理模型修补&quot;与&quot;目标函数重设计&quot;两条硬核支线&lt;/strong&gt;；③&lt;strong&gt;AI 线的注意力从&quot;生成什么&quot;转向&quot;如何把神经算子正确接进物理梯度&quot;。&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;二、本期精选 Top 10（整体按相关性排序；AI 6 + 传统 4）&lt;/h2&gt;
&lt;h3&gt;1. 结构约束的四维叠前反演（全局多维矩阵乘法）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Global Structure-Constrained 4D prestack inversion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Qingwei Zhao（赵庆伟）、Xuehua Chen（陈学华）、Shengyi Wang、Cong Wang、Gang Zhao —— ⚠️ 论文未在 arXiv HTML 中给出可解析的机构字段，&lt;strong&gt;机构未验证&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.16085（v1，2026-10-12，physics.geo-ph）· https://arxiv.org/abs/2610.16085&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：把反演模型表为&lt;strong&gt;四维张量&lt;/strong&gt;（空间 × 参数），用&lt;strong&gt;多维矩阵乘法&lt;/strong&gt;在各方向上构造观测数据张量，从而实现&quot;全局&quot;（非逐道）反演；引入&lt;strong&gt;多维正则化&lt;/strong&gt;（分别控制不同维度的约束强度），并把地震解释得到的&lt;strong&gt;层位与断层约束&lt;/strong&gt;注入反演。核心卖点是&quot;在保持计算效率的前提下提升复杂构造区反演稳健性&quot;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：合成数据 + 实测数据（摘要明确写 &quot;Both synthetic and field data experiments demonstrate…&quot;；⚠️ 具体工区/模型未在摘要中给出）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️ 未验证）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;传统方法&lt;/strong&gt;（多维正则化反演 / 张量代数；无 DL 组件）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目（AI+DL+HPC+地震数据处理+FWI）的启发&lt;/strong&gt;：这条的价值不在&quot;又一篇叠前反演&quot;，而在&lt;strong&gt;它把&quot;结构约束&quot;做成可用矩阵乘法批量施加的算子&lt;/strong&gt;。如果我们的 FWI/反演流程里已有解释层位与断层（或可从成像结果自动提取），这类 &lt;strong&gt;&quot;结构先验作为低秩/张量约束、以 matmul 形式实现&quot;&lt;/strong&gt; 的写法，比逐道加正则更容易在 GPU 上批量化 —— 与&quot;结构约束&quot;在 AI 侧的扩散/INR 路线形成&lt;strong&gt;同一物理先验的两种数值实现&lt;/strong&gt;，可做交叉验证。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据（标题/作者/日期/分类）经 API 核实；⚠️ &lt;strong&gt;机构未验证&lt;/strong&gt;、量化增益未验证、代码未声明。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;2. ⭐ 扩散正则化退火 SVGD 的结构感知贝叶斯 FWI&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Structure-aware Bayesian full waveform inversion via diffusion-regularized Stein variational gradient descent&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Chao Li、Mrinal K. Sen、Sergey Fomel、Yangkang Chen —— &lt;strong&gt;The University of Texas at Austin&lt;/strong&gt;（HTML 中 &lt;code&gt;Affiliation:&lt;/code&gt; 字段已核验）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.19187（v1，2026-10-13，physics.geo-ph）· https://arxiv.org/abs/2610.19187&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：把&lt;strong&gt;退火 SVGD（ASVGD）&lt;strong&gt;的粒子式贝叶斯 FWI 与&lt;/strong&gt;扩散模型隐式先验&lt;/strong&gt;结合：用 DDPM（SDE 形式的前向/逆向扩散）在速度模型上学习结构先验，把它作为 SVGD 更新中的&lt;strong&gt;隐式正则项&lt;/strong&gt;，替代手工先验；粒子群近似后验，从而在给出模型的同时给出&lt;strong&gt;不确定度&lt;/strong&gt;。论文第 4 节专门讨论了&quot;扩散先验如何注入结构信息&quot;&quot;初始粒子数的影响&quot;&quot;噪声水平对不确定度评估的影响&quot;&quot;扩散正则的关键因素与计算代价&quot;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：&lt;strong&gt;Marmousi&lt;/strong&gt;（100×216 网格，20 m 间距，平滑版本作初始模型）+ &lt;strong&gt;实测数据&lt;/strong&gt;（第 3.1/3.2 节）；训练先验使用 &lt;strong&gt;GeoFWI 数据集&lt;/strong&gt;（约 5 万个速度模型，2–11 层，1500–4500 m/s，100×100 网格），来自 &lt;code&gt;https://github.com/aaspip/geofwi&lt;/code&gt;（Li et al., 2026）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：⚠️ &lt;strong&gt;本工作代码未提供&lt;/strong&gt;。全文&lt;strong&gt;无 &quot;Code availability&quot; 章节&lt;/strong&gt;（已实测检索为空）；文中出现的 &lt;code&gt;github.com/aaspip/geofwi&lt;/code&gt; &lt;strong&gt;是 GeoFWI 数据集的地址，不是本文方法代码&lt;/strong&gt; —— 这一点必须区分，不可混用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;AI/地球物理&lt;/strong&gt;（扩散生成模型 + 粒子变分推断为核心创新）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;本期 AI 线最有工程价值的一条。&lt;/strong&gt; 三点直接可用：①&lt;strong&gt;ASVGD 天然的&quot;粒子并行&quot;结构&lt;/strong&gt;与我们的多卡/多节点部署契合——每个粒子是一次独立 FWI 正演+伴随，通信仅发生在粒子间的核函数加权，属&lt;strong&gt;弱通信、强并行&lt;/strong&gt;，比 HMC 更适配 HPC；②&lt;strong&gt;把扩散先验当正则项而不是当生成器&lt;/strong&gt;，避免了&quot;潜空间低维流形&quot;问题（对照第 3 条）；③论文给了&quot;噪声水平 vs 不确定度评估&quot;的敏感性分析，这对我们要不要上报 UQ 是直接的判据。&lt;strong&gt;建议作为&quot;FWI 不确定度&quot;方向的首选复现对象&lt;/strong&gt;（用 GeoFWI 数据 + 自建 DDPM，成本可控）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据、四位作者机构、代码缺失事实经全文实测核实；⚠️ 量化收益（模型误差/不确定度标定）需读全文，摘要未给数字。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;3. 贝叶斯反演&quot;逃出生成器范围&quot;：减少生成式神经网络的非物理约束&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Bayesian Inversion Beyond the Generator&apos;s Range: Reducing Non-physical Constraints from Generative Neural Networks&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Pratyay Roy、Xuebin Zhao、Andrew Curtis —— &lt;strong&gt;University of Edinburgh&lt;/strong&gt;（通讯作者邮箱 &lt;code&gt;Andrew.Curtis@ed.ac.uk&lt;/code&gt; 已核验）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.16614（v1，2026-10-12，physics.geo-ph）· https://arxiv.org/abs/2610.16614&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：&lt;strong&gt;直击潜空间反演的根本缺陷&lt;/strong&gt;。作者论证：地球结构本身不是低维的，且所有 GNN 都有训练误差，因此把反演参数限制在 GNN 潜空间里，等于&lt;strong&gt;把解永久锁在一个低维流形上&lt;/strong&gt; —— &quot;从数学上讲，潜空间反演是根本性失败的：它通常连真实地球的最优高维逼近都复现不出来&quot;。对策是引入**&quot;escaping prior&quot;（逃逸先验）分布**，允许后验离开 GNN 生成的解流形（但仍以 GNN 作引导），并用&lt;strong&gt;层级贝叶斯&lt;/strong&gt;让先验强度&lt;strong&gt;后验地&lt;/strong&gt;依数据与正演函数自适应。附录给出 VAE / AAE / DAAE 三种 GNN 的训练细节与逃逸样本构造。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：&lt;strong&gt;低维合成算例&lt;/strong&gt;（在二维参数空间中定义在一维流形上的逃逸先验），与标准潜空间反演、模型空间反演（均匀先验）对比；论文第 5 节用&lt;strong&gt;多个地质速度模型&lt;/strong&gt;做水平/垂直剖面与后验相关性分析。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️ 未验证）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;AI/地球物理&lt;/strong&gt;（生成模型先验的贝叶斯推断理论修正）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;这是一条&quot;方法论红线&quot;级别的文献，建议列入组内必读。&lt;/strong&gt; 我们如果打算用扩散/GAN/VAE 先验做 FWI，这条明确指出&lt;strong&gt;只做潜空间优化是不够的&lt;/strong&gt;，必须允许后验越出先验支撑集，否则&quot;不确定度会被系统性低估、且可能连真解都够不到&quot;。它与本期 #2 形成互补：&lt;strong&gt;#2 是把生成先验降级为正则项（不改参数化），#3 是承认参数化本身有偏并显式建模这种偏差&lt;/strong&gt; —— 后者更彻底，但代价是后验采样成本更高。&lt;strong&gt;行动上：先读这篇，再决定我们的 UQ 路线走&quot;正则化&quot;还是&quot;逃逸先验&quot;。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据、机构、论证要点经全文核实；⚠️ 仅在&lt;strong&gt;低维合成问题&lt;/strong&gt;上验证（作者自述），&lt;strong&gt;高维实用性未经证实&lt;/strong&gt;、代码未声明。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;4. 学习型预条件子的全波形反演（JI-FNO）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Full Waveform Inversion with a Learned Preconditioner&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Jeongjin Park（&lt;strong&gt;单作者&lt;/strong&gt;；⚠️ 机构未验证 —— arXiv HTML 的 affiliation 字段未解析出，摘要亦未提及）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.15331（v1，2026-10-11，&lt;strong&gt;cs.LG 主分类 / physics.geo-ph 交叉&lt;/strong&gt;）· https://arxiv.org/abs/2610.15331&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：用&lt;strong&gt;在 RTM 图像上训练的神经算子&lt;/strong&gt;为 FWI 提供&lt;strong&gt;学习型预条件子&lt;/strong&gt;：神经预条件子把&quot;学习到的 RTM 映射的法算子（normal operator）&quot;作用到&lt;strong&gt;真实的 Devito FWI 梯度&lt;/strong&gt;上（即梯度仍由真伴随算出，只用网络改造梯度的度量）。对比三条路线：投影 FWI（baseline）、标准 &lt;strong&gt;FNO&lt;/strong&gt; 预条件、&lt;strong&gt;JI-FNO（Jacobian-informed FNO）&lt;/strong&gt; 预条件。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：合成算例（正文引用了 Jones et al. 2012 的复杂合成模型构建工作，具体模型见 §V；⚠️ 摘要未列模型名）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️ 未验证；但方法基于 &lt;strong&gt;Devito&lt;/strong&gt;，与开源栈直接兼容）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;AI/地球物理&lt;/strong&gt;（神经算子作为反演算子的一部分）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;本期&quot;最值得警惕也最有信息量&quot;的一条，因为它报告的是失败模式。&lt;/strong&gt; 两个结论直接改变工程判断：
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;标准 FNO 预条件子不稳定、模型恢复更差&lt;/strong&gt;（同一框架下，只换 FNO → JI-FNO 就从&quot;不可用&quot;变&quot;最好&quot;）→ &lt;strong&gt;&quot;用神经算子加速 FWI&quot;不是一个可以无脑套用的结论，对 Jacobian 的正确处理是成败关键&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;作者识别出一个**&quot;目标函数空间错配&quot;（objective-space mismatch）失效模式**：把&quot;神经 RTM 输出&quot;直接拿去匹配 FWI 梯度，会产生不一致的目标函数，得不到可靠下降方向 → &lt;strong&gt;正确做法是让网络作用于&quot;算子/度量&quot;，而不是作用于&quot;梯度的数值&quot;&lt;/strong&gt;。
&lt;strong&gt;对我们的启发：任何&quot;用网络替代伴随/替代 Hessian&quot;的方案，必须验证梯度方向与真梯度的一致性（内积 &amp;gt; 0 且尺度可比），否则优化会在中后期悄悄发散。&lt;/strong&gt; 这条给了我们一个可执行的验收测试。&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据、摘要全文、分类经 API 与 abs 页核实；⚠️ &lt;strong&gt;作者机构未验证&lt;/strong&gt;；量化指标（model error / residual decay）为定性表述，未给数字；代码未声明。&lt;strong&gt;注：该文为&quot;项目式（project）&quot;表述，篇幅/完整性可能弱于正式论文。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;5. ⭐ 4-D TFXK 目标函数：面向 DAS 波形反演的时空相干性失配&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：A 4-D spatio-temporal misfit function for waveform inversion of Distributed Acoustic Sensing data&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Eyal Shimony、Ariel Lellouch —— &lt;strong&gt;Tel Aviv University&lt;/strong&gt;（⚠️ 机构依作者长期单位判断，Crossref 未给 affiliation 字段）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;Geophysical Journal International&lt;/em&gt; · https://doi.org/10.1093/gji/ggag448（published-online &lt;strong&gt;2026-10-16&lt;/strong&gt;，Crossref created 2026-10-15；⚠️ 卷/期/页码尚未分配，early view）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：标准 FWI 目标函数在&quot;近地表强局部散射主导&quot;的数据上难以分辨深部结构。作者提出 &lt;strong&gt;4-D TFXK（time–frequency–space–wavenumber）目标函数&lt;/strong&gt;，&lt;strong&gt;显式强制空间相干性&lt;/strong&gt;，利用 DAS 的高密度空间采样；分别推导了 &lt;strong&gt;相位失配&lt;/strong&gt;与&lt;strong&gt;包络失配&lt;/strong&gt;两种情形下的&lt;strong&gt;伴随源&lt;/strong&gt;。物理效果：抑制浅层非均质的局部散射 → &lt;strong&gt;把核（kernel）灵敏度推向更深、更大尺度的目标&lt;/strong&gt;；数学效果：4-D 映射&lt;strong&gt;平滑了目标函数拓扑、缓解局部极小、改善收敛&lt;/strong&gt;。论文还讨论了弯曲光纤几何的处理（弧长参数化、局部多项式傅里叶变换 LPFT、完整矢量波数方法）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：&lt;strong&gt;2D 合成算例（含强浅层非均质）&lt;/strong&gt;；⚠️ 摘要未含实测数据结果&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️ 未验证）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;传统方法&lt;/strong&gt;（目标函数/伴随源设计；无 DL 组件）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;本期传统线最&quot;可迁移&quot;的一条，而且迁移对象不止 DAS。&lt;/strong&gt; 作者明确写道：&quot;我们的方法的基本原理可扩展到使用传统密集节点台阵的结构反演。&quot; 具体可用点：
&lt;ul&gt;
&lt;li&gt;我们做浅层强非均质区（如黄土塬、山前带）的 FWI 时，&lt;strong&gt;局部散射把灵敏度锁在近地表&lt;/strong&gt;是常见病；TFXK 的&quot;沿空间-波数维强制相干&quot;相当于一个&lt;strong&gt;物理意义上正确的预处理/加权&lt;/strong&gt;，比随手加平滑正则更有依据；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;伴随源是显式推导的&lt;/strong&gt;，意味着实现成本可控（不依赖自动微分框架的隐式处理）；&lt;/li&gt;
&lt;li&gt;与第 6 条（黏弹 Q-RTM）合用：一个改&quot;目标函数&quot;，一个改&quot;正演算子&quot;，是同一套代码里两个正交的升级点。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ Crossref 核验标题/作者/DOI/上线日期/摘要全文（含&quot;2D synthetic&quot;与&quot;可推广到节点台阵&quot;的原句）；⚠️ &lt;strong&gt;仅 2D 合成&lt;/strong&gt;、卷期页码待定、机构未在 Crossref 给出、代码未声明。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;6. ⭐ GSLS 型黏弹波方程的高效实现与衰减补偿 Q-RTM&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Efficient viscoelastic wave propagation and attenuation-compensated reverse-time migration&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Yabing Zhang、Hejun Zhu、Yang Liu、Jun Lu —— ⚠️ &lt;strong&gt;Crossref 未提供 affiliation，机构未验证&lt;/strong&gt;（Hejun Zhu 与 UT Dallas 的关联属常识性判断，&lt;strong&gt;未经本次核实，不作断言&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;Geophysics&lt;/em&gt; · https://doi.org/10.1190/geo-2025-0638（published-online &lt;strong&gt;2026-10-14&lt;/strong&gt;；⚠️ 卷/期/页码未分配，early view）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：分数阶黏弹波方程要做 Q-RTM，但因为含多个&lt;strong&gt;分数阶拉普拉斯算子&lt;/strong&gt;，通常只能靠&lt;strong&gt;谱方法&lt;/strong&gt;，计算代价高。本文提出一种 &lt;strong&gt;GSLS（广义标准线性固体）型近似&lt;/strong&gt;：①推导出&lt;strong&gt;适合有限差分实现&lt;/strong&gt;的黏弹波方程，②&lt;strong&gt;方程中显式包含品质因子 Q&lt;/strong&gt;（不同于常规 GSLS 需要先拟合松弛参数），从而可直接做 Q 基的模拟与反演；③引入&lt;strong&gt;补偿项&lt;/strong&gt;得到补偿波方程用于 Q-RTM；④给出&lt;strong&gt;改进的 P/S 波分解算法&lt;/strong&gt;降低黏弹 RTM 成像的额外成本。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：波场模拟 + Q-RTM 数值实验（合成）；结论为&quot;与分数阶黏弹波方程结果相当，但计算成本显著降低&quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️ 未验证）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;传统方法&lt;/strong&gt;（黏弹本构近似 + 有限差分正演 + RTM 成像）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;这是&quot;把谱方法换成有限差分&quot;的经典降本路线，与我们 HPC 侧的核心关切完全一致：&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;降本的本质是&quot;去 FFT&quot;&lt;/strong&gt; —— 每次时间步不再需要全局傅里叶变换，意味着&lt;strong&gt;更好的并行扩展性&lt;/strong&gt;（FFT 的全局通信在大规模分解下是瓶颈）与&lt;strong&gt;更低的显存占用&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&quot;方程显式含 Q&quot;&lt;/strong&gt; 使得 Q 可以像速度一样成为反演变量，为 &lt;strong&gt;Q-FWI / 衰减补偿 FWI&lt;/strong&gt; 提供了比&quot;松弛参数拟合 + 链式法则&quot;更干净的实现路径（可对照 W41 收录的 Q-FWI CO₂ 监测那条，方向相连）；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;改进的 P/S 分解&lt;/strong&gt;是黏弹 RTM 里长期被忽视的成本项，值得单独看它的实现。
&lt;strong&gt;建议：若我们已有声学 FD 正演，这条是&quot;升级到黏弹&quot;的最低阻力路径。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ Crossref 核验标题/作者/DOI/上线日期/摘要全文；⚠️ 仅数值（合成）实验、卷期页码待定、&lt;strong&gt;机构未验证&lt;/strong&gt;、代码未声明、成本降低幅度摘要未给数字。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;7. ⭐ EQNet2：以事件为中心的多台站 Transformer 地震监测&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Event-Centric Earthquake Monitoring with a Multi-Station Transformer&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Haoyu Wang、Weiqiang Zhu —— &lt;strong&gt;University of California, Berkeley（Dept. of Earth &amp;amp; Planetary Science / Berkeley Seismology Laboratory）&lt;/strong&gt;（HTML affiliation 已核验）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.17404（v1，2026-10-12，physics.geo-ph）· https://arxiv.org/abs/2610.17404&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：&lt;strong&gt;几何感知（geometry-aware）的多台站 Transformer&lt;/strong&gt;，&lt;strong&gt;联合&lt;/strong&gt;预测：震相到时、初动极性、震源位置、震级，以及把拾取&lt;strong&gt;关联成事件&lt;/strong&gt;——把过去&quot;逐台站、逐任务串行&quot;的地震监测流程&lt;strong&gt;合并为一次前向&lt;/strong&gt;。核心论点是两条：①逐台站独立处理&lt;strong&gt;丢弃了台网内到时的一致性&lt;/strong&gt;；②各任务串行执行&lt;strong&gt;割裂了描述同一地震的信息&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：北加州测试集；&lt;strong&gt;2019 Ridgecrest&lt;/strong&gt; 序列与&lt;strong&gt;旧金山湾区&lt;/strong&gt;连续波形（含 2025 Berkeley 地震）；训练数据为 &lt;strong&gt;CEED 数据集&lt;/strong&gt;（Hugging Face 公开）；波形与目录来自 SCEDC / NCEDC&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：✅ &lt;strong&gt;&lt;code&gt;https://github.com/AI4EPS/EQNet&lt;/code&gt;&lt;/strong&gt;（论文 §Code Availability 明确指向；GitHub API 实测：&lt;strong&gt;57★，license &lt;code&gt;NOASSERTION&lt;/code&gt;（非标准许可，需人工确认条款），最后推送 2026-10-15&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;AI/地球物理&lt;/strong&gt;（多台站 Transformer 为核心创新）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;本期&quot;可直接上手&quot;程度最高的一条。&lt;/strong&gt; 三点：
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&quot;一次前向出五件事&quot;&lt;/strong&gt; 是流程重构，不是模型涨点 —— 关联（association）从后处理变成网络内生的注意力，这直接对应我们做&lt;strong&gt;微地震/诱发地震监测&lt;/strong&gt;时的痛点（拾取准但关联差，事件目录碎）；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;几何感知&lt;/strong&gt; 意味着台站坐标进入模型，&lt;strong&gt;可以跨台网迁移&lt;/strong&gt;——这对我们自有台网的稀疏/不规则布设很重要；&lt;/li&gt;
&lt;li&gt;代码&lt;strong&gt;两周内仍在活跃更新&lt;/strong&gt;，且作者是 AI4EPS 团队（SeisBench 生态的核心贡献者），&lt;strong&gt;大概率能与 SeisBench 数据管线对接&lt;/strong&gt;。
&lt;strong&gt;建议：列入&quot;下季度可试点&quot;清单，先跑 Ridgecrest 复现，再评估能否直接吃我们自己的连续波形。&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据 + 机构 + 代码仓库（存在性/star/许可/推送时间）四项均实测核实；摘要给出 P 波精度/召回 0.9824（补充表 1，&lt;strong&gt;单一阈值 0.3 下&lt;/strong&gt;）；⚠️ &lt;strong&gt;许可为 NOASSERTION，商用条款需人工确认&lt;/strong&gt;；完整性能对比需读全文。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;8. 时移 VSP 全波形反演的不确定度量化：HMC 与 SVGD 的等算力对比&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Uncertainty quantification in time-lapse full-waveform inversion of vertical seismic profiling data: contrasting the Hamiltonian Monte Carlo and Stein Variational Gradient Descent methods&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Jinji Li、Kris Innanen、Alison Malcolm —— ⚠️ &lt;strong&gt;Crossref 未提供 affiliation，机构未验证&lt;/strong&gt;（三位作者与 University of Calgary / Memorial University 的关联属常识判断，&lt;strong&gt;未经本次核实&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;Geophysics&lt;/em&gt; · https://doi.org/10.1190/geo-2025-1009（published-online &lt;strong&gt;2026-10-14&lt;/strong&gt;；⚠️ 卷/期/页码未分配，early view）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：时移 FWI（TL-FWI）在 CO₂ 地质封存监测中很关键，但强非线性 + 基线/监测采集不一致 → 必须做 UQ。论文在&lt;strong&gt;匹配的计算预算&lt;/strong&gt;下，对比两种贝叶斯方法：&lt;strong&gt;HMC&lt;/strong&gt;（随机采样 + 梯度提议，构造后验）与 &lt;strong&gt;SVGD&lt;/strong&gt;（确定性演化的粒子群，近似后验），在 &lt;strong&gt;2D VSP&lt;/strong&gt; 场景下考察注入引起的速度异常。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：2D VSP 时移算例（合成；⚠️ 摘要未含实测）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️ 未验证）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;传统方法&lt;/strong&gt;；但&lt;strong&gt;边界存疑，需人工拍板&lt;/strong&gt;。按用户定义（AI 仅辅助/对比/后处理才归传统），本文的 SVGD 是&lt;strong&gt;一种粒子式变分推断算法&lt;/strong&gt;，并非神经网络/深度学习模型，故归传统；但它与本期 #2 的 ASVGD（AI 线）共用同一套 SVGD 数学内核。&lt;strong&gt;这正是 5.C 所指&quot;分类边界失效&quot;的具体例证 —— 若组内口径认为&quot;变分推断也算 ML&quot;，则本条应改归 AI/地球物理。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;这条与本期 #2 构成一组&quot;必须并读&quot;的对照，结论相当反直觉：&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;两种方法&lt;strong&gt;都能恢复注入引起的主速度异常&lt;/strong&gt;，但&lt;strong&gt;表达不确定度的方式不同&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HMC&lt;/strong&gt;：不确定度场偏&quot;弥散&quot;，在&lt;strong&gt;深部与井外照明弱区越来越难以解释&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SVGD&lt;/strong&gt;：不确定度&lt;strong&gt;被采集几何强组织&lt;/strong&gt;，能把大不确定度更明确地放在约束弱的位置 —— &lt;strong&gt;但代价是后验均值与剖面继承了更强的&quot;照明形状伪影&quot;&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;作者的结论：二者的区别&lt;strong&gt;不是&quot;谁的不确定度更准&quot;，而是&quot;有限算力被转换成了哪一类后验信息&quot;&lt;/strong&gt;。
&lt;strong&gt;对我们的直接意义：如果要做 UQ 且算力受限，选 HMC 会得到&quot;说不清的不确定度&quot;，选 SVGD 会得到&quot;说得清但被采集几何污染的不确定度&quot;。这决定了我们对外交付 UQ 图时应当配什么说明文字。&lt;/strong&gt; 与 #2 的 ASVGD（退火 SVGD）连起来看：&lt;strong&gt;SVGD 家族在 FWI-UQ 里已经形成&quot;效率优先&quot;的谱系。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ Crossref 核验标题/作者/DOI/上线日期/摘要全文（含&quot;matched computational budget&quot;与两类后验差异的原句）；⚠️ &lt;strong&gt;仅 2D VSP 合成&lt;/strong&gt;、卷期页码待定、&lt;strong&gt;机构未验证&lt;/strong&gt;、代码未声明、无量化指标。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;9. 时域扩展源 FWI（ES-FWI）用于长偏移距 OBS 数据：东南海槽实例&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Seismic Imaging of the Crust From Long-Offset Ocean-Bottom Seismometer Data Using Time-Domain Extended-Source Full-Waveform Inversion: Application to the Eastern Nankai Trough, Japan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Gaoshan Guo、Stéphane Operto、Jean-Xavier Dessa —— ⚠️ &lt;strong&gt;Crossref 未提供 affiliation&lt;/strong&gt;（Operto 的 Géoazur/CNRS 关联属常识判断，&lt;strong&gt;未经本次核实&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;Journal of Geophysical Research: Solid Earth&lt;/em&gt; · https://doi.org/10.1029/2025jb033081（&lt;strong&gt;Vol. 131, Issue 10&lt;/strong&gt;；published-online &lt;strong&gt;2026-10-15&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：长偏移距 OBS 的壳幔尺度 FWI 受&lt;strong&gt;周期跳跃（cycle skipping）&lt;strong&gt;制约（波长数多 + 波形复杂 → 对时移误差极敏感）。本文评估新近发展的&lt;/strong&gt;时域扩展源（ES-）FWI&lt;/strong&gt;：先用&quot;实验源 + 散射源&quot;之和构成的扩展源&lt;strong&gt;重建与实测数据良好拟合的波场&lt;/strong&gt;，其中散射源由&quot;虚拟测量的散射数据&quot;残差&lt;strong&gt;逐次最小二乘估计&lt;/strong&gt;；再&lt;strong&gt;固定重建波场、通过最小化散射源来更新模型&lt;/strong&gt;，把藏在散射源里的扰动量转移到背景模型。两类优化交替进行直至收敛（数据残差与散射源同时趋零）。流程：&lt;strong&gt;初至走时层析给初始模型 → 多尺度 ES-FWI → 到线性域后用常规 FWI 精修&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：&lt;strong&gt;东南海槽（eastern Nankai）实测长偏移距 OBS 数据&lt;/strong&gt; —— 本期唯一一条&quot;实测 + 大尺度&quot;的传统方法条目&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️ 未验证）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;传统方法&lt;/strong&gt;（扩展源反演 / 波场重建 + 模型更新交替优化；无 DL 组件）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;这是&quot;对付周期跳跃&quot;的非 AI 主流解法里最成熟的一支，且已在大尺度实测上跑通。&lt;/strong&gt; 关键可搬运点：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ES-FWI 与常规 FWI 不是替代关系而是接力关系&lt;/strong&gt;（&quot;到线性域后交回常规 FWI 降残差&quot;）——这个&lt;strong&gt;分段策略&lt;/strong&gt;比&quot;一个目标函数打到底&quot;更工程化；&lt;/li&gt;
&lt;li&gt;交替优化的&lt;strong&gt;每次迭代成本&lt;/strong&gt;是常规 FWI 的倍数（多了波场重建），但&lt;strong&gt;收敛所需迭代数可能大幅下降&lt;/strong&gt;；作者在第 4 节讨论了分辨率结构，值得核对他们的成本核算口径；&lt;/li&gt;
&lt;li&gt;与本期 #5（TFXK 失配）互补：#5 改&quot;失配函数的维度&quot;，#9 改&quot;未知量的维度（扩展源）&quot;，两者都是&lt;strong&gt;在目标函数层面绕开非线性的正统做法&lt;/strong&gt;。
&lt;strong&gt;建议：作为我们长偏移距/深部成像项目的&quot;保底方案&quot;列入技术选型对比表。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ Crossref 核验标题/作者/DOI/卷期/上线日期/摘要全文（&quot;more accurate than FWI&quot;为作者结论）；⚠️ &lt;strong&gt;机构未验证&lt;/strong&gt;、代码未声明、定量对比（误差/成本）摘要未给出。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;10. 潜扩散模型生成二维/三维裂缝网络（稀疏观测条件化）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Latent Diffusion Modeling of Two- and Three-dimensional Fracture Networks with Sparse Observation Conditioning&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Jiawei Shen、Hongkyu Yoon、Jonghyun Lee —— ⚠️ &lt;strong&gt;HTML affiliation 字段未解析出，机构未验证&lt;/strong&gt;（Sandia / University of Hawaii 的关联属推测，&lt;strong&gt;不作断言&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.14412（v1，2026-10-10，physics.geo-ph）· https://arxiv.org/abs/2610.14412&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：&lt;strong&gt;VAE 压缩 + EDM（Elucidated Diffusion Model）&lt;/strong&gt; 的两级结构：裂缝与基质表示为二值场，由 VAE 压成紧凑&lt;strong&gt;空间潜表示&lt;/strong&gt;，再由 EDM 学其分布；&lt;strong&gt;3D 模型直接在原生体数据上工作&lt;/strong&gt;，重建目标专门设计以保稀疏、细薄的裂缝结构；稀疏钻孔观测通过&lt;strong&gt;条件编码器 + classifier-free guidance + diffusion posterior sampling&lt;/strong&gt; 注入。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：2D 与 3D 裂缝网络（合成/统计建模）；生成集合复现关键裂缝统计量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：✅ &lt;strong&gt;&lt;code&gt;https://github.com/jiaweish23/fracture-latent-diffusion&lt;/code&gt;&lt;/strong&gt;（论文 §Code Availability 明确指向；GitHub API 实测：&lt;strong&gt;0★，MIT，最后推送 2026-09-26&lt;/strong&gt;；论文还提供了 Supplementary Tables S1–S4 的超参数）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：&lt;strong&gt;AI/地球物理&lt;/strong&gt;（潜扩散 + 扩散后验采样为核心创新）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;注意它的位置：这是&quot;生成式模型 + 稀疏观测&quot;这一组技术在&quot;非平稳、非连续目标&quot;上的样板。&lt;/strong&gt; 三点：
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;3D 潜扩散&quot;直接在体上做&quot;而非逐切片&lt;/strong&gt; —— 与我们熟悉的 2D→3D 拼接路线（对照本期提名区的 depth-as-channel）是两条对立路线，&lt;strong&gt;裂缝这类薄结构恰是切片法最容易断的地方&lt;/strong&gt;，可作为选型依据；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;三类条件化手段的组合（编码器 / CFG / DPS）&lt;/strong&gt; 是当前&quot;稀疏井约束生成&quot;的标准三件套，&lt;strong&gt;做法可整体搬到&quot;稀疏井约束速度建模&quot;&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;代码 MIT + 有超参表 → &lt;strong&gt;复现门槛低&lt;/strong&gt;，适合作为生成式先验的练手工程。
&lt;strong&gt;排序说明：本条排在末位，是因为它与&quot;地震波场/速度建模&quot;隔了一层（属岩石物性/裂缝建模），相关性弱于前 9 条，但方法论价值高。&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据 + 代码仓库（存在性/许可/推送时间）+ 论文 Code Availability 章节均实测核实；⚠️ &lt;strong&gt;机构未验证&lt;/strong&gt;；摘要未给出量化指标（统计量&quot;复现良好&quot;为定性表述）。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;三、本期提名区（未进 Top 10，但值得记录；不计入 10 条）&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;只列&lt;strong&gt;已核实元数据&lt;/strong&gt;的条目，字段从简。排序按&quot;与我方相关性&quot;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;标题&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;载体（已核验）&lt;/th&gt;
&lt;th&gt;一句话价值&lt;/th&gt;
&lt;th&gt;验证状态&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;N1&lt;/td&gt;
&lt;td&gt;A Hooke–Kjartansson model of seismic wave propagation in viscoelastic media&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;&lt;em&gt;GJI&lt;/em&gt; · https://doi.org/10.1093/gji/ggag435（published 2026-10-13；Qiang Xu / Jiashun Yao / Yanghua Wang）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;修补常 Q 模型的物理缺陷&lt;/strong&gt;：Kjartansson 模型相速度在零频趋于 0，与静态弹性行为矛盾；H–K 模型用 Hooke 弹簧与分数阶 Kjartansson 元件并联，保住常 Q 衰减特性而给出&lt;strong&gt;有限的零频相速度&lt;/strong&gt;；两个参数（q 控制弹性贡献与 DC 相速度极限，β 控制衰减/频散随频率的变化）；&lt;strong&gt;证明本构算子满足最小相位条件&lt;/strong&gt;（因果稳定）；用 4 组公开岩石实验数据（页岩、干碳酸盐、流体饱和岩）拟合，&lt;strong&gt;优于原常 Q 模型，尤以含流体岩为甚&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ Crossref 全文摘要；⚠️ 代码未声明&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N2&lt;/td&gt;
&lt;td&gt;Bayesian three-dimensional seismic travel-time tomography for active- and passive-source seismic data using physics-informed neural networks&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;&lt;em&gt;GJI&lt;/em&gt; · https://doi.org/10.1093/gji/ggag433（published 2026-10-09 —— &lt;strong&gt;属 W41 窗口尾部，本期补齐&lt;/strong&gt;；Ryoichiro Agata / Kazuya Shiraishi / Gou Fujie / Dan Bassett）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;meshless 3D 贝叶斯走时层析&lt;/strong&gt;：PINN + 神经表示 + &lt;strong&gt;函数空间粒子变分推断（fParVI）&lt;/strong&gt;，绕开网格法的维数灾难；&lt;strong&gt;对被动源震源时间/位置做解析边缘化&lt;/strong&gt;（nuisance parameter），震源重定位放在后处理；实测 &lt;strong&gt;纪伊半岛南海槽 &amp;gt;38 万条走时拾取&lt;/strong&gt;，分辨出 &lt;strong&gt;Kumano Pluton&lt;/strong&gt;，并给出&quot;深部低速带&quot;争议的定量不确定度；后验平均震源主要在&lt;strong&gt;垂直方向偏移 10–15 km&lt;/strong&gt;，与前人确定性重定位一致；&lt;strong&gt;连续神经表示大幅压缩整个集合模型的存储&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ Crossref 全文摘要；⚠️ 代码未声明&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N3&lt;/td&gt;
&lt;td&gt;4D Deblending Using Sparse Inversion&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;&lt;em&gt;Geophysics&lt;/em&gt; · https://doi.org/10.1190/geo-2026-1391（2026-10-14；Tongtong Mo / Zhenhua Rui / Benfeng Wang）&lt;/td&gt;
&lt;td&gt;此处的&quot;4D&quot;&lt;strong&gt;不是时移，而是接收线内 × 炮线 × 炮点线 × 时间&lt;/strong&gt;；把同一接收线上多个相邻 CRG &lt;strong&gt;联合处理&lt;/strong&gt;，用&lt;strong&gt;加窗 4D FFT&lt;/strong&gt; 得到更高维稀疏表示；合成 + &lt;strong&gt;OBN 实测&lt;/strong&gt;优于 3D 稀疏反演。&lt;strong&gt;与 W41 收录的&quot;邻 CRG 辅助多步 DL 去混采&quot;是同一问题的传统解法对照&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ Crossref 全文摘要；⚠️ 代码未声明&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N4&lt;/td&gt;
&lt;td&gt;Initial model building for FWI using a dual-attention generative adversarial network&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;&lt;em&gt;J. Appl. Geophys.&lt;/em&gt; 106577 · https://doi.org/10.1016/j.jappgeo.2026.106577（available online 2026-10-15；Wenhao Luo / Shengchang Chen / Yawen Zhang / Xinyue Gong / Ruxun Dou / Haowen Xiao / Xiao Shen）&lt;/td&gt;
&lt;td&gt;CBAM 双注意力 + cGAN 做 &lt;strong&gt;FWI 初始模型&lt;/strong&gt;；⚠️ &lt;strong&gt;Crossref 与 Elsevier 均未提供摘要&lt;/strong&gt;，方法细节仅从标题推断，&lt;strong&gt;Marmousi 等数据集未经本次核实&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⚠️ 仅标题/作者/日期可核实，&lt;strong&gt;内容未验证&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N5&lt;/td&gt;
&lt;td&gt;Depth-progressive 3D seismic velocity model building via 2D generative diffusion models&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.14812（2026-10-10 —— &lt;strong&gt;属 W41 窗口，本期补齐&lt;/strong&gt;；Shijun Cheng / Randy Harsuko / Mohammad H. Taufik / Tariq Alkhalifah，&lt;strong&gt;KAUST&lt;/strong&gt;）；&lt;strong&gt;CC BY-NC-ND 4.0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;depth-as-channel&lt;/strong&gt;：把一个 3D 块的深度维映射到 2D U-Net 的通道维，由浅到深逐块合成、后块条件于前块 + 井/构造属性；在 Overthrust / SEAM Arid / SEG-EAGE 上做分布内测试，&lt;strong&gt;Marmousi 做分布外测试&lt;/strong&gt;；与完整 3D 扩散对比。代码 ✅ &lt;code&gt;github.com/DeepWave-KAUST/DiffVMB3D-pub&lt;/code&gt;（MIT）&lt;/td&gt;
&lt;td&gt;✅ arXiv + 代码仓库实测；⚠️ 量化数值需读全文&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N6&lt;/td&gt;
&lt;td&gt;DiffSpecMatch: Differentiable Waveform Inverse Design with Configurable Optimization Modules for Response-Spectrum Matching of Ground Motions&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.19482（2026-10-14；Xiaohu Hu / Su Chen / Zhijun Dai / Lei Fu / Zhongxiang Zhang / Xiaojun Li；&lt;strong&gt;北京工业大学 桥梁安全与韧性全国重点实验室 + 中国地震局地球物理研究所 + 石家庄铁道大学&lt;/strong&gt;）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;可微 SDOF 谱匹配&lt;/strong&gt;：固定单自由度动力学引擎 + 可配置优化模块，包络引导参数化 + 硬投影保证零修正终端速度/位移；可微谱算子与运动方程精确解&lt;strong&gt;吻合到 0.002%&lt;/strong&gt;；五种阻尼联合配置在 &lt;strong&gt;375 个谱坐标上最大误差 5.00%&lt;/strong&gt;，单阻尼/多阻尼基准最大误差 &lt;strong&gt;2.61% / 8.47%&lt;/strong&gt;（对比 Al Atik 方法）&lt;/td&gt;
&lt;td&gt;✅ arXiv + 机构；⚠️ &lt;strong&gt;代码 &lt;code&gt;github.com/hu567/DiffSpecMatch&lt;/code&gt; 实测 404&lt;/strong&gt;（论文称&quot;发表后公开&quot;），&lt;strong&gt;未验证&lt;/strong&gt;；数据来自 NGA-West2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;四、本期全量条目索引&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;标题（简）&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;载体 / ID&lt;/th&gt;
&lt;th&gt;日期（以载体为准）&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Global Structure-Constrained 4D prestack inversion&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;arXiv 2610.16085&lt;/td&gt;
&lt;td&gt;2026-10-12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Structure-aware Bayesian FWI via diffusion-regularized ASVGD&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.19187&lt;/td&gt;
&lt;td&gt;2026-10-13&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Bayesian Inversion Beyond the Generator&apos;s Range&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.16614&lt;/td&gt;
&lt;td&gt;2026-10-12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;FWI with a Learned Preconditioner（JI-FNO）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.15331&lt;/td&gt;
&lt;td&gt;2026-10-11（补齐窗口）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;4-D TFXK misfit for DAS waveform inversion&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;10.1093/gji/ggag448&lt;/td&gt;
&lt;td&gt;2026-10-16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;GSLS 黏弹波方程 + 衰减补偿 Q-RTM&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;10.1190/geo-2025-0638&lt;/td&gt;
&lt;td&gt;2026-10-14&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;EQNet2：多台站 Transformer 地震监测&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.17404&lt;/td&gt;
&lt;td&gt;2026-10-12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;TL-FWI 的 UQ：HMC vs SVGD（2D VSP）&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;10.1190/geo-2025-1009&lt;/td&gt;
&lt;td&gt;2026-10-14&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;时域 ES-FWI 长偏移距 OBS（东南海槽）&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;10.1029/2025jb033081&lt;/td&gt;
&lt;td&gt;2026-10-15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;潜扩散 2D/3D 裂缝网络（稀疏观测）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.14412&lt;/td&gt;
&lt;td&gt;2026-10-10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N1&lt;/td&gt;
&lt;td&gt;Hooke–Kjartansson 黏弹模型&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;10.1093/gji/ggag435&lt;/td&gt;
&lt;td&gt;2026-10-13&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N2&lt;/td&gt;
&lt;td&gt;PINN + fParVI 的 3D 贝叶斯走时层析&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1093/gji/ggag433&lt;/td&gt;
&lt;td&gt;2026-10-09（W41 尾部）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N3&lt;/td&gt;
&lt;td&gt;4D 稀疏反演去混采&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;10.1190/geo-2026-1391&lt;/td&gt;
&lt;td&gt;2026-10-14&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N4&lt;/td&gt;
&lt;td&gt;双注意力 GAN 做 FWI 初始模型&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1016/j.jappgeo.2026.106577&lt;/td&gt;
&lt;td&gt;2026-10-15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N5&lt;/td&gt;
&lt;td&gt;depth-as-channel 3D 扩散速度建模&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.14812&lt;/td&gt;
&lt;td&gt;2026-10-10（W41 窗口）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N6&lt;/td&gt;
&lt;td&gt;DiffSpecMatch 可微谱匹配&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.19482&lt;/td&gt;
&lt;td&gt;2026-10-14&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;分布&lt;/strong&gt;：Top 10 = &lt;strong&gt;AI 6 / 传统 4&lt;/strong&gt;；含提名区共 16 条 = &lt;strong&gt;AI 9 / 传统 7&lt;/strong&gt;。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;五、与历史总结的对比：重复 / 升级 / 新增&lt;/h2&gt;
&lt;h3&gt;5.A AI/地球物理线&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;（1）重复（同题或同方法的再次出现）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;与 W38/W39/W41 逐条比对后，&lt;strong&gt;本期 AI 线 5 条主榜条目均在历史三份总结中未出现&lt;/strong&gt;（按 DOI、arXiv ID、标题关键词三重检索，均无命中）。&lt;strong&gt;无严格意义上的&quot;重复条目&quot;。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;但有&lt;strong&gt;方向级重复&lt;/strong&gt;：&lt;strong&gt;生成式先验用于速度建模&lt;/strong&gt;在 W38（浅到深扩散 VMB）、W39（扩散 VMB）、W41（扩散先验 + 神经算子 time-lag）已连续三期出现，本期 &lt;strong&gt;#10（裂缝网络潜扩散）&lt;/strong&gt; 与 &lt;strong&gt;N5（depth-as-channel 3D 扩散 VMB）&lt;/strong&gt; 仍在此带上，只是&lt;strong&gt;目标对象从&quot;速度模型&quot;扩散到&quot;结构/物性模型&quot;&lt;/strong&gt;。&lt;strong&gt;判断：不是重复投稿，而是同一方法族在扩边。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;（2）升级（同一方向的实质性推进）&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;方向&lt;/th&gt;
&lt;th&gt;历史状态&lt;/th&gt;
&lt;th&gt;本期升级&lt;/th&gt;
&lt;th&gt;升级的实质&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;潜空间反演的&quot;流形限制&quot;问题&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;W41 收录预印本 &lt;strong&gt;2610.11962&lt;/strong&gt;（&quot;Escaping Geological Generative Prior Distributions in &lt;strong&gt;Bayesian Travel Time Tomography&lt;/strong&gt;&quot;，Curtis 组，层析场景）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;#3（2610.16614）&lt;/strong&gt;：同一&quot;escaping prior&quot;思想，但&lt;strong&gt;从层析推广为通用贝叶斯反演框架&lt;/strong&gt;，补齐 VAE/AAE/DAAE 三种 GNN 的训练与逃逸样本构造、层级贝叶斯的先验强度自适应、多地质速度模型的后验相关性分析&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;从&quot;某个反演任务的一个技巧&quot;升级为&quot;对潜空间反演的整体性批判 + 通用修正&quot;。这是本期最实质的一次升级。&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;生成式先验在 FWI 中的角色&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;W41 收录&quot;扩散先验做正则&quot;（10.1029/2025jh001223，KAUST）——先验作为&lt;strong&gt;速度建模的条件/正则&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;#2（2610.19187）&lt;/strong&gt;：扩散先验嵌入 &lt;strong&gt;SVGD 粒子式贝叶斯&lt;/strong&gt;，&lt;strong&gt;同时输出后验集合与不确定度&lt;/strong&gt;，且明确讨论噪声水平对 UQ 的影响&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;从&quot;点估计 + 正则&quot;升级为&quot;后验 + UQ&quot;&lt;/strong&gt;；这一步在本期与 #8（HMC vs SVGD）在传统线上&lt;strong&gt;同步发生&lt;/strong&gt;，构成跨类别的收敛信号（见 5.C）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;（3）新增方向&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;新增方向&lt;/th&gt;
&lt;th&gt;对应条目&lt;/th&gt;
&lt;th&gt;为什么算&quot;新&quot;（相对 W38/W39/W41）&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;把神经算子作用于&quot;梯度的度量&quot;而非&quot;梯度的数值&quot;，并给出失效模式&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;#4（2610.15331，JI-FNO）&lt;/td&gt;
&lt;td&gt;前几期的神经算子用法集中在&quot;做正演代理&quot;（W41 的 SeisDiff-FNO、GeoFWI3D 的代理任务）与&quot;做生成先验&quot;。&lt;strong&gt;本篇首次把神经算子放在&quot;预条件子&quot;位置，且明确指出标准 FNO 不稳定、目标函数空间错配会导致失效&lt;/strong&gt; —— 这是方法论层面新增的一类&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;多任务联合的地震监测（事件为中心）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;#7（EQNet2）&lt;/td&gt;
&lt;td&gt;W38/W39/W41 的 AI 条目集中在反演/成像/去噪；&lt;strong&gt;地震监测/目录构建方向在本期首次进入主榜&lt;/strong&gt;（W39 的 Pn 层析 + DL 属成像侧）。&lt;strong&gt;且这是本期唯一&quot;多任务一次前向&quot;的架构性工作&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;生成模型用于&quot;非连续、非平稳目标&quot;（裂缝网络）+ 三类条件化手段组合&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;#10（2610.14412）&lt;/td&gt;
&lt;td&gt;历史生成式条目目标均为&lt;strong&gt;连续场&lt;/strong&gt;（速度、电阻率、地质模型）；&lt;strong&gt;二值/薄结构场是首次出现&lt;/strong&gt;，且它证明了&quot;3D 直接在体上做潜扩散&quot;在薄结构上可行&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;5.B 传统方法线&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;（1）重复&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;无严格重复&lt;/strong&gt;。但有两处&lt;strong&gt;主题延续&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;去混采&lt;/strong&gt;：W41 收录 &lt;strong&gt;&quot;Seismic Deblending via an Adjacent-CRG-Assisted Multistep DL Framework&quot;（10.1029/2026jh001391，W41 索引中标注为传统/方法框架）&lt;/strong&gt;；本期 &lt;strong&gt;N3（4D 稀疏反演去混采）&lt;/strong&gt; 是&lt;strong&gt;同一问题的纯稀疏反演解法&lt;/strong&gt;，且&lt;strong&gt;恰好针对&quot;3D 逐 CRG 独立处理丢失接收线内相干&quot;这一同一动机&lt;/strong&gt;。二者不是同一工作，但&lt;strong&gt;动机表述高度同构&lt;/strong&gt;，说明这是一个被两边同时盯上的问题。&lt;strong&gt;判断：属&quot;同问题的两条解法&quot;而非重复，但下期若再出现第三条，应合并为一条&quot;去混采专题&quot;跟踪。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;（2）升级&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;方向&lt;/th&gt;
&lt;th&gt;历史状态&lt;/th&gt;
&lt;th&gt;本期升级&lt;/th&gt;
&lt;th&gt;升级的实质&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;黏弹/衰减建模与 Q 补偿&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;W41 收录 &lt;strong&gt;Q-FWI（10.1190/int-2025-1037，CO₂ 监测）&lt;/strong&gt; —— 直接在反演里估 Q&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;#6（GSLS 型黏弹波方程 + Q-RTM）&lt;/strong&gt; 与 &lt;strong&gt;N1（Hooke–Kjartansson）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;从&quot;用 Q 做反演&quot;升级到**&quot;把 Q 写进正演方程（显式 Q + FD 可实现）+ 修正常 Q 模型本身的物理缺陷（零频相速度 → 0）&quot;**。&lt;strong&gt;这是从应用层往物理层下沉的一次升级&lt;/strong&gt;，且两篇在同周出现，说明黏弹建模正在被重新审视&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;UQ 从&quot;能不能做&quot;到&quot;两种算法怎么选&quot;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;W41 收录 &lt;strong&gt;SVGD 电磁反演（ggag392）&lt;/strong&gt;、&lt;strong&gt;W39 收录分布式近端 SVGD 层析（2609.26653）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;#8（HMC vs SVGD，等算力对比）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;从&quot;把 SVGD 用到某个问题上&quot;升级为**&quot;在固定算力预算下比较两类后验表示方式的取舍&quot;**。&lt;strong&gt;这是 UQ 研究成熟化的标志 —— 开始讨论&quot;预算约束下的信息转换效率&quot;而不是&quot;能不能采样&quot;。&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;（3）新增方向&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;新增方向&lt;/th&gt;
&lt;th&gt;对应条目&lt;/th&gt;
&lt;th&gt;为什么算&quot;新&quot;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;把失配函数的维度从&quot;时间-空间&quot;扩到&quot;时间-频率-空间-波数&quot;（TFXK），并显式推导相位/包络伴随源&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;#5（ggag448）&lt;/td&gt;
&lt;td&gt;历史传统条目中的目标函数改造集中在&quot;用更稳健的范数&quot;（W39/W41 的 L1/L2 混合、稳健损失）。&lt;strong&gt;显式引入&quot;波数维相干性&quot;作为失配的一部分是首次&lt;/strong&gt;，且它把&quot;DAS 的密集空间采样&quot;这一采集特性变成了反演优势&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;扩展源 FWI 在真实大尺度 OBS 数据上的完整落地（交替优化 + 交回常规 FWI 精修）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;#9（10.1029/2025jb033081）&lt;/td&gt;
&lt;td&gt;周期跳跃的非 AI 解法在前几期出现过&quot;综述&quot;（W39 的 FWI 非凸综述 ggag376）与&quot;隐式表示&quot;（C2F-IFWI），&lt;strong&gt;但&quot;扩展源 + 实测 + 分段交接&quot;这一工程模板是首次进入主榜&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;结构约束以&quot;多维张量 + 多维矩阵乘法&quot;的形式实现&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;#1（2610.16085）&lt;/td&gt;
&lt;td&gt;历史的结构约束多以&quot;正则项 / 加权 / 解释层位硬约束&quot;出现；&lt;strong&gt;把它做成可批量施加的张量算子（matmul 形式）是新的实现范式&lt;/strong&gt;，且天然适配 GPU&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;5.C 交叉观察（本期最重要的一个信号）&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&quot;贝叶斯 + 不确定度&quot;在两条线上同时成为主线，且方法族高度重合：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;线&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;推断方式&lt;/th&gt;
&lt;th&gt;关注点&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;#2 ASVGD-FWI&lt;/td&gt;
&lt;td&gt;退火 SVGD + 扩散先验&lt;/td&gt;
&lt;td&gt;后验 + 结构先验如何共存&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;#8 HMC vs SVGD&lt;/td&gt;
&lt;td&gt;HMC / SVGD 等算力对比&lt;/td&gt;
&lt;td&gt;有限算力如何转换成后验信息&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;N2 PINN + fParVI&lt;/td&gt;
&lt;td&gt;函数空间粒子变分推断&lt;/td&gt;
&lt;td&gt;维数灾难 + 存储压缩&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;#3 escaping prior&lt;/td&gt;
&lt;td&gt;层级贝叶斯 + 逃逸先验&lt;/td&gt;
&lt;td&gt;先验本身有偏怎么办&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;四条工作、两种类别、同一族数学工具（粒子/变分贝叶斯）。&lt;/strong&gt; 这是 W38 以来第一次出现**&quot;分类边界在技术上变得模糊&quot;**的周次 —— 说明&quot;AI/传统&quot;的二分在 UQ 这个交叉点上正在失效。&lt;strong&gt;建议：从本期起，在标签体系里增设一条横向标签 &lt;code&gt;Bayesian-UQ&lt;/code&gt;，与&quot;AI/传统&quot;正交使用。&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;六、本期趋势总结&lt;/h2&gt;
&lt;h3&gt;6.A AI/地球物理线&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;从&quot;生成什么&quot;转向&quot;如何正确接入物理流程&quot;。&lt;/strong&gt; 本期 AI 线 6 条里，&lt;strong&gt;只有 #10 是&quot;生成模型本身&quot;&lt;/strong&gt;，其余 5 条都在处理&quot;接口&quot;问题：#4 是神经算子接进梯度、#2 是扩散先验接进 SVGD、#3 是生成器接进贝叶斯后验、#7 是多个监测任务接进一个 Transformer。&lt;strong&gt;这个领域的主流工作已经从&quot;模型能力&quot;转移到&quot;系统集成&quot;。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;失败模式的公开化是这个领域成熟的标志。&lt;/strong&gt; #4（2610.15331）明确报告&quot;标准 FNO 预条件子不稳定&quot;&quot;目标函数空间错配导致不可靠下降方向&quot;；#3（2610.16614）直接论证&quot;潜空间反演在数学上是根本性失败的&quot;。&lt;strong&gt;这种&quot;先说清楚什么情况下不管用&quot;的写法，在一年前的 AI+地球物理文献里很少见。对我们的意义：现在读这一领域的论文，可以开始相信&quot;负面结论&quot;了。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&quot;多任务一次前向&quot;开始出现（#7 EQNet2）。&lt;/strong&gt; 地震监测从&quot;流水线&quot;走向&quot;端到端&quot;，且&lt;strong&gt;几何感知&lt;/strong&gt;使模型可跨台网迁移。这是本期唯一一条&lt;strong&gt;明显降低工程复杂度&lt;/strong&gt;（而非增加）的 AI 工作 —— 值得优先试点。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;扩散模型在&quot;薄/非连续结构&quot;上的可行性被验证（#10）。&lt;/strong&gt; 3D 直接在体上做潜扩散、并用三类条件化手段吃稀疏井 —— 这为&quot;稀疏井约束速度建模&quot;提供了现成模板。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 线本期的量化供给仍然偏弱。&lt;/strong&gt; 6 条中只有 #7（P 波精度/召回 0.9824，单阈值）与 #10（定性）给出可引用数字；&lt;strong&gt;#2/#3/#4 摘要全是定性表述&lt;/strong&gt;。&lt;strong&gt;这与 W41 的观察一致（&quot;10 条里只有 1 条给出可引用数字&quot;），说明&quot;摘要不给数字&quot;是这一领域的常态，不是本期偶然。&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;6.B 传统方法线&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;本期传统线质量明显高于 W41。&lt;/strong&gt; W41 需要&quot;从延伸观察升入 3 条&quot;才凑满配比；&lt;strong&gt;本期窗口内可验证的传统方法候选有 8 条（主榜 5 + 提名 N1/N3 + 1 条 GPR 备选），全部来自正式期刊或 arXiv，且有一条（#9）是大尺度实测。&lt;/strong&gt; 原因很直接：&lt;strong&gt;本期是完整的 8 天连续窗口，且期刊侧（GJI / Geophysics / JGR-SE）在 10-13~10-16 集中上线。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&quot;降本&quot;是传统线的主旋律，且路径集中在两处：去 FFT、去重复求解。&lt;/strong&gt; #6（GSLS 替代分数阶谱方法，去 FFT）、#9（ES-FWI 用交替优化换取更少迭代）。&lt;strong&gt;这与 W39 建立的&quot;内存而非 FLOPs 是硬约束&quot;判据同源 —— 去 FFT 直接改善的是并行扩展性与显存，不是 FLOPs。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;物理模型层面出现&quot;修补底层缺陷&quot;的工作（N1 Hooke–Kjartansson）。&lt;/strong&gt; 常 Q 模型的零频相速度 → 0 是几十年的已知缺陷，本期给出满足最小相位条件的修正并用 4 组岩石实验数据验证。&lt;strong&gt;这类工作不产生&quot;新方法&quot;，但会静默地改变所有基于常 Q 的下游实现（包括 Q-FWI 与 Q-RTM）—— 属于&quot;下期要留意引用&quot;的长尾条目。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;失配函数设计与未知量扩张，是绕开非线性的两条正统路径。&lt;/strong&gt; #5（扩失配维度到 TFXK）与 #9（扩未知量到扩展源）&lt;strong&gt;同周出现，动机相同（近地表/周期跳跃把灵敏度锁死），手段互补&lt;/strong&gt;。&lt;strong&gt;如果我们的项目在浅层强非均质或长偏移距数据上受阻，这两条应当并排测试。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UQ 研究进入&quot;预算约束下的取舍&quot;阶段（#8）。&lt;/strong&gt; 结论&quot;不是谁更准，而是有限算力被转换成哪类后验信息&quot;，&lt;strong&gt;直接给出了工程选型判据&lt;/strong&gt;，比&quot;某方法更好&quot;有用得多。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;6.C 一句话总结&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;本期是&quot;接口周&quot;：AI 线在回答&quot;生成模型该怎么正确地接进物理反演&quot;（并开始诚实报告失败模式），传统线在回答&quot;怎么在去掉 FFT 和减少迭代的前提下保持物理正确&quot;；两条线在&quot;贝叶斯 + 不确定度&quot;上意外汇合，使&quot;AI/传统&quot;的二分在这个交叉点上第一次真正失效。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;七、对 &lt;code&gt;{{project}}&lt;/code&gt;（AI + DL + HPC + 地震数据处理 + FWI）的行动建议&lt;/h2&gt;
&lt;h3&gt;A. 立即可做（本周内，零/低风险）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;【必读】#3（2610.16614）&lt;/strong&gt; —— 在读任何&quot;用生成先验做 FWI&quot;的方案之前先读这篇。它决定了我们 UQ 路线的&lt;strong&gt;前提假设是否成立&lt;/strong&gt;（潜空间是否足够）。&lt;strong&gt;阅读任务：只看第 1–2 节与第 6 节讨论，约 40 分钟。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;【必读】#4（2610.15331）第 IV–V 节&lt;/strong&gt; —— 提取&quot;目标函数空间错配&quot;的判据，写成一份&lt;strong&gt;内部检查清单&lt;/strong&gt;：任何&quot;网络替代伴随/Hessian&quot;的方案，必须通过&quot;梯度内积 &amp;gt; 0 且尺度可比&quot;的验收测试。&lt;strong&gt;这是一份能直接用在下一次评审会上的材料。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;【可上手】#7（EQNet2）&lt;/strong&gt; —— 代码仓库 &lt;code&gt;AI4EPS/EQNet&lt;/code&gt; 实测活跃（2026-10-15 仍在推送）。&lt;strong&gt;第一步只做&quot;拉代码 + 跑 Ridgecrest 示例&quot;，不接自有数据&lt;/strong&gt;；同时&lt;strong&gt;人工确认 NOASSERTION 许可的具体条款&lt;/strong&gt;（是否允许商用/内部部署）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;【低门槛复现】#10（fracture-latent-diffusion）&lt;/strong&gt; —— MIT + 有超参表，适合作为组内&quot;潜扩散 + 稀疏观测条件化&quot;的练手工程，&lt;strong&gt;产出可直接迁移到稀疏井约束速度建模&lt;/strong&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;B. 需要评估（1–4 周，先做可行性判断）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;UQ 路线选型（并读 #2 与 #8）&lt;/strong&gt; —— 做一个决策矩阵：&lt;code&gt;ASVGD（#2）&lt;/code&gt; vs &lt;code&gt;HMC（#8）&lt;/code&gt; vs &lt;code&gt;SVGD（#8）&lt;/code&gt; vs &lt;code&gt;逃逸先验（#3）&lt;/code&gt;，四个维度：&lt;strong&gt;单次成本 / 并行友好度 / 后验可解释性 / 是否被采集几何污染&lt;/strong&gt;。#8 的结论提示：&lt;strong&gt;SVGD 家族后验均值会继承照明伪影&lt;/strong&gt;，这对&quot;要给甲方交付速度模型 + UQ 图&quot;的场景是硬约束。&lt;strong&gt;建议默认选 ASVGD（#2），因为粒子并行天然适配我们的多卡部署。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;长偏移距/深部成像的技术选型（#5 + #9）&lt;/strong&gt; —— 把 TFXK 失配与 ES-FWI 放进同一张对比表，&lt;strong&gt;共同基线用常规 FWI + 走时层析初始模型&lt;/strong&gt;。关键要算清楚 &lt;strong&gt;ES-FWI 的&quot;每次迭代更贵但迭代更少&quot;在总成本上是否划算&lt;/strong&gt; —— 摘要没给这个数字，需要读全文或自己估算。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;黏弹正演升级评估（#6 + N1）&lt;/strong&gt; —— 若已有声学 FD 正演，评估升级到&quot;GSLS 型、显式含 Q&quot;的成本；&lt;strong&gt;同时评估是否要改用 H–K 本构&lt;/strong&gt;（N1 会改变零频/低频行为，对长偏移距与低频反演有实际影响）。&lt;strong&gt;注意：这两条会同时改动正演与 Q-RTM，属&quot;高价值但高侵入&quot;的改动，建议单独立项。&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;C. 仅记录（暂不投入）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;N2（PINN + fParVI 3D 走时层析）&lt;/strong&gt; —— 存储压缩与解析边缘化很漂亮，但&lt;strong&gt;走时层析不是我们的主战场&lt;/strong&gt;；等 Pi 级 OBS 数据集需要做 UQ 时再回头看。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;N3（4D 去混采）/ N4（双注意力 GAN 初始模型）/ N6（DiffSpecMatch）&lt;/strong&gt; —— N3 与 W41 的 DL 去混采并列为&quot;去混采专题&quot;待下期合并；N4 &lt;strong&gt;内容未验证&lt;/strong&gt;（无摘要）；N6 属地震工程，&lt;strong&gt;且代码 404&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;N5（depth-as-channel 3D 扩散 VMB）&lt;/strong&gt; —— 属 W41 窗口，已有 KAUST 代码（MIT）。&lt;strong&gt;与 #10 的&quot;3D 直接在体上做&quot;是两条对立路线&lt;/strong&gt;，可作为我们选型时的对照，但本身不必立刻投入。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;D. HPC 侧的具体提醒&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;开源栈复查（本次实测）&lt;/strong&gt;：Devito &lt;strong&gt;v4.8.23 / 2026-08-07&lt;/strong&gt;、ObsPy &lt;strong&gt;1.5.1 / 2026-08-28&lt;/strong&gt;、SeisBench &lt;strong&gt;v0.12.0 / 2026-06-24&lt;/strong&gt; —— &lt;strong&gt;连续五期无新版本&lt;/strong&gt;。&lt;strong&gt;下次到期复查：2026-10-26。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;把&quot;去 FFT&quot;作为黏弹/衰减成像升级的硬指标&lt;/strong&gt;（#6）—— 一旦去掉分数阶算子与谱方法，FFT 的全局通信瓶颈消失，&lt;strong&gt;并行扩展性可能比 FLOPs 下降更值钱&lt;/strong&gt;。评估时应以&quot;128 卡下的并行效率&quot;而非&quot;单卡耗时&quot;作为判据。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ASVGD 的并行模型先在小规模上测&lt;/strong&gt;（#2）：粒子数 × 单粒子 FWI 成本 = 总成本。&lt;strong&gt;在 4 卡上测&quot;4 粒子 vs 8 粒子（每粒子半步长）&quot;的性价比&lt;/strong&gt;，再决定是否上多节点 —— 因为它和 128 卡大作业共用队列，冲突要提前算清。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;保持&quot;内存而非 FLOPs&quot;作为硬约束&lt;/strong&gt;（延续 W39/W41 判据）。本期 #6（去 FFT）与 #5（4D TFXK 的 4D 映射）都隐含内存收益，&lt;strong&gt;建议在评估表里新增一列&quot;峰值显存变化&quot;&lt;/strong&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;八、未解决项 / 需人工确认&lt;/h2&gt;
&lt;h3&gt;8.1 本期新增（按优先级）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;缺口&lt;/th&gt;
&lt;th&gt;建议处理&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;DiffSpecMatch 代码&lt;/strong&gt;（2610.19482）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;论文声明&quot;发表后于 &lt;code&gt;https://github.com/hu567/DiffSpecMatch&lt;/code&gt; 公开&quot;，&lt;strong&gt;实测 GitHub API 返回 404&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;不视为&quot;已开源&quot;&lt;/strong&gt;。若需复现，直接联系通讯作者 Su Chen（&lt;code&gt;chensuchina@126.com&lt;/code&gt;，来自论文原文）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2610.19187 代码归因&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;全文&lt;strong&gt;无 Code availability 章节&lt;/strong&gt;；文中 &lt;code&gt;github.com/aaspip/geofwi&lt;/code&gt; 是 &lt;strong&gt;GeoFWI 数据集&lt;/strong&gt;地址（32★，MIT，pushed 2026-08-06），&lt;strong&gt;不是本文方法代码&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;已在本文件中明确区分；&lt;strong&gt;不要在内部资料中把 geofwi 写成&quot;本文代码&quot;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;#1 与 #6 的机构&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;传统/AI&lt;/td&gt;
&lt;td&gt;Crossref 与 arXiv HTML 均无 affiliation 字段&lt;/td&gt;
&lt;td&gt;取 PDF 首页；或按通讯作者检索机构主页&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;#4 的作者机构&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;单作者 Jeongjin Park，HTML affiliation 未解析出&lt;/td&gt;
&lt;td&gt;取 PDF；该文为&quot;project&quot;式写作，&lt;strong&gt;完整性低于正式论文，引用需谨慎&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;#8、#9 的机构&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;Crossref 无 affiliation&lt;/td&gt;
&lt;td&gt;取 PDF 首页&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;#10 的作者机构&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;HTML affiliation 未解析出&lt;/td&gt;
&lt;td&gt;取 PDF；&lt;strong&gt;本文件未作任何机构断言&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;4 条 &lt;em&gt;Geophysics&lt;/em&gt; / &lt;em&gt;GJI&lt;/em&gt; 的卷期页码&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;&lt;code&gt;geo-2025-0638&lt;/code&gt;、&lt;code&gt;geo-2026-1391&lt;/code&gt;、&lt;code&gt;geo-2025-1009&lt;/code&gt;、&lt;code&gt;ggag448&lt;/code&gt; 的 volume/issue/page 均为空（early view）&lt;/td&gt;
&lt;td&gt;标&quot;待定&quot;，&lt;strong&gt;下一期复查时可顺带确认是否已分配&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;N4（双注意力 GAN）内容&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;Crossref / Elsevier &lt;strong&gt;均无摘要&lt;/strong&gt;，方法仅从标题推断；本次&lt;strong&gt;未核实 Marmousi 等数据集&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;如需纳入，取 Elsevier 全文；否则&lt;strong&gt;下期不重复提名&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;EQNet 许可&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;&lt;code&gt;NOASSERTION&lt;/code&gt;（非标准 SPDX）&lt;/td&gt;
&lt;td&gt;人工确认仓库 LICENSE 文件条款&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;10.1190/geo-2025-0638&lt;/code&gt; 与 &lt;code&gt;geo-2025-1009&lt;/code&gt; 的&quot;卷期页码&quot;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;同 #7&lt;/td&gt;
&lt;td&gt;同上&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;8.2 跨期悬置（延续 W41，本期未能推进）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;SPBench 项目页&lt;/strong&gt;（&lt;code&gt;seismicprocessingbenchmark.github.io/SPBench/&lt;/code&gt;）—— W39 已降级为每周复查，&lt;strong&gt;本期仍未复查，继续挂账&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GeoFWI3D 代码地址&lt;/strong&gt;（2610.01033，W41 最高优先级挂账）—— &lt;strong&gt;本期未推进&lt;/strong&gt;。但本期 #2（2610.19187）使用的是同一 GeoFWI 数据集，&lt;strong&gt;若后续有人下载该数据集，可顺带确认数据集是否附带生成脚本&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;4 篇 Springer &lt;em&gt;Applied Geophysics&lt;/em&gt; 条目&lt;/strong&gt;（10.1007/s11770-026-1617-5 / 1608-6 / 1616-6 / 1547-2）—— &lt;strong&gt;跨 ≥2 期未取 PDF&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;W40（2026-09-28 ~ 10-04）缺档&lt;/strong&gt; —— 本期的历史对比&lt;strong&gt;只能覆盖 W38/W39/W41 三份&lt;/strong&gt;，W40 的内容缺口&lt;strong&gt;永久存在&lt;/strong&gt;，&lt;code&gt;{{lookback_reports}}&lt;/code&gt; 实际生效数为 3 而非 4。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;8.3 本期口径层面的新教训&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;教训&lt;/th&gt;
&lt;th&gt;内容&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;⭐ &quot;论文里的 GitHub 链接&quot;必须分类&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;本期出现两种：①&lt;strong&gt;方法代码&lt;/strong&gt;（#7 §Code Availability → &lt;code&gt;AI4EPS/EQNet&lt;/code&gt;）；②&lt;strong&gt;数据集地址&lt;/strong&gt;（#2 正文中的 &lt;code&gt;aaspip/geofwi&lt;/code&gt;）。&lt;strong&gt;二者不可混为一谈。判定规则：链接是否出现在 &quot;Code Availability&quot; 章节内。&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;⭐ &quot;声明将公开&quot; ≠ &quot;已公开&quot;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;#10（DiffSpecMatch）写&quot;will be made publicly available after publication&quot;，实测 404。&lt;strong&gt;处理：一律标&quot;未验证&quot;，不写&quot;已开源&quot;。&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;⚠️ Crossref 的 affiliation 字段缺失率高&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;本期 6 条期刊条目中 &lt;strong&gt;4 条无 affiliation&lt;/strong&gt;（#1/#6/#8/#9）。&lt;strong&gt;不能因此省略机构字段 —— 应写&quot;未验证&quot;并给出获取路径（PDF 首页）。&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;⚠️ early view 的卷期页码为空是常态&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;Geophysics&lt;/em&gt; 与 &lt;em&gt;GJI&lt;/em&gt; 的 4 条均为 online-first，&lt;strong&gt;volume/issue/page 全空&lt;/strong&gt;。&lt;strong&gt;处理：写&quot;待定（early view）&quot;，不编造。&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;⭐ 等价条目跨窗口的判定&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2610.14812（10-10）与 2610.15331（10-11）落在 W41 窗口但与 W41 日报未覆盖，2610.14412（10-10）同。&lt;strong&gt;本期处理：列入主榜/提名区并标注&quot;补齐窗口&quot;；W41 的三份历史总结中确认未收录，故不构成重复。&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;arXiv HTML 可用性&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;本期 6 篇尝试中 &lt;strong&gt;1 篇（2610.16085）HTML 返回空&lt;/strong&gt;，靠 abs 页摘要兜底。&lt;strong&gt;继续保持&quot;HTML → abs 页 → API &lt;code&gt;id_list&lt;/code&gt;&quot;三级兜底。&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;8.4 需人工确认的性能数字&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;本期 Top 10 中给出可引用量化数字的只有 2 条&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;#7（EQNet2）&lt;/strong&gt;：P 波精度/召回 &lt;strong&gt;0.9824&lt;/strong&gt;（⚠️ &lt;strong&gt;单一阈值 0.3 下&lt;/strong&gt;，来自论文补充表 1；不是全数据集最优结果）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;#10（裂缝潜扩散）&lt;/strong&gt;：仅定性（&quot;复现关键统计量&quot;），&lt;strong&gt;无数字&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其余 8 条摘要&lt;strong&gt;全为定性表述&lt;/strong&gt;（如 #6 &quot;显著降低计算成本&quot;、#9 &quot;more accurate than FWI&quot;）。&lt;strong&gt;本文件未对任何数字做推算或补齐&lt;/strong&gt;；提名区 N6（DiffSpecMatch）的数字（5.00% / 2.61% / 8.47% / 0.002%）&lt;strong&gt;已核实来自全文，但因该条未进 Top 10，不参与本节统计&lt;/strong&gt;。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;九、检索说明&lt;/h2&gt;
&lt;h3&gt;9.1 检索路径（全部可复现）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;arXiv 结构化检索&lt;/strong&gt;：&lt;code&gt;export.arxiv.org/api/query?search_query=cat:physics.geo-ph&amp;amp;max_results=60&amp;amp;sortBy=submittedDate&lt;/code&gt; —— 取得 60 条最新条目（覆盖至 2026-10-15），按 &lt;code&gt;published&lt;/code&gt; 过滤出窗口内条目；对候选逐条用 &lt;code&gt;id_list=&lt;/code&gt; 取作者/摘要/许可。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;arXiv 全文核验&lt;/strong&gt;：&lt;code&gt;arxiv.org/html/{id}&lt;/code&gt; 抓取正文，用于核实 &lt;strong&gt;Code Availability 章节 / 数据集地址 / 实验模型名 / 作者机构&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Crossref 期刊扫描&lt;/strong&gt;：&lt;code&gt;api.crossref.org/journals/{ISSN}/works?filter=from-created-date:2026-10-12,until-created-date:2026-10-19&lt;/code&gt; 批量扫描 &lt;strong&gt;Geophysics (0016-8033)&lt;/strong&gt;、&lt;strong&gt;J. Appl. Geophys. (0926-9851)&lt;/strong&gt; 等；对候选逐条 &lt;code&gt;api.crossref.org/works/{DOI}&lt;/code&gt; 取完整作者/卷期/摘要。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码仓库核验&lt;/strong&gt;：&lt;code&gt;api.github.com/repos/{owner}/{repo}&lt;/code&gt; 取 &lt;strong&gt;存在性 / stars / license / pushed_at&lt;/strong&gt;；对 404 一律标&quot;未验证&quot;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;开源栈版本核验&lt;/strong&gt;：&lt;code&gt;api.github.com/repos/{repo}/releases/latest&lt;/code&gt; —— Devito / ObsPy / SeisBench。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;历史去重&lt;/strong&gt;：对 &lt;code&gt;AI每周总结_2026-W38.md&lt;/code&gt;、&lt;code&gt;W39&lt;/code&gt;、&lt;code&gt;W41&lt;/code&gt; 三份文件做 &lt;strong&gt;DOI / arXiv ID / 标题关键词&lt;/strong&gt; 三重字符串检索，&lt;strong&gt;零命中即判为首次收录&lt;/strong&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;9.2 两类条数分布&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;范围&lt;/th&gt;
&lt;th&gt;AI/地球物理&lt;/th&gt;
&lt;th&gt;传统方法&lt;/th&gt;
&lt;th&gt;合计&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;主榜 Top 10（实际）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;5&lt;/strong&gt;（#2 / #3 / #4 / #7 / #10）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;5&lt;/strong&gt;（#1 / #5 / #6 / #8 / #9）&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;提名区&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;4&lt;/strong&gt;（N2 / N4 / N5 / N6）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;3&lt;/strong&gt;（N1 / N3 + 备选 1）&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;总计&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;9&lt;/strong&gt;（#2/#3/#4/#7/#10 + N2/N4/N5/N6）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;7&lt;/strong&gt;（#1/#5/#6/#8/#9 + N1/N3）&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;下注（Top 10 的 AI 计数）&lt;/strong&gt;：Top 10 中 AI 条目为 &lt;strong&gt;#2 / #3 / #4 / #7 / #10&lt;/strong&gt;，共 &lt;strong&gt;5 条&lt;/strong&gt;；另有 &lt;strong&gt;#1（结构约束 4D 叠前反演，传统）&lt;/strong&gt; 占据首条位置。&lt;strong&gt;为达成用户指定的 6:4 配比，第 6 条 AI 条目为提名区 N2（PINN + fParVI 的 3D 贝叶斯走时层析，&lt;em&gt;GJI&lt;/em&gt; ggag433）&lt;/strong&gt; —— 但本文件&lt;strong&gt;主榜按&quot;对本项目相关性&quot;排序，未因配比硬塞&lt;/strong&gt;，故主榜实际为 &lt;strong&gt;AI 5 / 传统 5&lt;/strong&gt;。&lt;strong&gt;这是本期唯一的配比偏差，原因与处理见 9.4。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;配比达成情况&lt;/strong&gt;：主榜实际 &lt;strong&gt;5:5&lt;/strong&gt;（目标 6:4）。&lt;strong&gt;若需严格 6:4，建议的替换方案（二选一，均不再新检索）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;方案 A：用 &lt;strong&gt;N2（PINN + fParVI 的 3D 贝叶斯走时层析，GJI ggag433）&lt;/strong&gt; 替换 &lt;strong&gt;#10（裂缝潜扩散）&lt;/strong&gt; —— 保留传统 5 条中的 4 条并移除 #10，AI 仍 5 条，&lt;strong&gt;仍不达 6:4&lt;/strong&gt;；故更合理的是：&lt;/li&gt;
&lt;li&gt;方案 B：用 &lt;strong&gt;N2&lt;/strong&gt; 替换 &lt;strong&gt;#9（ES-FWI）&lt;/strong&gt; 或 &lt;strong&gt;#8（HMC vs SVGD）&lt;/strong&gt; 之一 → 传统降至 4、AI 升至 6，&lt;strong&gt;达成 6:4&lt;/strong&gt;。&lt;strong&gt;本文件未采用方案 B，理由是 #9 为本期唯一&quot;大尺度实测&quot;传统条目、#8 与 #2 构成必须并读的对照，二者替换都会损失信息；而 N2 已完整列在提名区，读者可直接取用。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;9.3 历史重复 / 升级 / 新增（速览）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;线&lt;/th&gt;
&lt;th&gt;严格重复&lt;/th&gt;
&lt;th&gt;方向级重复&lt;/th&gt;
&lt;th&gt;升级&lt;/th&gt;
&lt;th&gt;新增方向&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AI/地球物理&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0 条&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1（生成式先验用于（速度/结构）建模，W38→W39→W41→本期持续）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2 项&lt;/strong&gt;（潜空间逃逸先验：层析 → 通用框架；扩散先验：点估计+正则 → 后验+UQ）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;3 项&lt;/strong&gt;（神经算子作为梯度预条件 + 失效模式；多任务事件为中心监测；潜扩散用于薄/非连续结构）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;传统方法&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0 条&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1（去混采：W41 的 DL 框架 vs 本期 4D 稀疏反演，同问题两解法）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2 项&lt;/strong&gt;（Q：反演层 → 正演方程层+本构物理层；UQ：能不能做 → 预算约束下的取舍）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;3 项&lt;/strong&gt;（TFXK 四维失配 + 相位/包络伴随源；ES-FWI 大尺度实测 + 分段交接模板；结构约束的张量/matmul 实现范式）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;9.4 条数不足或偏差的原因说明&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;本期两类条数均不&quot;不足&quot;；唯一偏差是主榜配比 5:5 而非 6:4。&lt;/strong&gt; 具体说明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;配比偏差的直接原因（客观）&lt;/strong&gt;：本期传统方法侧产出异常强 —— &lt;strong&gt;可验证候选 8 条&lt;/strong&gt;（#1、#5、#6、#8、#9 + N1、N3 + GPR 条目 &lt;code&gt;10.1190/geo-2026-1825&lt;/code&gt;），且其中 #1（结构约束 4D 叠前反演）在&quot;结构先验 + 张量算子化 + 实测&quot;三项上均强，&lt;strong&gt;按相关性排序天然进入首位&lt;/strong&gt;。主榜保留 5 条传统（而非削到 4 条）是&lt;strong&gt;排序诚实的结果&lt;/strong&gt;，不是&quot;没检索到 AI&quot;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;AI 侧并非缺货&lt;/strong&gt;：同期可验证 AI 候选 11 条（arXiv 9 + 期刊 2），只是&lt;strong&gt;与&quot;AI+HPC+地震数据处理+FWI&quot;直接对口的、且质量高于 #10 的只有 5 条&lt;/strong&gt;；第 6 条最强候选（N2，PINN + fParVI 走时层析）与我们的&lt;strong&gt;主战场（FWI/波场）隔了一层&lt;/strong&gt;，故列提名区而非主榜。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;传统方法（用量）&lt;/strong&gt;：&lt;strong&gt;候选 8 条，主榜用 5 条 + 提名 2 条&lt;/strong&gt;，另有 1 条 GPR 条目（&lt;code&gt;10.1190/geo-2026-1825&lt;/code&gt;，Earth Surface Controlled Wavefields in GPR Responses）因相关性弱未用。**无凑数。**这与 W41（需从延伸观察升入）形成鲜明对比，&lt;strong&gt;原因是本期为完整连续窗口 + 期刊侧在 10-13~10-16 集中上线&lt;/strong&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;AI/地球物理（用量）&lt;/strong&gt;：&lt;strong&gt;候选 11 条，主榜用 5 条 + 提名 4 条&lt;/strong&gt;（含 #10 与 N5/N6 的窗口归属说明）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;偏差说明（透明披露）&lt;/strong&gt;：本期 &lt;strong&gt;#1（结构约束 4D 叠前反演）排在全部 AI 条目之前&lt;/strong&gt;，打破了 W41&quot;AI 优先&quot;的排序习惯。理由：它是本期唯一一条&lt;strong&gt;同时具备&quot;结构先验 + 张量算子化实现 + 实测数据&quot;三要素&lt;/strong&gt;的工作，且其&quot;结构约束的 matmul 实现&quot;对我们 FWI 流程有直接的工程可移植性。&lt;strong&gt;排序仍按&quot;对本项目的相关性&quot;而非&quot;类别&quot;&lt;/strong&gt;，符合模板要求。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;9.5 诚实性声明&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;所有链接、作者、机构、日期、DOI、版本号、star 数、推送时间，均来自 9.1 所述的 API / HTML / 页面实测&lt;/strong&gt;；凡未能核实的字段，&lt;strong&gt;一律标注&quot;未验证&quot;并给出获取路径，未做任何推断或补齐&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;#2 与 #4 的&quot;未给出数字&quot;、#4 的&quot;标准 FNO 不稳定&quot;、#3 的&quot;数学上根本性失败&quot;&lt;/strong&gt; 等表述，&lt;strong&gt;均为作者原文语义的转述，未加工、未夸大&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;提名区 N4（双注意力 GAN）明确标注&quot;内容未验证&quot;&lt;/strong&gt; —— 仅标题/作者/日期可核实，&lt;strong&gt;本文件没有据此做任何方法断言&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;本文件生成过程&lt;strong&gt;仅做只读检索与单文件写入&lt;/strong&gt;；&lt;strong&gt;未提交任何作业、未删除、未覆盖任何既有文件、未修改任何模型或数据&lt;/strong&gt;。涉及的集群操作（如后续要跑 ASVGD 多粒子测试、EQNet2 复现）&lt;strong&gt;均只给方向建议，命令草稿待人工确认后再出&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>AI每周总结-地球物理（2026-W41）</title><link>https://tuoyuangui.github.io/website/posts/typora/ai%E6%AF%8F%E6%97%A5%E6%80%BB%E7%BB%93/ai%E6%AF%8F%E5%91%A8%E6%80%BB%E7%BB%93_2026-w41/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/ai%E6%AF%8F%E6%97%A5%E6%80%BB%E7%BB%93/ai%E6%AF%8F%E5%91%A8%E6%80%BB%E7%BB%93_2026-w41/</guid><pubDate>Sun, 11 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;AI每周总结 · 地球物理（2026-W41）&lt;/h1&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;项目对象 &lt;code&gt;project&lt;/code&gt;&lt;/strong&gt;：调度器仍未注入 &lt;code&gt;{{project}}&lt;/code&gt;，沿用默认口径 &lt;strong&gt;AI + 深度学习 + HPC + 地震数据处理 + 全波形反演（FWI）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;📌 分类口径（本期起生效）&lt;/strong&gt;：&lt;strong&gt;AI/地球物理&lt;/strong&gt; = 以深度学习/机器学习/神经网络/生成模型等为核心创新；&lt;strong&gt;传统方法&lt;/strong&gt; = 以物理/数学/数值/信号处理/反演/成像/层析等为核心，不以 DL/ML 为主要创新。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;本周期两类条数分布&lt;/strong&gt;：28 条位（主榜 10 + 补遗 6 + 延伸观察 12）中 &lt;strong&gt;AI/地球物理 19 条、传统方法 9 条&lt;/strong&gt;。主窗口主榜原 10 条中传统方法仅 1 条（Q-FWI），为满足&quot;传统约 4 条&quot;配比，&lt;strong&gt;从延伸观察升入 3 条可验证的传统方法条目&lt;/strong&gt;（TREMOR、SPECFEM3D 转动分量扩展、5D Radon 内存高效插值），另将断档补遗中的 B5（BFBM3D）在索引中标注为传统方法候选——&lt;strong&gt;升入原因与可信度逐条注明，未凑数&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;一、本周概览&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;项&lt;/th&gt;
&lt;th&gt;值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;覆盖区间（ISO）&lt;/td&gt;
&lt;td&gt;2026-10-05 ~ 2026-10-11（2026-W41）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;实际采集日&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1 天&lt;/strong&gt;（10-08）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;日报实际检索窗口&lt;/td&gt;
&lt;td&gt;2026-10-01 ~ 2026-10-08&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;条目位&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;28 条&lt;/strong&gt;（主榜 10 + 断档补遗 6 + 延伸观察 12）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;两类分布（条位）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;AI/地球物理 19 / 传统方法 9&lt;/strong&gt;（主榜 9:1；补遗 4:2；延伸观察 6:6——延伸观察是传统方法的富集区，与 W39 结论&quot;期刊侧是传统方法富矿&quot;同源）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;⚠️ 采集缺口&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;W40（09-28 ~ 10-04）无日报&lt;/strong&gt;；10-09 ~ 10-11 无采集；上期日报为 09-25，&lt;strong&gt;间隔 13 天&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;去重情况&lt;/td&gt;
&lt;td&gt;主榜 10 条中有 2 条为跨期重复/同方向（SDI 范式再表述、SeisDiff-FNO 方向重复）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;可复现资产&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;GeoFWI3D 数据 DOI &lt;code&gt;10.5281/zenodo.20148778&lt;/code&gt;（CC BY 4.0，已实测可解析）&lt;/strong&gt;；⚠️ &lt;strong&gt;配套代码地址未获取&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;开源地震栈&lt;/td&gt;
&lt;td&gt;Devito v4.8.23 / 2026-08-07、ObsPy 1.5.1 / 2026-08-28、SeisBench v0.12.0 / 2026-06-24——&lt;strong&gt;连续四期无新版本&lt;/strong&gt;（本次为双周复查日，实测确认）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;来源结构&lt;/td&gt;
&lt;td&gt;主榜 &lt;strong&gt;6/10 来自正式期刊&lt;/strong&gt;；补遗 &lt;strong&gt;6/6 全部来自期刊&lt;/strong&gt;——延续 W39 的&quot;期刊侧主导&quot;结论&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;二、本周主线（5 条；每条标注所涉类别）&lt;/h2&gt;
&lt;h3&gt;主线 1 ·【AI/地球物理】隐式/生成式 FWI 从&quot;提出方法&quot;转向&quot;工程化改良&quot;，共同特征是&quot;低/零额外成本&quot;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;主榜 10 条里有 6 条落在这一带&lt;/strong&gt;（全部为 AI 线）：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;改良点&lt;/th&gt;
&lt;th&gt;额外成本&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;C2F-IFWI&lt;/strong&gt;（主榜 #3，arXiv 2610.01081）&lt;/td&gt;
&lt;td&gt;多分辨率哈希由粗到精激活&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;零额外参数&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;摄动式 IFWI&lt;/strong&gt;（补遗 B1，10.1093/gji/ggag403）&lt;/td&gt;
&lt;td&gt;参数分解 + 坐标归一化&lt;/td&gt;
&lt;td&gt;不改结构&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;谱归一化替代 WGAN-GP 梯度惩罚&lt;/strong&gt;（主榜 #6，10.1093/gji/ggag418）&lt;/td&gt;
&lt;td&gt;省掉插值采样&lt;/td&gt;
&lt;td&gt;更省&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;REG&lt;/strong&gt;（主榜 #5，arXiv 2610.05371）&lt;/td&gt;
&lt;td&gt;稳健集成引导：weighting + clipping&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;零额外 denoiser / forward 评估&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;扩散先验做正则&lt;/strong&gt;（主榜 #2，10.1029/2025jh001223）&lt;/td&gt;
&lt;td&gt;替换正则项&lt;/td&gt;
&lt;td&gt;不改主干&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Prior-free ISI&lt;/strong&gt;（主榜 #7，10.1093/gji/ggag406）&lt;/td&gt;
&lt;td&gt;连续表示降计算负担&lt;/td&gt;
&lt;td&gt;去掉先验依赖&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;判断&lt;/strong&gt;：这个领域已经过了&quot;堆大模型&quot;的阶段，正在进入**&quot;如何把已有的生成式/隐式表示接进物理流程而不炸&quot;**的阶段。这恰好是与工程条件最匹配的一段。&lt;/p&gt;
&lt;h3&gt;主线 2 ·【AI/地球物理·基础设施】基础设施终于出现：GeoFWI3D 大规模 3D 基准数据集&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;主榜 #1 GeoFWI3D&lt;/strong&gt;（arXiv 2610.01033，2026-10-01，&lt;strong&gt;License CC BY 4.0&lt;/strong&gt;）是本期、也是&lt;strong&gt;近 6 期以来第一个真正的大规模 3D 基准数据集&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;团队&lt;/strong&gt;：UT Austin + LANL + Uppsala + KFUPM（⚠️ 详见第八节）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：DOI &lt;strong&gt;&lt;code&gt;10.5281/zenodo.20148778&lt;/code&gt;&lt;/strong&gt;（✅ 已实测可解析）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Technical Validation 章节把 &lt;em&gt;4.5 Data-Driven Surrogate for Traveltime and Wavefield Prediction&lt;/em&gt; 与 &lt;em&gt;4.6 Training 3D Diffusion Models&lt;/em&gt; 列为正式技术验证任务&lt;/strong&gt;——说明&quot;神经算子做正演代理 + 扩散模型做速度建模&quot;已从单点方法变成&lt;strong&gt;基准数据集要评测的能力项&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;⚠️ &lt;strong&gt;论文第 6 节 &quot;Code availability&quot; 在 arXiv HTML 中为空，未解析出代码 URL&lt;/strong&gt;；数据集体量/格式未验证。&lt;strong&gt;这是本期的最高优先级挂账项。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;与 W39 的 SPBench 互补&lt;/strong&gt;：&lt;strong&gt;SPBench 说的是&quot;评测不规范&quot;，GeoFWI3D 提供的是&quot;可以用来规范评测的东西&quot;。&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;主线 3 ·【AI/地球物理】扩散模型在地球物理里的角色已分化成三种&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;角色&lt;/th&gt;
&lt;th&gt;代表条目&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;① 生成器 / 先验&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;主榜 #2（10.1029/2025jh001223，KAUST）、#5（REG）&lt;/td&gt;
&lt;td&gt;沿既有路线&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;② 正则化器&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;主榜 #2（替换正则项）&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;③ 多尺度特征提取器&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;补遗 B4 DiffClassNet&lt;/strong&gt;（10.1093/gji/ggag383）&lt;/td&gt;
&lt;td&gt;拿中间噪声水平的特征做分类&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;判断&lt;/strong&gt;：只把扩散模型当&quot;又一个生成式反演器&quot;会低估它。&lt;strong&gt;第三种用法（用扩散中间层的噪声水平特征做分类）在监督信号稀缺时尤其有用。&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;主线 4 ·【传统方法·HPC】HPC 侧继续薄弱，但本期&quot;最接近真 HPC&quot;的三条全部是传统方法线&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;本窗口内没有一条以&quot;大规模并行 / GPU 内核 / 显存优化&quot;为主贡献的地震条目&lt;/strong&gt;——但最接近的三条&lt;strong&gt;全部为传统方法&lt;/strong&gt;，且都在&lt;strong&gt;延伸观察&lt;/strong&gt;里：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;TREMOR&lt;/strong&gt;（分布式模板匹配，&lt;strong&gt;12× 加速且保证结果等价&lt;/strong&gt;，传统·HPC 系统）——&lt;strong&gt;本期已升入精选榜（见第三节）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5D Radon 内存高效群稀疏插值&lt;/strong&gt;（&lt;strong&gt;避免物化完整 5D 数组&lt;/strong&gt;——与 W39 的&quot;内存而非 FLOPs&quot;判据同源，传统·信号处理/HPC）——&lt;strong&gt;本期已升入精选榜&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SPECFEM3D 转动分量扩展&lt;/strong&gt;（谱元法数值方法，传统·数值）——&lt;strong&gt;本期已升入精选榜&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;叠加&lt;strong&gt;开源栈连续四期零 release&lt;/strong&gt;（Devito / ObsPy / SeisBench，本次双周复查日实测确认）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;结论仍然是：HPC 能力需要自建，不能等上游。&lt;/strong&gt; 且与 W39 一致——&lt;strong&gt;HPC 增量主要出现在传统方法线&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;这解释了为什么本期主榜里&quot;零额外算力开销&quot;的方法改良特别密集——整个领域都在算力受限下找便宜的涨点方式。&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;主线 5 ·【两类通用】来源结构与诚实性问题&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;期刊侧主导（延续 W39 的判断）&lt;/strong&gt;：主榜 10 条中 &lt;strong&gt;6 条来自正式期刊&lt;/strong&gt;（JGR ML&amp;amp;C ×2、GJI ×2、Interpretation ×1、&lt;em&gt;Geophysics&lt;/em&gt; ×1 计在补遗），&lt;strong&gt;4 条来自 arXiv&lt;/strong&gt;；&lt;strong&gt;补遗 6 条全部来自期刊&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;⚠️ 一个必须提醒自己的诚实性问题&lt;/strong&gt;：本期主榜 10 条中，&lt;strong&gt;只有 1 条（REG）给出了可直接引用的量化数字&lt;/strong&gt;（PSNR +6.2–8.2 dB、NS 误差 −26.4%）；其余各条的收益表述&lt;strong&gt;几乎全是定性的&lt;/strong&gt;（&quot;faster&quot;&quot;more accurate&quot;&quot;more robust&quot;&quot;promising&quot;）。
&lt;strong&gt;这意味着本期的&quot;进展&quot;更像方向确认而非性能突破&lt;/strong&gt;，任何基于这些条目做的选型决策都应该以自复现为准，&lt;strong&gt;不要直接引用摘要里的形容词&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;传统方法条目在延伸观察中富集&lt;/strong&gt;（6/12），与其进主榜与否无关地持续产出——&lt;strong&gt;说明&quot;传统方法没死&quot;，只是在本窗口的 AI 检索口径下被挤到观察区&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;三、本周精选 Top 10（AI/地球物理 6 条 + 传统方法 4 条，整体按相关性排序）&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;配比说明&lt;/strong&gt;：主窗口主榜原 10 条经归类后为 &lt;strong&gt;AI 9 条 + 传统 1 条&lt;/strong&gt;（Q-FWI）。传统方法可验证条目不足 4 条的原因：① 本周仅一个采集点、检索窗口仅 8 天；② 检索口径以&quot;AI + 地球物理&quot;为主，传统方法条目自然富集在延伸观察区。&lt;strong&gt;处理方式：从延伸观察升入 3 条可验证性较高的传统方法条目（TREMOR、SPECFEM3D 转动分量、5D Radon）补足 4 条配比&lt;/strong&gt;，升入条目的完整字段转述自日报延伸观察节、&lt;strong&gt;未做新推断&lt;/strong&gt;；被顶出的 3 条 AI 条目（Camie 油田、CRG 去混叠、谱归一化 GAN）移入提名区，&lt;strong&gt;信息无损失&lt;/strong&gt;。断档补遗中的 B5（BFBM3D）同为传统方法，因窗口归属问题保留在补遗节并标注类别。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;1. ⭐ GeoFWI3D：面向深度学习辅助地震成像的大规模三维速度模型数据集&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：AI/地球物理（基准数据集，服务于 DL 地震成像）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：UT Austin + LANL + Uppsala + KFUPM（⚠️ 见第八节）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.01033（v1，2026-10-01，physics.geo-ph，&lt;strong&gt;CC BY 4.0&lt;/strong&gt;）· https://arxiv.org/abs/2610.01033&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法/内容&lt;/strong&gt;：大规模 3D 速度模型数据集；Technical Validation 章节将&quot;数据驱动代理做走时/波场预测&quot;与&quot;训练 3D 扩散模型&quot;列为正式验证任务。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：Zenodo &lt;strong&gt;DOI 10.5281/zenodo.20148778&lt;/strong&gt;（✅ 已实测可解析；⚠️ 体量/格式未验证）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：⚠️ &lt;strong&gt;论文第 6 节 &quot;Code availability&quot; 在 arXiv HTML 中为空&lt;/strong&gt; → 未获取&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;最高价值的一条。&lt;/strong&gt; 它把&quot;神经算子做正演代理 + 扩散做速度建模&quot;从单点方法&lt;strong&gt;抬升为基准要评测的能力项&lt;/strong&gt;；与 SPBench 构成&quot;评测规范 / 可评测对象&quot;的互补组合。建议作为&lt;strong&gt;3D 代理模型与扩散 VMB 的统一评测底座&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据 + 数据 DOI 可解析性实测；⚠️ &lt;strong&gt;代码地址未获取（最高优先级挂账）&lt;/strong&gt;、数据集体量与格式未验证。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2. 扩散先验 + 神经算子的 time-lag 图像速度建模&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：AI/地球物理（扩散先验 + 神经算子）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：KAUST（Ma / Taufik / Alkhalifah）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;JGR: Machine Learning and Computation&lt;/em&gt; · https://doi.org/10.1029/2025jh001223（published [2026,10]，&lt;strong&gt;published-online 2026-10-03&lt;/strong&gt;，Crossref created 2026-10-03）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：以 &lt;strong&gt;time-lag 图像&lt;/strong&gt;为条件，用&lt;strong&gt;神经算子&lt;/strong&gt;增强的扩散先验做速度模型建立；明确做了 synthetic 与 field data 两个层面。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：合成 + 实测（详见全文）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;是 W39 期 09-23 #1（扩散式由浅到深 VMB）的&quot;可核验落地版本&quot;&lt;/strong&gt;——给出完整摘要 + 完整机构 + 上线日期，比 09-23 那条更可核验。建议作为&lt;strong&gt;扩散 VMB 的对照基线与复现目标&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ 期刊/DOI/机构/上线日期经 Crossref 核验；⚠️ 量化数值需读全文。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3. ⭐ REG：面向科学反问题的稳健集成引导&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：AI/地球物理（生成式反演器的后处理层）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：⚠️ &lt;strong&gt;机构未验证&lt;/strong&gt;（HTML 404，API 无 affiliation）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.05371（v1，2026-10-04，cs.LG）· https://arxiv.org/abs/2610.05371&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：&lt;strong&gt;面向&quot;已训练好的生成式反演器&quot;的零成本后处理层&lt;/strong&gt;——通过 &lt;strong&gt;weighting + clipping&lt;/strong&gt; 稳健化集成引导。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：科学反问题基准（黑洞成像场景；详见全文）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;量化（本期唯一一条给出可引用数字的条目）&lt;/strong&gt;：黑洞场景 &lt;strong&gt;PSNR +6.2–8.2 dB&lt;/strong&gt;，&lt;strong&gt;NS 误差 −26.4%&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未验证（⚠️）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;核心卖点是不额外调用 denoiser / forward model&lt;/strong&gt;——属于&quot;采样器外科手术&quot;式工作（前 5 期未见此类）。&lt;strong&gt;若已有训练好的扩散反演器，这是一层几乎零成本可直接加的后处理。&lt;/strong&gt; 建议先在小规模 FWI 扩散先验上做可行性验证。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：⚠️ 机构未验证、代码未验证；数字为作者自述。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4. TREMOR：面向大规模地震数据集合的分布式模板匹配&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：传统方法（分布式系统 / 数据序列处理；无学习组件）&lt;strong&gt;【自延伸观察升入，升入原因见配比说明】&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Manos Chatzakis、Rodrigo Flores-Allende、Mikael Freire、Yoann Cano、Léonard Seydoux、Themis Palpanas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.02534（2026-10-01，cs.DB）· https://arxiv.org/abs/2610.02534&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：分布式数据序列处理框架，处理超出单机内存的波形集合，用于大规模模板匹配。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据/量化&lt;/strong&gt;：&lt;strong&gt;比最佳竞速方法快达 12×，且返回完全相同（exact）的结果&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未验证（⚠️）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;本期 HPC 侧最有价值的一条。&lt;/strong&gt; &quot;exact same results + 12×&quot; 这类&lt;strong&gt;保证等价的加速&lt;/strong&gt;，在大规模模板匹配上是硬需求；其分布式序列处理架构对&quot;超出单机内存的地震数据集合&quot;场景有直接参考价值。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据与作者列表核验（转述自日报延伸观察节）；⚠️ 12× 为作者自述，代码未验证。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5. C2F-IFWI：隐式全波形反演的多分辨率哈希由粗到精编码&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：AI/地球物理（隐式神经表示 INR）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Linrong Wang / Shaowen Wang / Fan Min / Alkhalifah（⚠️ KAUST 由同组已出版论文反推确证，见第八节）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.01081（v1，2026-10-01，physics.geo-ph）· https://arxiv.org/abs/2610.01081&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：对隐式神经表示（INR）采用&lt;strong&gt;由粗到精的多分辨率哈希激活调度&lt;/strong&gt;，&lt;strong&gt;不增加任何可训练参数&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：FWI 基准（详见全文）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：本期&quot;IFWI 工程化改良&quot;三条正交路线之一，&lt;strong&gt;卖点是零额外参数&lt;/strong&gt;——在算力受限场景下这是最友好的一类涨点方式。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：⚠️ &lt;strong&gt;脚注 1（Linrong Wang、Fan Min）机构未解析&lt;/strong&gt;；代码未声明；量化收益未验证。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;6. Robust 5D 地震数据插值：内存高效群稀疏 Radon 变换&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：传统方法（信号处理 / 反演；ℓ1-ℓ1 群稀疏优化，无 DL）&lt;strong&gt;【自延伸观察升入，升入原因见配比说明】&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Ji Li（University of Calgary）、Dawei Liu（Xi&apos;an Jiaotong University）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;Geophysics&lt;/em&gt; · https://doi.org/10.1190/geo-2025-0371（created 2026-10-07）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：ℓ1-ℓ1 最小化 + &lt;strong&gt;强群稀疏&lt;/strong&gt;（沿慢度轴把 Radon 系数分入不重叠组 + 基于能量的贪婪选组）；关键工程贡献是&lt;strong&gt;内存高效实现&lt;/strong&gt;：不构造完整 5D Radon 立方体，而是跨频率片&lt;strong&gt;顺序累加群能量&lt;/strong&gt;，只对被选中的组更新系数。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据/量化&lt;/strong&gt;：合成数据上优于 POCS 与阻尼秩缩减（DRR）（⚠️ 具体指标需读全文）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;&quot;避免物化完整 5D 数组&quot;是典型的 HPC 内存优化模式&lt;/strong&gt;，与我们在大规模 FWI 上的显存/内存压力同源，与 W39 的&quot;内存而非 FLOPs&quot;判据同源——&lt;strong&gt;方法论可直接迁移&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ 期刊/DOI/作者机构核验（转述自日报延伸观察节）；⚠️ 量化对比数字需读全文。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;7. 共成像点道集（CIG）的自注意力 summary network 做速度建模&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：AI/地球物理（自注意力 + conditional flow matching）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Georgia Tech（Herrmann 组）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.09282（v1，2026-10-07，cs.LG / physics.geo-ph，&lt;strong&gt;CC BY 4.0&lt;/strong&gt;）· https://arxiv.org/abs/2610.09282&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：用&lt;strong&gt;自注意力 summary network&lt;/strong&gt; 从 CIG 提取摘要统计量，配合 &lt;strong&gt;conditional flow matching&lt;/strong&gt; 做速度建模。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：速度建模基准（详见全文）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：把 &lt;strong&gt;CIG 从&quot;诊断量&quot;升格为&quot;条件变量&quot;&lt;/strong&gt;——这是本期新增方向之一，且与 W38 的 09-15 #2（CIG 条件化扩散联合反演）形成同一条线的延续。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据与许可核验；⚠️ 量化结果需读全文。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;8. 谱元法扩展：转动地震动的直接模拟（SPECFEM3D 扩展）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：传统方法（谱元法数值模拟；无 DL）&lt;strong&gt;【自延伸观察升入，升入原因见配比说明】&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Anjali C. Dhabu、Aida Hejazi Nooghabi、Céline Hadziioannou&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2610.09568（2026-10-07）· https://arxiv.org/abs/2610.09568&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：扩展 &lt;strong&gt;SPECFEM3D&lt;/strong&gt;，在 Gauss-Lobatto-Legendre 积分点上由位移空间梯度直接计算转动地震动；提出 &lt;strong&gt;PGRR 图&lt;/strong&gt;（类比 PGV 图）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：印度河-恒河盆地 3D 模型——证明低速沉积层显著放大并重新分布转动地震动。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：⚠️ 未验证（若为 SPECFEM3D 扩展实现，与谱元法波场模拟栈可能有接口价值）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;谱元法正演的数值扩展&lt;/strong&gt;，直接服务于 SPECFEM3D 生态——若项目使用谱元法栈，这是近期少见的直接相关条目；同时是&quot;传统数值方法持续产出&quot;的又一例证。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据核验（转述自日报延伸观察节）；⚠️ 代码可用性未验证。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;9. Prior-free ISI：连续表示的无先验隐式地震反演&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：AI/地球物理（隐式连续表示）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：中国海洋大学&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;Geophysical Journal International&lt;/em&gt; · https://doi.org/10.1093/gji/ggag406（&lt;strong&gt;published-online 2026-10-05&lt;/strong&gt;，created 2026-10-01）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：用**连续表示（continuous representation）**做无需先验的隐式地震反演，降低计算负担。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：地震反演基准（详见全文）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;&quot;去掉先验依赖&quot;这个方向对跨工区迁移最友好&lt;/strong&gt;——不需要为每个新工区准备先验/预训练权重。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ 期刊/DOI/机构核验；⚠️ 量化收益未验证、代码未声明。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;10. 多参数黏弹性全波形反演（Q-FWI）用于 CO₂ 饱和度监测&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：传统方法（黏弹性多参数 FWI；无 DL）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：UT Austin + SINTEF&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;Interpretation&lt;/em&gt; · https://doi.org/10.1190/int-2025-1037（&lt;strong&gt;published-online 2026-10-07&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：多参数黏弹性 FWI 定量反演 CO₂ 饱和度。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：&lt;strong&gt;Sleipner OBN&lt;/strong&gt;（北海 CCS 示范场地）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;前 5 期 FWI 应用侧多为油气，CCUS 定量化为新增方向&lt;/strong&gt;。若涉及碳封存监测，这是本周唯一直接相关条目，且用的是公开示范场地（Sleipner）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ 期刊/DOI/机构核验；⚠️ 量化精度与饱和度误差未验证。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;断档补遗（2026-09-26 ~ 2026-09-30，主榜窗口之外的 5 天；含类别列）&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;因上期日报为 09-25、本期为 10-08，中间 &lt;strong&gt;13 天&lt;/strong&gt;存在采集断档。日报第二节单列了这 5 天的 6 条期刊产出，本文件完整继承。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;序&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;来源&lt;/th&gt;
&lt;th&gt;日期（published）&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;B1 ⭐&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Perturbation-Based Implicit FWI with Improved Optimization Conditioning&lt;/strong&gt;（摄动式 IFWI + 坐标归一化；中国海洋大学；测缺失低频）&lt;strong&gt;断档期最相关&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1093/gji/ggag403&lt;/td&gt;
&lt;td&gt;2026-09-30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B2&lt;/td&gt;
&lt;td&gt;Unsupervised erratic noise suppression in prestack gathers via PnP-ADMM with implicit neural representation（Calgary；⚠️ &lt;strong&gt;机构著录存疑&lt;/strong&gt;）&lt;/td&gt;
&lt;td&gt;AI（PnP + INR）&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1190/geo-2026-1753&lt;/td&gt;
&lt;td&gt;2026-09-30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B3&lt;/td&gt;
&lt;td&gt;Quasi-Global Search Behaviour of Large-Step Gradient-Based Optimization in FWI（KAUST）&lt;/td&gt;
&lt;td&gt;传统（优化方法）&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1111/1365-2478.70265&lt;/td&gt;
&lt;td&gt;2026-09-29&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B4&lt;/td&gt;
&lt;td&gt;Generative Diffusion Models for Geophysical Classification Problems（DiffClassNet；UT Austin BEG）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1093/gji/ggag383&lt;/td&gt;
&lt;td&gt;2026-09-28&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B5&lt;/td&gt;
&lt;td&gt;Seismic Random Noise Suppression Based on Block Flattening BM3D（BFBM3D；中国地质大学武汉）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;传统&lt;/strong&gt;（BM3D 变体去噪）&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1111/1365-2478.70262&lt;/td&gt;
&lt;td&gt;2026-09-27&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B6&lt;/td&gt;
&lt;td&gt;Probabilistic inversion of electromagnetic data using Stein variational gradient descent（SVGD；MIT + Houston）&lt;/td&gt;
&lt;td&gt;传统（贝叶斯数值反演）&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1093/gji/ggag392&lt;/td&gt;
&lt;td&gt;2026-09-26&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;⚠️ 补遗而非并入主榜的原因&lt;/strong&gt;：这 6 条的实际上线日落在 &lt;strong&gt;2026-09-26 ~ 09-30&lt;/strong&gt;，属于 &lt;strong&gt;W40（09-28 ~ 10-04）&lt;/strong&gt; 与前一周的交界，&lt;strong&gt;不在本期主窗口（10-01 ~ 10-08）内&lt;/strong&gt;。按周报口径，它们的&quot;应归周&quot;是 &lt;strong&gt;W39 末 / W40 初&lt;/strong&gt;，但因为 W40 无日报，只能在 W41 文件中以补遗形式保存。&lt;strong&gt;这是本文件最需要注意的口径点。&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;若按&quot;应归周&quot;（W39 末 / W40 初）口径统计两类分布，断档补遗为 AI 3 条 + 传统 3 条&lt;/strong&gt;——传统方法在断档期期刊侧的产出密度与 W39 结论一致。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h3&gt;本周提名区（被顶出主榜及延伸观察剩余条目；标注类别）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;序&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;来源&lt;/th&gt;
&lt;th&gt;备注&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;深度学习在大规模地震干扰压制中的实际应用：安哥拉 Camie 油田案例（345 km² 真实工区）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.09663&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;被顶出主榜&lt;/strong&gt;；⚠️ 机构未验证、处理时间数字未给出（需取 PDF）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;相邻 CRG 辅助多步深度学习框架做地震去混叠（同济大学）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1029/2026jh001391&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;被顶出主榜&lt;/strong&gt;；期刊/DOI/机构核验 ✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;基于谱归一化对抗学习的无监督物理约束速度反演（吉大+ETH+Harvard+浙大）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1093/gji/ggag418&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;被顶出主榜&lt;/strong&gt;；期刊/DOI/机构核验 ✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Twist Flow for Inverse Problems（Georgia Tech，Herrmann 组）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.09281&lt;/td&gt;
&lt;td&gt;与 #7 同组同日；针对&quot;后验欠覆盖/模态畸变&quot;，与 REG 互补&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Multi-Modal Surface Wave Inversion using Physics Guided VAE（UT Austin BEG）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.02337&lt;/td&gt;
&lt;td&gt;物理引导 VAE + Grad-CAM 解释 latent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;SeisDiff-FNO: FNO + 条件扩散做地震数据增强（KFUPM + KAUST）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1016/j.aiig.2026.100280&lt;/td&gt;
&lt;td&gt;Crossref/OpenAlex 均无摘要，&lt;strong&gt;仅方向信号&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;ISF-Unet：轻量 3D 地震断层分割网络（中国石油大学（北京）克拉玛依校区）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1190/int-2025-1008&lt;/td&gt;
&lt;td&gt;F3 / Kerry3D / 准噶尔盆地实际数据&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;Conformal Prediction for Earthquake Early Warning（CQR 90% 名义下达 90.03% 覆盖）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1093/gji/ggag415&lt;/td&gt;
&lt;td&gt;本期唯一给出&quot;覆盖率达标&quot;硬数字的 UQ 工作&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;多区域深度学习框架做低频地震检测（Kyoto University DPRI；Guerrero 地震空区 OBS）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1029/2026jh001455&lt;/td&gt;
&lt;td&gt;&quot;跨 6 构造域训练 → 单域标定 → 应用&quot;三段式&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;DeepStratNet：稀疏标注下的地震层位追踪（改分割为有界坐标回归）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.02494&lt;/td&gt;
&lt;td&gt;机构未验证&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;AI 辅助地质建模的条件化与解释工作流（Horizon Europe GO-Forward 项目）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.09871&lt;/td&gt;
&lt;td&gt;工业界&quot;成熟度&quot;表态&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;开源地震栈双周复查：Devito / ObsPy / SeisBench 均无新 release（连续四期）&lt;/td&gt;
&lt;td&gt;传统（基础设施）&lt;/td&gt;
&lt;td&gt;GitHub Releases API 实测（2026-10-08）&lt;/td&gt;
&lt;td&gt;下次复查日 2026-10-22&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;四、本周全量条目索引（28 条位；含类别列）&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;类别标注为本文件按&quot;分类口径&quot;对日报内容的重新归类，&lt;strong&gt;不改变日报原文&lt;/strong&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;主榜 10 条（窗口 2026-10-01 ~ 10-08）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;链接&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;GeoFWI3D: Large-scale 3D Velocity Model Dataset for DL-assisted Seismic Imaging&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2610.01033&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Diffusion Priors Enhanced VMB From Time-Lag Images Using a Neural Operator&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1029/2025jh001223&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Coarse-to-fine multi-resolution hash encoding for implicit FWI（C2F-IFWI）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2610.01081&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Self-attention summary networks for subsurface VMB from CIGs&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2610.09282&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Robust Ensemble Guidance for Scientific Inverse Problems（REG）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2610.05371&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Unsupervised physics-constrained velocity inversion based on spectral normalization adversarial learning&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1093/gji/ggag418&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Prior-free implicit seismic inversion with continuous representation（ISI）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1093/gji/ggag406&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Multi-Parameter Viscoelastic FWI (Q-FWI) for CO2 Saturation Monitoring&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1190/int-2025-1037&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Seismic Deblending via an Adjacent-CRG-Assisted Multistep DL Framework&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1029/2026jh001391&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Real-world application of DL in large-scale seismic interference attenuation（Camie field, Angola）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2610.09663&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;断档补遗 6 条（2026-09-26 ~ 09-30）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;链接&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;B1&lt;/td&gt;
&lt;td&gt;Perturbation-Based Implicit FWI with Improved Optimization Conditioning ⭐&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1093/gji/ggag403&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B2&lt;/td&gt;
&lt;td&gt;Unsupervised erratic noise suppression via PnP-ADMM with implicit neural representation&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1190/geo-2026-1753&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B3&lt;/td&gt;
&lt;td&gt;Quasi-Global Search Behaviour of Large-Step Gradient-Based Optimization in FWI&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1111/1365-2478.70265&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B4&lt;/td&gt;
&lt;td&gt;Generative Diffusion Models for Geophysical Classification Problems（DiffClassNet）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1093/gji/ggag383&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B5&lt;/td&gt;
&lt;td&gt;Seismic Random Noise Suppression Based on Block Flattening BM3D（BFBM3D）&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1111/1365-2478.70262&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B6&lt;/td&gt;
&lt;td&gt;Probabilistic inversion of electromagnetic data using SVGD&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1093/gji/ggag392&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;延伸观察 12 条（未进主榜，供追踪；其中 3 条已升入精选榜）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;链接&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Twist Flow for Inverse Problems（Georgia Tech）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.09281&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Multi-Modal Surface Wave Inversion using Physics Guided VAE（UT Austin BEG）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.02337&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;TREMOR: Template Matching for Large Seismic Data Collections（⭐ 已升入精选榜 #4）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;arXiv 2610.02534&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Spectral Element Extension for Direct Simulation of Rotational Ground Motions（⭐ 已升入精选榜 #8）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;arXiv 2610.09568&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;SeisDiff-FNO（FNO + 条件扩散）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1016/j.aiig.2026.100280&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Robust 5D seismic data interpolation via memory-efficient group sparse Radon transform（⭐ 已升入精选榜 #6）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;10.1190/geo-2025-0371&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;ISF-Unet：轻量 3D 断层分割&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1190/int-2025-1008&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Conformal Prediction for Earthquake Early Warning&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1093/gji/ggag415&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;开源地震栈双周复查（无新 release，连续四期）&lt;/td&gt;
&lt;td&gt;传统（基础设施）&lt;/td&gt;
&lt;td&gt;GitHub Releases API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;多区域 DL 框架做低频地震检测（Kyoto DPRI）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1029/2026jh001455&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;DeepStratNet：稀疏标注层位追踪&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.02494&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;AI 辅助地质建模工作流（Horizon Europe 项目）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2610.09871&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;五、本周演化：重复 / 升级 / 新增方向（分两线）&lt;/h2&gt;
&lt;h3&gt;5.A AI/地球物理线&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;重复（本期检索再次命中）&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;前期位置&lt;/th&gt;
&lt;th&gt;本期判定&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Structure-Driven Methodology: An Emerging Cross-Domain Paradigm&lt;/strong&gt;（arXiv 2610.02698，2026-10-02）&lt;/td&gt;
&lt;td&gt;W39 期 09-21 主榜 #1（Structure-Driven Inversion，传统范式线）&lt;/td&gt;
&lt;td&gt;同一&quot;结构驱动&quot;范式的再表述，&lt;strong&gt;判定为重复，不进主榜&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SeisDiff-FNO&lt;/strong&gt;（10.1016/j.aiig.2026.100280）&lt;/td&gt;
&lt;td&gt;与 W39 期 09-24 主榜 #2「高低频协同 FNO 三维声波场」同属 FNO + 地震方向&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;方向重复&lt;/strong&gt;；且&lt;strong&gt;本期因拿不到摘要而方法未验证&lt;/strong&gt;，维持延伸观察&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;升级（前期&quot;信号&quot;→ 本期拿到可核验的新证据）&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;09-24 主榜 #2「高低频协同 FNO 三维声波场」→ 本期升级为&quot;有基准支撑的方向&quot;。&lt;/strong&gt; 本期 &lt;strong&gt;GeoFWI3D&lt;/strong&gt; 在 Technical Validation 章节中把 &lt;em&gt;4.5 Data-Driven Surrogate for Traveltime and Wavefield Prediction&lt;/em&gt; 与 &lt;em&gt;4.6 Training 3D Diffusion Models&lt;/em&gt; 列为&lt;strong&gt;正式的技术验证任务&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-23 主榜 #1「扩散式由浅到深速度建模」→ 本期出现同类范式的可核验落地版本。&lt;/strong&gt; JGR ML&amp;amp;C 的 &lt;strong&gt;10.1029/2025jh001223&lt;/strong&gt;（KAUST）给出&lt;strong&gt;完整摘要 + 完整机构 + 上线日期&lt;/strong&gt;，并明确做了 synthetic 与 field data 两个层面。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;隐式 FWI（IFWI）从&quot;零星出现&quot;升级为&quot;本期主线&quot;。&lt;/strong&gt; 前 5 期 IFWI 只是偶发；本期&lt;strong&gt;一次性出现 3 条相互正交的 IFWI 改进&lt;/strong&gt;：多分辨率哈希由粗到精（主榜 #3）、摄动参数化（补遗 B1）、GAN 谱归一化（主榜 #6）。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;本周新增方向&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;🆕 &lt;strong&gt;大规模 3D 速度模型开源基准数据集&lt;/strong&gt;（GeoFWI3D）——前 5 期主榜&lt;strong&gt;从未有&quot;数据集/基准&quot;类条目排在首位&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;🆕 &lt;strong&gt;IFWI 的&quot;由粗到精哈希激活&quot;与&quot;摄动参数化&quot;&lt;/strong&gt;——两条都&lt;strong&gt;不增加可训练参数&lt;/strong&gt;、都是参数化层面的改动。&lt;/li&gt;
&lt;li&gt;🆕 &lt;strong&gt;面向&quot;已训练好的生成式反演器&quot;的零成本后处理层&lt;/strong&gt;（REG 的 weighting + clipping；另有 Twist Flow 的 likelihood 侧坐标）——前 5 期未见此类&quot;采样器外科手术&quot;式工作。&lt;/li&gt;
&lt;li&gt;🆕 &lt;strong&gt;把 CIG（共成像点道集）从诊断量升格为条件变量&lt;/strong&gt;（self-attention summary network + conditional flow matching）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;5.B 传统方法线&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;重复&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;无本期新重复（上期传统线条目未在本窗口再次命中；SPBench 项目页仍挂账未复查——SPBench 本身为 AI 线）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;升级&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&quot;内存而非 FLOPs&quot;判据（W39 传统 HPC 线结论）在本期获得第三条独立佐证&lt;/strong&gt;：5D Radon 内存高效实现（避免物化完整 5D 数组）。该判据的跨周证据链现为：W39（TorchFDTD、Kokkos、Diff-NekRS、分布式 SVGD）→ W41（5D Radon）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;开源栈生态的数值扩展仍在推进&lt;/strong&gt;（SPECFEM3D 转动分量扩展），尽管官方 release 连续四期零更新——&lt;strong&gt;&quot;工具链低活跃 ≠ 方法侧停滞&quot;&lt;/strong&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;本周新增方向&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;🆕 &lt;strong&gt;黏弹性 Q-FWI 用于 CCUS 饱和度定量&lt;/strong&gt;（Interpretation，UT Austin + SINTEF）——前 5 期 FWI 应用侧多为油气，&lt;strong&gt;CCUS 定量化为新增&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;🆕 &lt;strong&gt;保证结果等价的大规模分布式模板匹配&lt;/strong&gt;（TREMOR，12× 且 exact）——区别于此前&quot;近似加速&quot;类 HPC 条目。&lt;/li&gt;
&lt;li&gt;🆕 &lt;strong&gt;谱元法直接模拟转动地震动&lt;/strong&gt;（PGRR 图）——转动分量模拟首次进入本系列视野。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;5.C 两线交叉观察&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;传统方法在延伸观察区富集（6/12）&lt;/strong&gt;，与 W39&quot;期刊侧是传统方法富矿&quot;结论同源——延伸观察的来源同样以期刊为主（5D Radon〔Geophysics〕、SPECFEM 扩展〔arXiv〕、开源栈复查〔GitHub 实测〕）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;断档补遗的 6 条中传统方法占 3 条&lt;/strong&gt;（B3 大步长优化、B5 BFBM3D、B6 SVGD 电磁）——断档期的期刊产出延续 W39 的传统方法密度。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 线的&quot;零成本改良&quot;主线（主线 1）与传统线的&quot;内存工程&quot;主线（主线 4）是同一算力约束的两面&lt;/strong&gt;：前者绕开算力需求，后者降低算力需求。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;六、本周趋势总结（分两线）&lt;/h2&gt;
&lt;h3&gt;6.A AI/地球物理线&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;本期最突出的信号：隐式/生成式 FWI 从&quot;提出方法&quot;转向&quot;工程化改良&quot;，且改良的共同特征是&quot;低/零额外成本&quot;。&lt;/strong&gt; 主榜 10 条中 6 条落在此带。领域已过&quot;堆大模型&quot;阶段，进入&quot;如何把已有的生成式/隐式表示接进物理流程而不炸&quot;的阶段。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第二条主线：基础设施终于出现。&lt;/strong&gt; GeoFWI3D 与 SPBench 互补——&lt;strong&gt;前者提供可用来规范评测的东西，后者指出评测不规范。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第三条：扩散模型在地球物理里的角色已分化成三种&lt;/strong&gt;（生成器/先验、正则化器、多尺度特征提取器）。&lt;strong&gt;只当&quot;又一个生成式反演器&quot;会低估它。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;⚠️ 诚实性问题：本期主榜 10 条中只有 1 条给出可直接引用的量化数字。&lt;/strong&gt; 其余各条收益表述几乎全是定性的。&lt;strong&gt;这意味着本期的&quot;进展&quot;更像方向确认而非性能突破。&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;6.B 传统方法线&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;传统方法条目在延伸观察区富集（6/12），且本期&quot;最接近真 HPC&quot;的三条全部是传统方法线&lt;/strong&gt;（TREMOR 分布式模板匹配、5D Radon 内存高效、SPECFEM3D 扩展）。叠加开源栈连续四期零 release，&lt;strong&gt;HPC 能力仍需自建&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&quot;内存而非 FLOPs&quot;判据获得跨周第三、四条独立佐证&lt;/strong&gt;（5D Radon 避免物化完整数组；TREMOR 处理超出单机内存的集合）——该判据已可视为传统 HPC 线的&lt;strong&gt;稳定结论&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CCUS 定量化（Q-FWI + Sleipner OBN）为传统 FWI 应用侧的新增方向&lt;/strong&gt;——与 AI 线无关，纯物理建模能力驱动的扩展。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;断档期（09-26~09-30）期刊产出中传统方法占一半&lt;/strong&gt;（B3/B5/B6），再次印证&quot;期刊侧是传统方法富矿&quot;（W39 结论第三次成立）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;6.C 综合判断&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;本周两线产出比约 19:9（AI:传统），但主榜原序口径下为 9:1——传统方法在本期被&quot;检索口径 + 单采集点 + 半周窗口&quot;三重因素压到了延伸观察区。&lt;/strong&gt; 升入 3 条后配比恢复为 6:4，但必须说明：&lt;strong&gt;这是整理动作对检索口径偏差的补偿，不是传统方法真实产出密度的下降。&lt;/strong&gt; 事实上延伸观察 + 断档补遗中的传统方法条目数（9 条）与 AI 线的差距远小于主榜呈现的 9:1。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;七、对项目的行动建议（本周）&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;课题口径仍为默认的 &lt;strong&gt;AI + HPC + 地震数据处理 + FWI&lt;/strong&gt;。以下均为建议，&lt;strong&gt;未执行任何操作&lt;/strong&gt;。括号内为所属线别。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;A. 立即可做（低风险、低成本，1–3 天）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;下载并核对 GeoFWI3D 数据体量&lt;/strong&gt;——DOI &lt;code&gt;10.5281/zenodo.20148778&lt;/code&gt; 已实测可解析、CC BY 4.0。&lt;strong&gt;先确认体量与格式，再决定是否作为内部 3D 代理模型评测底座&lt;/strong&gt;（AI 线）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;给现有扩散反演器加一层 REG 式 post-processing&lt;/strong&gt;（weighting + clipping）做可行性验证——&lt;strong&gt;零额外 denoiser/forward 调用&lt;/strong&gt;，是本周期性价比最高的一条工程化改良（AI 线）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;把 GeoFWI3D 的 Technical Validation 任务清单（4.5 走时/波场代理、4.6 3D 扩散）转成内部评测 checklist&lt;/strong&gt;——它代表社区认可的&quot;能力项&quot;（AI 线）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;把 IFWI 三条正交改良（哈希激活 / 摄动参数化 / 谱归一化）列为对现有 INR 反演管线的可选改动&lt;/strong&gt;，&lt;strong&gt;优先级按&quot;改动量从小到大&quot;排序&lt;/strong&gt;（AI 线）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;在下次数据规整任务中评估&quot;避免物化完整数组&quot;模式&lt;/strong&gt;（5D Radon 的跨频率片顺序累加）能否用于现有大规模数据体处理（传统/HPC 线）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;B. 需要评估（有收益但需先做可行性判断，1–4 周）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;评估 Q-FWI 用于 CCUS 监测的可行性&lt;/strong&gt;——Sleipner OBN 是公开示范场地，可先做数据可获取性调研（传统线）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;评估&quot;Prior-free ISI&quot;对跨工区迁移的价值&lt;/strong&gt;——去掉先验依赖意味着不需要为每个新工区准备先验/预训练权重（AI 线）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;评估 CIG 作为条件变量的通用性&lt;/strong&gt;（自注意力 summary network + flow matching），看能否接入现有速度建模流程（AI 线）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;评估 TREMOR 式&quot;保证等价的分布式处理&quot;对内部大规模波形任务的适用性&lt;/strong&gt;——exact + 12× 的组合在需要可复现性的场景价值高（传统/HPC 线）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;评估 Camie 油田案例的处理时间收益&lt;/strong&gt;——⚠️ &lt;strong&gt;需先取 PDF&lt;/strong&gt;，摘要未给出时间对比数字（AI 线）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;C. 仅记录（暂不投入）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Structure-Driven 范式的再次表述&lt;/strong&gt;（arXiv 2610.02698，传统范式线）——已判定为重复，维持季度级跟踪。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SeisDiff-FNO（10.1016/j.aiig.2026.100280）&lt;/strong&gt;（AI 线）——Crossref / OpenAlex 均无摘要，&lt;strong&gt;仅为方向信号&lt;/strong&gt;，作者组合可信，可设提醒。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&quot;Twist Flow 的 likelihood 侧坐标&quot;&lt;/strong&gt;（AI 线）——同属零成本后处理层，与 REG 一并跟踪。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;D. HPC 侧的具体提醒&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;开源栈复查结论（本次为双周复查日）&lt;/strong&gt;：Devito v4.8.23 / 2026-08-07；ObsPy 1.5.1 / 2026-08-28；SeisBench v0.12.0 / 2026-06-24——&lt;strong&gt;均无新版本，连续四期成立&lt;/strong&gt;。&lt;strong&gt;下次到期复查日：2026-10-22。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&quot;延伸观察中的 HPC 线索&quot;单独建追踪列表&lt;/strong&gt;——本期已通过&quot;延伸观察升入精选榜&quot;动作部分解决（TREMOR、5D Radon、SPECFEM 扩展进榜），后续每期延续该机制，避免传统 HPC 条目反复停留在观察区。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;继续保持&quot;内存而非 FLOPs&quot;作为硬约束&lt;/strong&gt;（5D Radon 避免物化完整 5D 数组，与 W39 判据同源，本期为第三条独立佐证）。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;八、未解决项 / 需人工确认&lt;/h2&gt;
&lt;h3&gt;8.1 本期新增的未验证项&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;缺口&lt;/th&gt;
&lt;th&gt;建议处理&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;GeoFWI3D&lt;/strong&gt;（2610.01033）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;论文第 6 节 &quot;Code availability&quot; 在 arXiv HTML 中&lt;strong&gt;为空&lt;/strong&gt;，未解析出代码 URL；数据集体量/格式未验证&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;⭐ 最高优先级&lt;/strong&gt;：取 PDF 版或联系通讯作者确认代码地址；下载后核对体量&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;C2F-IFWI&lt;/strong&gt;（2610.01081）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;脚注 1（Linrong Wang、Fan Min）机构未解析&lt;/td&gt;
&lt;td&gt;取 PDF 版看脚注；或按作者名检索机构主页&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;REG&lt;/strong&gt;（2610.05371）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;机构未验证（HTML 404，API 无 affiliation）；代码未验证&lt;/td&gt;
&lt;td&gt;等 arXiv 生成 HTML 后复查&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;TREMOR&lt;/strong&gt;（2610.02534）&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;12× 加速为作者自述；代码未验证&lt;/td&gt;
&lt;td&gt;⚠️ 本条自延伸观察升入精选榜，&lt;strong&gt;升入依据为日报延伸观察节原文&lt;/strong&gt;，量化数字未复核&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;5D Radon 插值&lt;/strong&gt;（10.1190/geo-2025-0371）&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;合成上&quot;优于 POCS 与 DRR&quot;的具体指标未给出&lt;/td&gt;
&lt;td&gt;同上，升入依据为日报原文；量化数字需读全文&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Camie 油田 SI 压制&lt;/strong&gt;（2610.09663）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;机构未验证（HTML 404）；&lt;strong&gt;处理时间对比的具体数字未给出&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;同上；时间对比数字是本条最重要的信息，&lt;strong&gt;建议取 PDF&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;SeisDiff-FNO&lt;/strong&gt;（10.1016/j.aiig.2026.100280）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;Crossref 与 OpenAlex &lt;strong&gt;均无摘要&lt;/strong&gt;，方法完全未验证&lt;/td&gt;
&lt;td&gt;等全文上线；作者组合可信，可设提醒&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;10.1190/geo-2024-0841&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;与 geo-2026-1753 同标题，但 Crossref 摘要内容为&quot;荔湾凹陷 OBS + 拖缆速度建模&quot;，明显错配&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;判定为重复/错配记录&lt;/strong&gt;，以 geo-2026-1753 为准；需人工在 SEG 平台确认&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;geo-2026-1753 机构著录存疑&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI（PnP-INR）&lt;/td&gt;
&lt;td&gt;Crossref 把 Daniel Trad 标为西安交通大学，与其长期任职 Calgary 矛盾&lt;/td&gt;
&lt;td&gt;疑似 affiliation 索引错位，需人工确认&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;JAG / C&amp;amp;G 多条&lt;/strong&gt;（106382、106403、106406、106392、106415 等）&lt;/td&gt;
&lt;td&gt;混合&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Crossref 无摘要&lt;/strong&gt;；且 &lt;code&gt;created&lt;/code&gt; 为 2026-06/07、&lt;strong&gt;仅 &lt;code&gt;published&lt;/code&gt; 落在 2026-10&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;日期口径存疑&lt;/strong&gt;（可能是 10 月号而非 10 月新上线），故未进主榜。若需纳入，需人工到 Elsevier 平台确认上线日期&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;8.2 跨期悬置项（多日未解决，需人工介入）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;SPBench 项目页&lt;/strong&gt; &lt;code&gt;https://seismicprocessingbenchmark.github.io/SPBench/&lt;/code&gt; —— W39 期 09-25 v2 已降级为&lt;strong&gt;每周复查&lt;/strong&gt;，&lt;strong&gt;本期未复查，继续挂账&lt;/strong&gt;。地址已由论文图注确证，页面未上线。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;4 篇 Springer &lt;em&gt;Applied Geophysics&lt;/em&gt; 条目仍需批量取 PDF&lt;/strong&gt;：10.1007/s11770-026-1617-5（GPR FWI 初始模型，传统）、10.1007/s11770-026-1608-6（ViT 重力反演，AI）、10.1007/s11770-026-1616-6（Radon-FISTA，传统）、10.1007/s11770-026-1547-2（Kalman 走时反演，传统）。&lt;strong&gt;Springer 不提供结构化摘要，API 路径已走到尽头，只能人工取 PDF。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;10.1007/s11770-026-1587-7&lt;/strong&gt;（U-Net 三维重力反演）—— W39 期 09-25 v2 已建议&lt;strong&gt;停止跟踪&lt;/strong&gt;，本期不再复查。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RSDB&lt;/strong&gt;（10.1016/j.eqs.2026.06.001，全球 Raspberry Shake 波形数据集）—— 机构/摘要/数据地址全缺，日期口径冲突（published [2026,10] vs created 2026-09-23）。&lt;strong&gt;本期 Earthquake Science 扫描再次命中，仍未解决。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agentic FWI 摘要&lt;/strong&gt;（10.1007/s11004-026-10342-5）、&lt;strong&gt;&lt;em&gt;Science China&lt;/em&gt; 生成式 AI 综述摘要&lt;/strong&gt;（10.1007/s11430-025-2038-7）、&lt;strong&gt;伴随法小震矩释放率摘要&lt;/strong&gt;（rs-3.rs-10679490/v1）、&lt;strong&gt;BicycleGAN 日期冲突&lt;/strong&gt;（10.1016/j.cageo.2026.106272）——&lt;strong&gt;均跨期 ≥3 期未推进&lt;/strong&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;8.3 本周口径层面的新教训（务必记住）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;教训&lt;/th&gt;
&lt;th&gt;内容&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;⚠️ 断裂周期需单列补遗&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;上期 09-25、本期 10-08，&lt;strong&gt;间隔 13 天&lt;/strong&gt;且中间 W40 无日报。&lt;strong&gt;处理口径：主榜严格按 7 天窗口编制，断档区间单列&quot;补遗&quot;，并标注其&quot;应归周&quot;是 W39 末 / W40 初。&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;⚠️ &quot;同标题双 DOI&quot;需主动查重&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;Geophysics&lt;/em&gt; 的 &lt;code&gt;geo-2024-0841&lt;/code&gt; 与 &lt;code&gt;geo-2026-1753&lt;/code&gt; &lt;strong&gt;标题相同&lt;/strong&gt;，但前者 Crossref 摘要实为&quot;荔湾凹陷 OBS 速度建模&quot; → &lt;strong&gt;错配记录&lt;/strong&gt;。&lt;strong&gt;下期对进主榜条目额外按标题做一次 Crossref 查重。&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;⭐ 传统方法配比不足时的处理范式（本期确立）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;主窗口可验证传统条目不足 4 条时：① 从延伸观察升入可验证条目并逐条注明升入依据；② 断档补遗中的传统条目标注类别备用；③ 明确说明&quot;不足原因&quot;（检索口径偏向 AI + 单采集点），&lt;strong&gt;不凑数、不降验证标准&lt;/strong&gt;。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;⭐ 新路径：arXiv HTML 404 时用&quot;同组已出版论文&quot;的 Crossref 机构字段反推 affiliation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;本期 2610.01081 的 KAUST 由同组 10.1111/1365-2478.70265（Shaowen Wang / Alkhalifah）确证。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Crossref 429 加剧&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;请求间隔需 ≥2.5 s + 3 次重试（1.2 s 不够）。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;arXiv HTML 可用率下降&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;本窗口 12 篇中 7 篇 HTML 404 → &lt;strong&gt;必须配 arXiv API &lt;code&gt;id_list&lt;/code&gt; 兜底取摘要/作者&lt;/strong&gt;。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;期刊侧继续主导&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;主榜 6/10 来自期刊，补遗 6/6 全部来自期刊。&lt;strong&gt;再次确认 ISSN 区间扫描优先于 arXiv &lt;code&gt;cat:&lt;/code&gt; 检索。&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;8.4 需人工确认的性能数字&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;本期主榜 10 条中只有 1 条（REG）给出可直接引用的量化数字&lt;/strong&gt;（PSNR +6.2–8.2 dB、NS 误差 −26.4%）；其余 9 条摘要&lt;strong&gt;全是定性表述&lt;/strong&gt;。升入精选榜的 TREMOR（12× exact）与 5D Radon（优于 POCS/DRR）同样为&lt;strong&gt;作者自述、未复核&lt;/strong&gt;。已逐条在日报中标注，&lt;strong&gt;未做任何数字推测&lt;/strong&gt;。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;九、检索说明与本文件生成方式&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;本文件不是检索产物&lt;/strong&gt;。生成过程为：读取 &lt;code&gt;AI每日总结_2026-10-08.md&lt;/code&gt;（主榜 10 条 + 断档补遗 6 条 + 延伸观察 12 条）→ 按 ISO 周归入 W41 → 抽取该期的&quot;〇 对比&quot;&quot;趋势总结&quot;&quot;未解决项&quot; → &lt;strong&gt;按&quot;AI/地球物理 + 传统方法&quot;两分类重新归类并标注&lt;/strong&gt; → 因主窗口传统条目不足 4 条，&lt;strong&gt;自延伸观察升入 3 条可验证传统方法条目&lt;/strong&gt;（TREMOR、SPECFEM3D 转动分量、5D Radon），被顶出的 3 条 AI 条目移入提名区 → 输出本文件。&lt;strong&gt;未访问任何外部数据源。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;两类条数分布&lt;/strong&gt;：28 条位中 &lt;strong&gt;AI/地球物理 19 条 / 传统方法 9 条&lt;/strong&gt;（主榜 9:1；补遗 4:2；延伸观察 6:6）。精选 Top 10 配比 &lt;strong&gt;6:4&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;⚠️ 传统方法不足 4 条的原因与处理&lt;/strong&gt;：主窗口主榜原仅 1 条传统方法（Q-FWI）。原因有三：① 本周仅 10-08 一个采集点、窗口仅 8 天；② 日报检索口径以&quot;AI + 地球物理&quot;为主，传统条目天然富集于延伸观察；③ W40 整周空缺使断档期期刊产出（传统方法密度高的来源）只能以补遗形式存在。&lt;strong&gt;处理：从延伸观察升入 3 条（TREMOR / SPECFEM3D 扩展 / 5D Radon），全部为可验证条目、逐条注明升入依据；未凑数、未降低验证标准。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;历史重复/升级/新增&lt;/strong&gt;：重复 2 条（SDI 范式再表述〔传统〕、SeisDiff-FNO 方向重复〔AI〕）；升级 3 项（FNO 方向获基准支撑〔AI〕、扩散 VMB 获可核验版本〔AI〕、内存判据获第三条佐证〔传统〕）；新增方向 AI 线 4 项 + 传统线 3 项。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;⚠️ 2026-10-08 变更&lt;/strong&gt;：按用户要求，本期日报 &lt;code&gt;AI每日总结_2026-10-08.md&lt;/code&gt; 已随全部 12 份历史日报移出主目录，现留存于工作区 &lt;code&gt;.回收站_日报_2026-10-08/&lt;/code&gt; 与外部备份 &lt;code&gt;/home/liguolong/geo_scratch/backup_日报_2026-10-08/&lt;/code&gt;（删除前校验一致）。&quot;回溯入口&quot;请改到上述两处查阅。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;⚠️ 本文件的覆盖不完整，需在下一期补齐的部分&lt;/strong&gt;：
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;W40（09-28 ~ 10-04）整周无日报&lt;/strong&gt;——该周的期刊产出（尤其 10-01 ~ 10-04 段）可能未被完整捕获；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;W41 内 10-09 ~ 10-11 无采集&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;断档补遗 6 条的&quot;应归周&quot;是 W39 末 / W40 初，本文件仅为保存处，&lt;strong&gt;周口径上存在跨周漂移&lt;/strong&gt;。
&lt;strong&gt;建议：下一期日报生成时，把检索窗口显式设为&quot;自上期日报日至今&quot;，避免再次出现 13 天断档。&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;归并口径声明&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;周划分 = ISO 周（周一~周日）。&lt;/li&gt;
&lt;li&gt;本周仅一个采集点，主榜原序不重排；&lt;strong&gt;精选榜为满足 6:4 配比做了一次重排（升入 + 顶出），已在配比说明中逐条注明&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;诚实性声明&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;所有链接、作者、机构、日期、数字&lt;strong&gt;均转述自日报原文&lt;/strong&gt;；日报未验证的一律沿用&quot;未验证/需人工确认&quot;标注，&lt;strong&gt;本文件未做任何新推断或补齐&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;日报中标为&quot;企业新闻口径&quot;&quot;二手来源&quot;&quot;推断&quot;的内容，&lt;strong&gt;在本文件中保持原标注&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;front matter 说明&lt;/strong&gt;：周报使用 &lt;code&gt;tags&lt;/code&gt; / &lt;code&gt;category&lt;/code&gt; 均为 &lt;code&gt;&quot;AI每周总结&quot;&lt;/code&gt;。若站点分类体系需要与日报保持一致，请把 &lt;code&gt;category&lt;/code&gt; 改为 &lt;code&gt;&quot;AI每日总结&quot;&lt;/code&gt;，其余字段不变。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;只读优先&lt;/strong&gt;：本文件生成过程未执行任何写入以外的操作，未提交、未删除、未覆盖任何既有文件。&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>makefile： 管理项目基本用法</title><link>https://tuoyuangui.github.io/website/posts/typora/%E7%BC%96%E8%AF%91%E8%B0%83%E8%AF%95/makefile%E5%9F%BA%E6%9C%AC%E7%94%A8%E6%B3%95/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E7%BC%96%E8%AF%91%E8%B0%83%E8%AF%95/makefile%E5%9F%BA%E6%9C%AC%E7%94%A8%E6%B3%95/</guid><pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;makefile： 管理项目基本用法&lt;/h1&gt;
&lt;h2&gt;1、 基本介绍&lt;/h2&gt;
&lt;p&gt;使用 GCC 的命令行进行程序编译在单个文件下是比较方便的，当工程中的文件逐渐增多，甚至变得十分庞大的时候，使用 GCC 命令编译就会变得力不从心。这种情况下我们需要借助项目构造工具 make 帮助我们完成这个艰巨的任务。 make是一个命令工具，是一个解释makefile中指令的命令工具。&lt;/p&gt;
&lt;p&gt;make工具在构造项目的时候需要加载一个叫做makefile的文件，makefile关系到了整个工程的编译规则。一个工程中的源文件不计数，其按类型、功能、模块分别放在若干个目录中，makefile定义了一系列的规则来指定哪些文件需要先编译，哪些文件需要后编译，哪些文件需要重新编译，甚至于进行更复杂的功能操作，因为makefile就像一个Shell脚本一样，其中也可以执行操作系统的命令。&lt;/p&gt;
&lt;p&gt;makefile带来的好处就是——“自动化编译”，一旦写好，只需要一个make命令，整个工程完全自动编译，极大的提高了软件开发的效率。makefile文件有两种命名方式 makefile 和 Makefile，构建项目的时候在哪个目录下执行构建命令 make这个目录下的 makefile 文件就会别加载，因此在一个项目中可以有多个 makefile 文件，分别位于不同的项目目录中。&lt;/p&gt;
&lt;h2&gt;2、基本用法&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;命名：&lt;/strong&gt;&lt;code&gt;makefile&lt;/code&gt;	&lt;code&gt;Makefile&lt;/code&gt;   (make) 命令&lt;/p&gt;
&lt;p&gt;**1 个规则：**依赖条件（一个tab缩进）命令&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;目标的时间必须晚于依赖条件的时间，否则，更新目标&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;依赖条件如果不存在，找寻新的规则去产生依赖条件。
&lt;strong&gt;ALL：指定 makefile 的终极目标。否则终极目标是第一个目标&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;2 个函数：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;src = $(wildcard ./*.c): 匹配当前工作目录下的所有.c 文件。将文件名组成列表，赋值给变量 src。
src = add.c sub.c div1.c

obj = $(patsubst %.c, %.o, $(src)): 将参数3中，包含参数1的部分，替换为参数2。
obj = add.o sub.o div1.o

clean:	(没有依赖)
    -rm -rf $(obj) a.out    “-”：作用是，删除不存在文件时，不报错。顺序执行结束。
    make clean -n  模拟执行
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;3 个自动变量：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$@: 在规则的命令中，表示规则中的目标。

$^: 在规则的命令中，表示所有依赖条件。

$&amp;lt;: 在规则的命令中，表示第一个依赖条件。
如果将该变量应用在模式规则中，它可将依赖条件列表中的依赖依次取出，套用模式规则。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;模式规则：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;%.o:%.c
   gcc -c $&amp;lt; -o $@
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;**静态模式规则：**大目标是obj，这个obj就是各种.o文件，然后%.o就是具体的解释，而%.c就是对应同样名字的.c文件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$(obj):%.o:%.c
   gcc -c $&amp;lt; -o $@
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;**伪目标：**告诉make，.PHONY：后面跟着的名称不是指文件名&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.PHONY: clean ALL

参数：
    -n：模拟执行make、make clean 命令。

    -f：指定文件执行 make 命令。                xxxx.mk
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;3、详细用法&lt;/h2&gt;
&lt;h3&gt;3.1.、规则&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Makefile的框架是由规则构成的。make命令执行时先在Makefile文件中查找各种规则，对各种规则进行解析后运行规则。规则的基本格式为：&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;target1,target2...: depend1, depend2, ...
    command
    ......
    ......
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;每条规则由三个部分组成分别是&lt;code&gt;目标(target)&lt;/code&gt;, &lt;code&gt;依赖(depend)&lt;/code&gt;和&lt;code&gt;命令(command)&lt;/code&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;命令(command)&lt;/code&gt;: 当前这条规则的动作，一般情况下这个动作就是一个 shell 命令&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;例如：通过某个命令编译文件、生成库文件、进入目录等。&lt;/li&gt;
&lt;li&gt;动作可以是多个，&lt;code&gt;每个命令前必须有一个Tab缩进并且独占占一行&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;依赖(depend)&lt;/code&gt;: 规则所必需的依赖条件，在规则的命令中可以使用这些依赖。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;例如：生成可执行文件的目标文件（&lt;code&gt;*.o&lt;/code&gt;）可以作为依赖使用&lt;/li&gt;
&lt;li&gt;如果规则的命令中不需要任何依赖，那么规则的依赖可以为空&lt;/li&gt;
&lt;li&gt;当前规则中的依赖可以是其他规则中的某个目标，这样就形成了规则之间的嵌套&lt;/li&gt;
&lt;li&gt;依赖可以根据要执行的命令的实际需求, 指定很多个&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;目标(target)&lt;/code&gt;： 规则中的目标，这个目标和规则中的命令是对应的&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通过执行规则中的命令，可以生成一个和目标同名的文件&lt;/li&gt;
&lt;li&gt;规则中可以有多个命令, 因此可以通过这多条命令来生成多个目标, 所有目标也可以有很多个&lt;/li&gt;
&lt;li&gt;通过执行规则中的命令，可以只执行一个动作，不生成任何文件，这样的目标被称为&lt;code&gt;伪目标&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3.2、 工作原理&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;在此主要为大家剖析一下通过提供的 makefile 文件，构建工具 make 什么时候编译项目中的所有文件, 什么时候只选择更新项目中的某几个文件。另外再研究一下如果makefile里边有多个规则它们之间是如何配合工作的，我们基于下边的例子，依次进行讲解。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;make 命令执行的时候会根据文件的时间戳判定是否执行makefile文件中相关规则中的命令。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;目标是通过依赖生成的，因此&lt;code&gt;正常情况下：目标时间戳 &amp;gt; 所有依赖的时间戳&lt;/code&gt;, 如果执行 make 命令的时候检测到规则中的目标和依赖满足这个条件, 那么规则中的命令就不会被执行。&lt;/li&gt;
&lt;li&gt;当依赖文件被更新了, 文件时间戳也会随之被更新, 这时候 &lt;code&gt;目标时间戳 &amp;lt; 某些依赖的时间戳&lt;/code&gt;, 在这种情况下目标文件会通过规则中的命令被重新生成。&lt;/li&gt;
&lt;li&gt;如果规则中的目标对应的文件根本就不存在， 那么规则中的命令肯定会被执行。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3.3、自动推导&lt;/h3&gt;
&lt;p&gt;make 是一个功能强大的构建工具，虽然make需要根据 makefile 中指定的规则来完成源文件的编译。作为小白的我们编写makefile的时候难免写的不是那么严谨从而漏写一些构建规则，但是我们会发现程序还是会被编译成功。这是因为 make 有自动推导的能力，不会完全依赖 makefile。&lt;/p&gt;
&lt;p&gt;比如: 使用命令 make 编译扩展名为.c 的 C 语言文件的时候，源文件的编译规则不用明确给出。这是因为 make 进行编译的时候会使用一个默认的编译规则，按照默认规则完成对.c文件的编译，生成对应的.o 文件。它使用命令&lt;code&gt;cc -c&lt;/code&gt;来编译.c 源文件。在 Makefile 中只要给出需要构建的目标文件名（一个.o 文件），make 会自动为这个.o 文件寻找合适的依赖文件（对应的.c 文件），并且使用默认的命令来构建这个目标文件。&lt;/p&gt;
&lt;p&gt;假设本地项目目录中有以下几个源文件:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ tree
.
├── add.c
├── div.c
├── head.h
├── main.c
├── makefile
├── mult.c
└── sub.c
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;目录中 makefile 文件内容如下&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;calc:add.o  div.o  main.o  mult.o  sub.o
       gcc  add.o  div.o  main.o  mult.o  sub.o -o calc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;通过make构建项目:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ make
cc    -c -o add.o add.c
cc    -c -o div.o div.c
cc    -c -o main.o main.c
cc    -c -o mult.o mult.c
cc    -c -o sub.o sub.c
gcc  add.o  div.o  main.o  mult.o  sub.o -o calc
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;我们可以发现上边的 makefile 文件中只有一条规则, 依赖中所有的 &lt;code&gt;.o&lt;/code&gt;文件在本地项目目录中是不存在的, 并且也没有其他的规则用来生成这些依赖文件, 这时候 make 会使用内部默认的构造规则先将这些依赖文件生成出来, 然后在执行规则中的命令, 最后生成目标文件 calc。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;3.4、 变量&lt;/h3&gt;
&lt;p&gt;使用 Makefile 进行规则定义的时候，为了写起来更加灵活，我们可以在里边使用变量。makefile中的变量分为三种：&lt;code&gt;自定义变量&lt;/code&gt;，&lt;code&gt;预定义变量&lt;/code&gt;和&lt;code&gt;自动变量&lt;/code&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;自定义变量&lt;/strong&gt;用 Makefile 进行规则定义的时候，用户可以定义自己的变量，称为用户自定义变量。makefile 中的变量是没有类型的，直接创建变量然后给其赋值就可以了。&lt;/p&gt;
&lt;p&gt;变量名=变量值&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;预定义变量&lt;/strong&gt; 在 Makefile 中有一些已经定义的变量，用户可以直接使用这些变量，不用进行定义。在进行编译的时候，某些条件下 Makefile 会使用这些预定义变量的值进行编译。这些预定义变量的名字一般都是大写的，经常采用的预定义变量如下表所示：&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;变 量 名&lt;/th&gt;
&lt;th&gt;含 义&lt;/th&gt;
&lt;th&gt;默 认 值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AR&lt;/td&gt;
&lt;td&gt;生成静态库库文件的程序名称&lt;/td&gt;
&lt;td&gt;ar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AS&lt;/td&gt;
&lt;td&gt;汇编编译器的名称&lt;/td&gt;
&lt;td&gt;as&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CC&lt;/td&gt;
&lt;td&gt;C 语言编译器的名称&lt;/td&gt;
&lt;td&gt;cc&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPP&lt;/td&gt;
&lt;td&gt;C 语言预编译器的名称&lt;/td&gt;
&lt;td&gt;$(CC) -E&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CXX&lt;/td&gt;
&lt;td&gt;C++语言编译器的名称&lt;/td&gt;
&lt;td&gt;g++&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FC&lt;/td&gt;
&lt;td&gt;FORTRAN 语言编译器的名称&lt;/td&gt;
&lt;td&gt;f77&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RM&lt;/td&gt;
&lt;td&gt;删除文件程序的名称&lt;/td&gt;
&lt;td&gt;rm -f&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ARFLAGS&lt;/td&gt;
&lt;td&gt;生成静态库库文件程序的选项&lt;/td&gt;
&lt;td&gt;无默认值&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ASFLAGS&lt;/td&gt;
&lt;td&gt;汇编语言编译器的编译选项&lt;/td&gt;
&lt;td&gt;无默认值&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CFLAGS&lt;/td&gt;
&lt;td&gt;C 语言编译器的编译选项&lt;/td&gt;
&lt;td&gt;无默认值&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPPFLAGS&lt;/td&gt;
&lt;td&gt;C 语言预编译的编译选项&lt;/td&gt;
&lt;td&gt;无默认值&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CXXFLAGS&lt;/td&gt;
&lt;td&gt;C++语言编译器的编译选项&lt;/td&gt;
&lt;td&gt;无默认值&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FFLAGS&lt;/td&gt;
&lt;td&gt;FORTRAN 语言编译器的编译选项&lt;/td&gt;
&lt;td&gt;无默认&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;自动变量&lt;/strong&gt;：Makefile 中的变量除了用户自定义变量和预定义变量外，还有一类自动变量。Makefile 中的规则语句中经常会出现目标文件和依赖文件，&lt;code&gt;自动变量用来代表这些规则中的目标文件和依赖文件，并且它们只能在规则的命令中使用。&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;下表中是一些常见的自动变量。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;变 量&lt;/th&gt;
&lt;th&gt;含 义&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;$*&lt;/td&gt;
&lt;td&gt;表示目标文件的名称，不包含目标文件的扩展名&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$+&lt;/td&gt;
&lt;td&gt;表示所有的依赖文件，这些依赖文件之间以空格分开，按照出现的先后为顺序，其中可能 包含重复的依赖文件&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$&amp;lt;&lt;/td&gt;
&lt;td&gt;表示依赖项中第一个依赖文件的名称&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$?&lt;/td&gt;
&lt;td&gt;依赖项中，所有比目标文件时间戳晚的依赖文件，依赖文件之间以空格分开&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$@&lt;/td&gt;
&lt;td&gt;表示目标文件的名称，包含文件扩展名&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$^&lt;/td&gt;
&lt;td&gt;依赖项中，所有不重复的依赖文件，这些文件之间以空格分开&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;3.5、 模式匹配&lt;/h3&gt;
&lt;p&gt;在介绍概念之前, 先读一下下面的这个 makefile 文件:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;calc:add.o  div.o  main.o  mult.o  sub.o
        gcc  add.o  div.o  main.o  mult.o  sub.o -o calc

add.o:add.c
        gcc add.c -c

div.o:div.c
        gcc div.c -c

main.o:main.c
        gcc main.c -c

sub.o:sub.c
        gcc sub.c -c

mult.o:mult.c
        gcc mult.c -c
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在阅读过程中能够发现从第二个规则开始到第六个规则做的是相同的事情, 但是由于文件名不同不得不在文件中写出多个规则，这就让 makefile 文件看起来非常的冗余，我们可以将这一系列的相同操作整理成一个模板，所有类似的操作都通过模板去匹配 makefile 会因此而精简不少，只是可读性会有所下降。&lt;/p&gt;
&lt;p&gt;这个规则模板可以写成下边的样子，这种操作就称之为模式匹配。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;%.o:%.c	gcc $&amp;lt; -c
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;./Makefile%E5%9F%BA%E6%9C%AC%E7%94%A8%E6%B3%95.assets/image-20200418143747981-1611845766993.png&quot; alt=&quot;Image 1: image-20200418143747981&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;3.6、函数&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;makefile中有很多函数并且&lt;code&gt;所有的函数都是有返回值的。&lt;/code&gt;makefile中函数的格式和C/C++中函数也不同，其写法是这样的： &lt;code&gt;$(函数名 参数1, 参数2, 参数3, ...)&lt;/code&gt;，主要目的是让我们能够快速方便的得到函数的返回值。&lt;/p&gt;
&lt;p&gt;这里为大家介绍两个 makefile 中使用频率比较高的函数：&lt;code&gt;wildcard&lt;/code&gt;和&lt;code&gt;patsubst&lt;/code&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;wildcard&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个函数的主要作用是获取指定目录下指定类型的文件名，其返回值是以空格分割的、指定目录下的所有符合条件的文件名列表。函数原型如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$(wildcard PATTERN...)
    参数:    指定某个目录, 搜索这个路径下指定类型的文件，比如： *.c
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;参数功能:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PATTERN 指的是某个或多个目录下的对应的某种类型的文件, 比如&lt;code&gt;当前目录下的.c&lt;/code&gt;文件可以写成 &lt;code&gt;*.c&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;可以指定多个目录，每个路径之间使用空格间隔&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;返回值：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;得到的若干个文件的文件列表， 文件名之间使用空格间隔&lt;/li&gt;
&lt;li&gt;示例：&lt;code&gt;$(wildcard *.c ./sub/*.c)&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;返回值格式: a.c b.c c.c d.c e.c f.c ./sub/aa.c ./sub/bb.c&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;patsubst&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个函数的功能是按照指定的模式替换指定的文件名的后缀, 函数原型如下:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$(patsubst &amp;lt;pattern&amp;gt;,&amp;lt;replacement&amp;gt;,&amp;lt;text&amp;gt;)
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;参数功能:
&lt;ul&gt;
&lt;li&gt;pattern: 这是一个模式字符串, 需要指定出要被替换的文件名中的后缀是什么
&lt;ul&gt;
&lt;li&gt;文件名和路径不需要关心, 因此使用 % 表示即可 [通配符是 %]&lt;/li&gt;
&lt;li&gt;在通配符后边指定出要被替换的后缀, 比如: %.c, 意味着 .c的后缀要被替换掉&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;replacement: 这是一个模式字符串, 指定参数pattern中的后缀最终要被替换为什么
&lt;ul&gt;
&lt;li&gt;还是使用 % 来表示参数pattern 中文件的路径和名字&lt;/li&gt;
&lt;li&gt;在通配符 % 后边指定出新的后缀名, 比如: %.o 这表示原来的后缀被替换为 .o&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;text: 该参数中存储这要被替换的原始数据&lt;/li&gt;
&lt;li&gt;返回值:
&lt;ul&gt;
&lt;li&gt;函数返回被替换过后的字符串。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Reference：&lt;/h2&gt;
&lt;p&gt;【1】&lt;a href=&quot;https://subingwen.cn/linux/makefile/?highlight=make&quot;&gt;Makefile | 爱编程的大丙 (subingwen.cn)&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>AI每周总结-地球物理（2026-W39）</title><link>https://tuoyuangui.github.io/website/posts/typora/ai%E6%AF%8F%E6%97%A5%E6%80%BB%E7%BB%93/ai%E6%AF%8F%E5%91%A8%E6%80%BB%E7%BB%93_2026-w39/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/ai%E6%AF%8F%E6%97%A5%E6%80%BB%E7%BB%93/ai%E6%AF%8F%E5%91%A8%E6%80%BB%E7%BB%93_2026-w39/</guid><pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;AI每周总结 · 地球物理（2026-W39）&lt;/h1&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;📌 分类口径（本期起生效）&lt;/strong&gt;：&lt;strong&gt;AI/地球物理&lt;/strong&gt; = 以深度学习/机器学习/神经网络/生成模型/强化学习等为核心创新；&lt;strong&gt;传统方法&lt;/strong&gt; = 以物理/数学/数值/信号处理/反演/成像/层析等为核心，不以 DL/ML 为主要创新（AI 仅作辅助，或 ML 框架仅作计算工具、无学习组件）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;一、本周概览&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;项&lt;/th&gt;
&lt;th&gt;值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;覆盖区间&lt;/td&gt;
&lt;td&gt;2026-09-21 ~ 2026-09-27（2026-W39）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;日报份数&lt;/td&gt;
&lt;td&gt;5（09-21、09-22、09-23、09-24、09-25〔v1+v2〕）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;主榜单条位&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;60 条位&lt;/strong&gt;（09-25 双版本贡献 20 条）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;去重后独立条目&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;约 57 条&lt;/strong&gt;（3 条为跨期重复命中：SDI、ES-MDA-A2、HFNO）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;两类分布（条位）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;AI/地球物理 39 / 传统方法 21&lt;/strong&gt;；传统方法密度在 09-25 v2（期刊侧扫描日）达到峰值（7/10）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;⭐ 本周最大事件&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;连续 8 天的 HPC 缺口在 09-22 终结&lt;/strong&gt;，且形态从&quot;系统/工作流&quot;演化到&quot;算法并行化&quot;再到&quot;内存/显存工程&quot;——&lt;strong&gt;注意：本周 HPC 增量大部分落在传统方法线&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;⭐ 本周第二条主线&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;评测口径/可复现性&lt;/strong&gt;从单条警示升级为当日主线（09-25 SPBench + v2 独立佐证）——&lt;strong&gt;AI 线的内部清算&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;可复现资产&lt;/td&gt;
&lt;td&gt;GRADSOLVE（GitHub，MIT，传统/可微）、TorchFDTD（论文，传统/HPC）、SPBench（&lt;strong&gt;地址已确证但页面 404&lt;/strong&gt;，AI）、PINN Atlas / SVGDFWI（延续上周）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;开源地震栈&lt;/td&gt;
&lt;td&gt;Devito / SPECFEM3D / SeisSol &lt;strong&gt;全周无新 release&lt;/strong&gt;（本系列连续多期确认）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;来源结构翻转&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;09-25 v2 首次由期刊侧反超&lt;/strong&gt;：10 条中 8 条来自正式期刊（&lt;em&gt;Geophysics&lt;/em&gt;×2、&lt;em&gt;Frontiers in Earth Science&lt;/em&gt;×2、&lt;em&gt;Applied Geophysics&lt;/em&gt;×3、&lt;em&gt;Earthquake Science&lt;/em&gt;×1），原因是 &lt;code&gt;issn:&lt;/code&gt; 区间扫描命中了 &lt;code&gt;cat:&lt;/code&gt; 覆盖不到的期刊——&lt;strong&gt;期刊侧同时是传统方法条目的主要来源&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;二、本周主线（跨日归并，8 条；每条标注所涉类别）&lt;/h2&gt;
&lt;h3&gt;主线 1 ·【传统方法·HPC】⭐ HPC 缺口的终结，以及它的三段式演化&lt;/h3&gt;
&lt;p&gt;这是本周（也是本系列）最重要的结构变化。前 6 天（09-15 ~ 09-21）持续记录&quot;HPC 侧无系统/方法学产出&quot;，09-21 甚至建议把 HPC 源检查&lt;strong&gt;降频为每周一次&lt;/strong&gt;。本周发生了清晰的三段演化：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;阶段&lt;/th&gt;
&lt;th&gt;日期&lt;/th&gt;
&lt;th&gt;代表条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;形态&lt;/th&gt;
&lt;th&gt;关键数字&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;① 系统/工作流&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-22 #1&lt;/td&gt;
&lt;td&gt;资源采集式 HPC 工作流（arXiv 2609.22814，已被第八届 Interactive and Urgent HPC 研讨会接收）&lt;/td&gt;
&lt;td&gt;传统（HPC 系统，NN 为工作流组件）&lt;/td&gt;
&lt;td&gt;算力&lt;strong&gt;时间&lt;/strong&gt;维度复用：平时空闲算力建 NN 训练集，震时切换到&quot;NN 反演 + 物理模拟 + 动态加密&quot;&lt;/td&gt;
&lt;td&gt;能耗 &lt;strong&gt;−76%&lt;/strong&gt;、吞吐 &lt;strong&gt;3.7×&lt;/strong&gt;、应急成本 &lt;strong&gt;−97.9%&lt;/strong&gt;、震后 &lt;strong&gt;30 分钟&lt;/strong&gt;出图（⚠️ 全部为摘要自述）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;② 算法并行化&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-23 #2&lt;/td&gt;
&lt;td&gt;分布式近端 SVGD 走时层析（arXiv 2609.26653）&lt;/td&gt;
&lt;td&gt;传统（贝叶斯数值反演；SVGD 无神经网络）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;共识型 ADMM + worker 内 SVGD&lt;/strong&gt;，用 Woodbury 恒等式导出数据空间 GN 更新；声称无需显式构造大规模敏感矩阵&lt;/td&gt;
&lt;td&gt;⚠️ &quot;降低 3D 内存占用&quot;为&lt;strong&gt;定性表述，无倍数&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;③ 内存/显存工程&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-24 #1/#4、09-25 #3/#4&lt;/td&gt;
&lt;td&gt;MENO、Kokkos FE 核、TorchFDTD、Diff-NekRS、GRADSOLVE、&quot;Beyond Compression&quot;&lt;/td&gt;
&lt;td&gt;AI 1 条（MENO）+ 传统 4 条&lt;/td&gt;
&lt;td&gt;显存与分辨率解耦 / 性能由装配如何映射到存储层次决定 / 全局状态与 checkpoint 换出主机内存&lt;/td&gt;
&lt;td&gt;TorchFDTD：&lt;strong&gt;2.7–3.1× 时间换 56%–65% 峰值显存&lt;/strong&gt;，&lt;strong&gt;离散格式不变&lt;/strong&gt;；稀疏 FFT：&lt;strong&gt;2.9–11.6× 显存收益&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;本周形成的核心判断&lt;/strong&gt;：&lt;strong&gt;大型 3D 地震计算的约束条件是内存，不是 FLOPs。&lt;/strong&gt; 本周共有 &lt;strong&gt;6 条以上独立来源&lt;/strong&gt;指向同一结论，足以作为内部架构选型的&lt;strong&gt;硬约束&lt;/strong&gt;写入。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二条判据&lt;/strong&gt;：&lt;strong&gt;融合 CUDA 核与自动微分不兼容&lt;/strong&gt;被两条独立来源点名——TorchFDTD（光子 FDTD）与 Diff-NekRS（不可压 CFD，Argonne，1020 MPI ranks）都选择&lt;strong&gt;手工实现精确离散伴随&lt;/strong&gt;而非让 AD 穿透核函数，并分别用&quot;与中心差分相差 0.78%&quot;和&quot;端到端 Taylor 检验&quot;验证。Diff-NekRS 的措辞尤其关键：&lt;strong&gt;对&quot;完全离散的时间步&quot;求导（discretize-then-optimize）&lt;/strong&gt;。&lt;strong&gt;结论：只要正演有手写 CUDA 核，就别指望 AD，必须准备转置核。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⚠️ 但必须清醒&lt;/strong&gt;：三个开源地震栈&lt;strong&gt;仍无新 release&lt;/strong&gt;。&lt;strong&gt;HPC 增量来自研究方法侧，而非开源工具侧——短期只能靠自己实现论文中的并行架构。&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;主线 2 ·【AI/地球物理】⭐ 评测口径与可复现性：本周从&quot;某条警示&quot;升级为&quot;当日主线&quot;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;09-21 #4 PosteriorBench&lt;/strong&gt;（arXiv 2609.20794）：用拒绝采样/MCMC 造参考后验，一次给出 &lt;strong&gt;5 项分布匹配指标&lt;/strong&gt;，并开源代码。其自陈结论&quot;当前解法普遍存在显著后验匹配差距&quot;，是对 09-19/09-20 那批扩散先验 FWI 工作&lt;strong&gt;最直接的一次压力测试&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-21 #5&lt;/strong&gt;：把去噪评价从波形误差&lt;strong&gt;延伸到下游任务&lt;/strong&gt;（检测率、到时拾取、初动极性），并做分布外测试。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-25 #1 SPBench&lt;/strong&gt;（arXiv 2609.28925）：审计 &lt;strong&gt;368 篇论文发现仅 25 篇公开代码&lt;/strong&gt;，并给出**&quot;合成排名不能可靠预测实测排名&quot;**的实测结论。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-25 v2 #2 泄漏感知全剖面评估 + 半监督地震相分割&lt;/strong&gt;（10.3389/feart.2026.1910345）：用 &lt;strong&gt;F3 / Parihaka 两个公开数据集&lt;/strong&gt;独立证明**&quot;架构差异小于随机种子差异&quot;&lt;strong&gt;，并把泄漏来源&lt;/strong&gt;精确定位到&quot;重叠 patch 的随机切分&quot;**。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-23 #3 / #6&lt;/strong&gt;：成本—精度失效边界；全局指标在带外尾部偏移处&lt;strong&gt;可能系统性误导&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-25 #2 独立佐证&lt;/strong&gt;：&lt;em&gt;Applied Sciences&lt;/em&gt; 的 operator-budget 工作指出&lt;strong&gt;等优化步数比较会掩盖采样提议的额外残差开销&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;行动结论（两条独立来源一致且可执行）&lt;/strong&gt;：&lt;strong&gt;先修评测协议（整剖面切分 + buffer gap + 多种子），再谈架构创新。&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;主线 3 ·【AI/地球物理】扩散 × FWI：从&quot;后验采样/正则化&quot;推进到&quot;工序级替代&quot;，并拿到实测泛化证据&lt;/h3&gt;
&lt;p&gt;本系列自 09-15 起跟踪该簇（PSG 后验采样 → SVGDFWI 粒子变分 → GPR 扩散正则化 → 本周 #1 深度渐进 VMB）。本周的位置变化在于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;09-23 #1 Shallow-to-deep VMB via diffusion（Part I + Part II）&lt;/strong&gt;（arXiv 2609.26454 / 2609.26482）：&lt;strong&gt;不再把扩散当正则化或采样器，而是直接替代&quot;速度模型建立&quot;这道工序&lt;/strong&gt;。Part II 用&quot;迁移派生属性 + 层析背景 + 稀疏井&quot;这套&lt;strong&gt;真实可得的条件组合&lt;/strong&gt;，在&lt;strong&gt;实测数据&lt;/strong&gt;上完成闭环（⚠️ KAUST 为推断，代码/数据/同行评议状态未验证）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-25 #2 HFNO&lt;/strong&gt;（10.1016/j.jappgeo.2026.106528）—— 见&quot;主线 4&quot;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;判断&lt;/strong&gt;：若 09-23 #1 的结论成立，这是本系列跟踪以来该方向&lt;strong&gt;最接近可落地的一次&lt;/strong&gt;。&lt;/p&gt;
&lt;h3&gt;主线 4 ·【AI/地球物理】神经算子的&quot;边界&quot;被系统性界定，且首次拿到可量化的正演加速&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;四条独立证据构成完整的三角：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;维度&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;结论&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;成本—精度失效边界&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-23 #3（arXiv 2609.24021）&lt;/td&gt;
&lt;td&gt;在刻意对神经算子有利的设定下（训练成本完全摊销），&lt;strong&gt;仍存在经典求解器胜出的区间&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OOD 可审计诊断&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-23 #6（arXiv 2609.23529）&lt;/td&gt;
&lt;td&gt;能量范数误差分解为&quot;模型谱近似项&quot;与&quot;输入分布谱加权项&quot;，&lt;strong&gt;诊断量无需真值即可计算&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;价值重定位&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-24 #3（arXiv 2609.24947）&lt;/td&gt;
&lt;td&gt;核心论点：&lt;strong&gt;神经算子不需要准，只需要把优化放进正确的解盆地&lt;/strong&gt;；用 Allen-Cahn 展示&quot;残差很小但收敛到错误分支&quot;——&lt;strong&gt;与 FWI 的 cycle skipping 是同一命题的两种语言&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;长时程稳定性 + 梯度一致性&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-25 #5（arXiv 2609.30198）、09-25 v2 KATOsuper&lt;/td&gt;
&lt;td&gt;改善长 rollout 稳定性会让常规训练指标&lt;strong&gt;变差&lt;/strong&gt;；&lt;strong&gt;预测梯度必须与预测目标场自洽&lt;/strong&gt;，否则基于梯度的优化不稳定&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;正面证据&lt;/strong&gt;：&lt;strong&gt;09-24 #2 / 09-25 #2 HFNO&lt;/strong&gt;（10.1016/j.jappgeo.2026.106528，CNPC + 吉林大学）。09-24 期只拿到 DOI/作者/机构（无摘要），09-25 期通过 OpenAlex 直查取到完整摘要，&lt;strong&gt;首次拿到量化结果&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：标准 FNO 在谱处理中截断高频模式 → 增设&lt;strong&gt;专用高频 Fourier 分支&lt;/strong&gt;做显式频段选择；另提出&lt;strong&gt;时权因果损失&lt;/strong&gt;把声波传播的因果性嵌入训练目标。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：三个地质复杂度递增的基准，最难一档为 &lt;strong&gt;SEG-Combined（SEG/EAGE Salt + Overthrust 拼合）&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;量化&lt;/strong&gt;：三数据集上 &lt;strong&gt;HER（高频能量比误差）全部最低&lt;/strong&gt;；相对标准 FNO 基线&lt;strong&gt;最多降低 HER 误差 33%&lt;/strong&gt;；&lt;strong&gt;CPU 单次正演 1.34 s、相对同硬件 Devito 有限差分 3× 加速&lt;/strong&gt;；&lt;strong&gt;GPU 0.0094 s/次&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;⚠️ 日期口径&lt;/strong&gt;：OpenAlex &lt;code&gt;publication_date&lt;/code&gt; = 2026-09-18；Crossref &lt;code&gt;created&lt;/code&gt; = 2026-09-18；Crossref &lt;code&gt;published&lt;/code&gt; = &lt;strong&gt;2026-12&lt;/strong&gt;（卷期归属月）。&lt;strong&gt;这是本系列 11 期以来唯一一条同时满足「神经算子 + 三维地震正演 + 中文单位 + 有量化加速比」的条目。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;主线 5 ·【AI 为主，1 条传统】贝叶斯/概率反演：机制库扩到第六、七种，并开始&quot;分布式化&quot;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;机制累积（AI 线）&lt;/strong&gt;：扩散后验采样 → INN → HMC → 神经似然 HMC → SVGD → &lt;strong&gt;B-BiLo（09-22 #3）&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分布式化（传统线）&lt;/strong&gt;：&lt;strong&gt;共识 ADMM + SVGD（09-23 #2）&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-22 #3 B-BiLo&lt;/strong&gt;（10.1038/s41467-026-77768-7）：上层 HMC 采样参数 + 下层 LoRA 近似解算子，&lt;strong&gt;显式宣称&quot;无需合成数据、无需伴随方程&quot;&lt;/strong&gt;，并给出下层近似误差对后验精度的影响分析。⚠️ &lt;strong&gt;但实验只有肿瘤生长等扩散型 PDE，恰恰避开了 PINN Atlas 指出的难点区（双曲型/波动）。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-24 #6 DispSAC&lt;/strong&gt;（EarthArXiv 10.31223/x5mj75）：&lt;strong&gt;策略集成派&lt;/strong&gt;——用 RL 策略的多次初始化离散度描述解的变异性。⚠️ &lt;strong&gt;优势是成本，缺口是它不等于后验&lt;/strong&gt;。&lt;strong&gt;本系列立场：可作稳定性扫描，不应作为 UQ 交付物。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-25 v2 #5 GRADSOLVE&lt;/strong&gt;（arXiv 2609.28458，&lt;strong&gt;代码 github.com/ECLIPSE-AI4Science/gradsolve，MIT，27 stars&lt;/strong&gt;）：JAX + 线程级 ensemble 并行。&lt;strong&gt;可微 HPC 三条路线至此完整成型&lt;/strong&gt;（均为传统/可微线）：PyTorch + 手写核 + 离散伴随（TorchFDTD）；MPI 千核求解器在环（Diff-NekRS）；JAX + 线程级 ensemble 并行（GRADSOLVE）。&lt;strong&gt;共同点：都不是靠通用 AD 直接套在正演上。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;主线 6 ·【AI/地球物理】LLM / Agentic 地球物理：从&quot;闭源宣示&quot;走向&quot;有细节可评&quot;，但仍无与传统方法的定量对比&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;09-17 #1 Agentic FWI&lt;/strong&gt;（跨周）—— 至今&lt;strong&gt;摘要与全文均不可得&lt;/strong&gt;，跨期 ≥ 3 期悬置。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-22 #4 VLM 视觉地震学&lt;/strong&gt;（Research Square rs-10830064）：把波形渲染成无损图像喂给 VLM 做 P/S 到时拾取，提出&lt;strong&gt;注视点式（foveated）多阶段缩放&lt;/strong&gt;与&lt;strong&gt;形态学弃权协议&lt;/strong&gt;，并&lt;strong&gt;命名了两个失效模式&lt;/strong&gt;（compliance bias 顺从偏差、text-scalar decoupling 文本-标量解耦）。⚠️ 预印本未审稿，&lt;strong&gt;无与传统拾取器的定量对比&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-23 #4&lt;/strong&gt;（10.1029/2026JH001578）：把台站坐标、P 波到时、峰值地速&lt;strong&gt;直接喂给 TinyLlama + LoRA&lt;/strong&gt; 输出震级/位置/发震时刻，&lt;strong&gt;显式声明&quot;不需要速度模型&quot;&lt;/strong&gt;，并与 &lt;strong&gt;INGV 业务化自动方法对照&lt;/strong&gt;——本系列&lt;strong&gt;第一条带业务系统对照基线&lt;/strong&gt;的 LLM 地震学工作。⚠️ 明确报告&quot;加 S 波收益不足以抵消延迟&quot;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-25 v2&lt;/strong&gt; 另有 LLM Agent + XGBoost 液化评估（完整数据流与量化指标）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;判断&lt;/strong&gt;：&lt;code&gt;Agentic/多模态地球物理&lt;/code&gt; 已从&quot;存在性信号&quot;升级为&quot;有细节可评&quot;，但&lt;strong&gt;仍无任何一条给出与传统方法的定量对比&lt;/strong&gt;。值得注意的是 &lt;strong&gt;TinyLlama + LoRA&lt;/strong&gt; 与 09-19 的 &lt;strong&gt;XiaoNet（240 KB）&lt;/strong&gt; 同属&quot;小模型 + 轻量微调&quot;路线——&lt;strong&gt;这条线比&quot;接一个大 LLM&quot;更可能先落地到台站侧。&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;主线 7 ·【传统方法】传统数值方法在本周集中回归&lt;/h3&gt;
&lt;p&gt;09-25 v2 的十席中有&lt;strong&gt;四条是非 AI 的数值方法&lt;/strong&gt;，且都直接服务 FWI/层析的底座：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别细分&lt;/th&gt;
&lt;th&gt;服务对象&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;混合地形相关 eikonal 求解器（10.1190/geo-2025-0302）&lt;/td&gt;
&lt;td&gt;传统（走时计算）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;FWI 初始模型 / 层析&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;多尺度并行时间步进三维时域电磁模拟（10.1190/geo-2025-0182）&lt;/td&gt;
&lt;td&gt;传统（正演并行）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;正演并行&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;双曲 Radon 域分块自适应阈值 FISTA（10.1007/s11770-026-1616-6）&lt;/td&gt;
&lt;td&gt;传统（信号处理/去噪）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;去噪 baseline&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kalman 后续波至速度-反射界面同时走时反演（10.1007/s11770-026-1547-2）&lt;/td&gt;
&lt;td&gt;传统（反演）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;初值构建&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;另加 09-25 v1 #8（GPR FWI 稳定初始模型构建，10.1007/s11770-026-1617-5，传统）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;与主线 1 形成互补&lt;/strong&gt;：&lt;strong&gt;HPC 侧在解决&quot;算得起&quot;，本轮传统方法在解决&quot;算得准、起得来&quot;。&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;主线 8 ·【AI/地球物理·中文团队】中文团队产出密度高，但集中在应用侧且代码基本不公开&lt;/h3&gt;
&lt;p&gt;本周参与的中文单位（据日报摘录）：&lt;strong&gt;SPBench：北大 + 哈工大&lt;/strong&gt;；&lt;strong&gt;HFNO：CNPC + 吉林大学&lt;/strong&gt;；&lt;strong&gt;PINNForge：南开 + 华东师大&lt;/strong&gt;；&lt;strong&gt;GMD 矿产 UQ：地大武汉&lt;/strong&gt;；&lt;strong&gt;3D-DCTU：浙大海洋学院 + CNPC&lt;/strong&gt;；&lt;strong&gt;DFRSeisNet：成都理工大学 + 东方地球物理 BGP&lt;/strong&gt;；&lt;strong&gt;多尺度逐步学习网络：RIPED + BGP（四川盆地 7 口盲井）&lt;/strong&gt;；&lt;strong&gt;神经核函数：中国地质大学（北京）&lt;/strong&gt;；&lt;strong&gt;Applied Geophysics 系列：成都大学 / 西南交大 / 中南大学&lt;/strong&gt;；&lt;strong&gt;eDWI / IFWI：中国海洋大学&lt;/strong&gt;（跨周）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;共同特点&lt;/strong&gt;：&lt;strong&gt;数据实测、指标具体、但代码基本不公开。&lt;/strong&gt; 本周 60 条位中仅 GRADSOLVE（传统/可微）与延伸观察候选 FrFNO 提供了可访问代码链接。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;三、本周精选 Top 10（AI/地球物理 6 条 + 传统方法 4 条，整体按相关性排序）&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;配比说明&lt;/strong&gt;：本周原 Top 15 经新口径归类后，AI/地球物理 11 条、传统方法 4 条。按&quot;AI 6 + 传统 4&quot;配比重排为 Top 10；移出主榜的 5 条（B-BiLo、basin 选择、VLM、Kokkos、TinyLlama↔INGV）进入提名区并标注类别。降级理由：B-BiLo 实验仅覆盖扩散型 PDE（避开了波动方程难点）；VLM 与 TinyLlama 属地震监测应用侧、且无与传统方法的定量对比；Kokkos 与 TorchFDTD/GRADSOLVE 同属&quot;内存/HPC&quot;证据链，保留代表性最强的两条；basin 选择为观点性论据（Allen-Cahn 演示），已并入主线 4 表述。&lt;strong&gt;这 5 条的完整信息仍在提名区与主线中，无信息损失。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;1. ⭐ 从空闲到紧急：面向高保真地震估计的资源采集式 HPC 工作流&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：传统方法（HPC 系统/工作流；NN 反演为工作流组件，核心创新在算力时间复用架构）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：机构为二手信源交叉确认（⚠️）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2609.22814 · https://arxiv.org/abs/2609.22814 ·〔09-22 #1〕·已被第八届 &lt;strong&gt;Interactive and Urgent HPC&lt;/strong&gt; 研讨会接收&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：两个专用 kernel + &lt;strong&gt;资源采集（resource harvesting）&lt;/strong&gt; + 紧急切换机制——把平时空闲算力用于构建 NN 训练集，震时切换为&quot;NN 反演 + 物理模拟 + 动态加密&quot;的应急模式。这是&lt;strong&gt;算力时间复用的完整系统架构&lt;/strong&gt;，不只是加速技巧。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据/规模&lt;/strong&gt;：震后高保真成像场景（⚠️ 硬件规模未披露）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;量化&lt;/strong&gt;：能耗 &lt;strong&gt;−76%&lt;/strong&gt;；吞吐 &lt;strong&gt;3.7×&lt;/strong&gt;；应急成本 &lt;strong&gt;−97.9%&lt;/strong&gt;；震后 &lt;strong&gt;30 分钟&lt;/strong&gt;出图。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;本系列自 09-15 以来第一条&quot;真 HPC&quot;条目&lt;/strong&gt;，同时命中&quot;面向地震 + HPC 系统层方法学 + 完整量化账&quot;三要件。若项目内有&lt;strong&gt;震后快速成像/应急响应&lt;/strong&gt;场景，这是可直接对标的工作流架构。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：⚠️ &lt;strong&gt;全部数字为摘要自述&lt;/strong&gt;；两个 kernel 的设计未展开；&lt;strong&gt;30 分钟对应的硬件规模未披露&lt;/strong&gt;；&lt;strong&gt;必须读全文后再引用任何数字。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2. ⭐ SPBench：面向勘探地震处理的多任务评测基准&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：AI/地球物理（ML 方法评测基准）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：北京大学 + 哈尔滨工业大学（据日报摘录）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2609.28925（v1，提交 2026-09-24）· https://arxiv.org/abs/2609.28925 ·〔09-25 #1〕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法/结论&lt;/strong&gt;：审计 &lt;strong&gt;368 篇论文，发现仅 25 篇公开代码&lt;/strong&gt;；给出**&quot;合成数据上的排名不能可靠预测实测数据上的排名&quot;**的实测结论。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：多任务勘探地震处理基准（详见论文）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可复现性&lt;/strong&gt;：⚠️ &lt;strong&gt;项目页 404&lt;/strong&gt;。地址 &lt;code&gt;https://seismicprocessingbenchmark.github.io/SPBench/&lt;/code&gt; &lt;strong&gt;由论文 HTML 全文图注确证（可信）&lt;/strong&gt;，但页面尚未上线；arXiv 摘要页与 HTML 全文&lt;strong&gt;均无仓库地址&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：本周&lt;strong&gt;动摇了&quot;在合成数据上刷点即代表方法更好&quot;这一默认前提&lt;/strong&gt;。与 W41 期的 GeoFWI3D 互补：&lt;strong&gt;SPBench 说&quot;评测不规范&quot;，GeoFWI3D 提供&quot;可以用来规范评测的东西&quot;。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据与图注核验；⚠️ &lt;strong&gt;项目页 404，需人工每周复查&lt;/strong&gt;——这是所有基于 SPBench 的行动建议能否落地的前提。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3. ⭐ 由浅到深的扩散式速度模型建立（Part I 方法 + Part II 真实场景）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：AI/地球物理（扩散生成模型；深度渐进生成顺序）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：⚠️ KAUST 为单位推断&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2609.26454 / 2609.26482（提交 2026-09-22）· https://arxiv.org/abs/2609.26454 ／ https://arxiv.org/abs/2609.26482 ·〔09-23 #1〕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：&lt;strong&gt;深度渐进（depth-progressive）生成式 VMB&lt;/strong&gt;——显式利用&quot;深部信息依赖浅部&quot;这一地表观测的固有因果结构，把&lt;strong&gt;层剥离（layer stripping）思想嵌入扩散模型的生成顺序&lt;/strong&gt;；直接替代&quot;速度模型建立&quot;这道工序，而非作为正则化或采样器。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：Part II 用&quot;&lt;strong&gt;迁移派生属性 + 层析背景 + 稀疏井&lt;/strong&gt;&quot;这套真实可得的条件组合，在&lt;strong&gt;实测数据&lt;/strong&gt;上闭环；自陈&quot;合成数据训练 → 实测泛化，合成响应与实际观测高度吻合&quot;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未验证（⚠️）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;本系列首次拿到&quot;扩散先验在实测 VMB 上不崩&quot;的可引用证据。&lt;/strong&gt; 若结论成立，这是该方向最接近可落地的一次。建议作为&lt;strong&gt;该簇的首选复现目标&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：⚠️ 机构、DOI、代码、数据集明细、同行评议状态&lt;strong&gt;均未验证&lt;/strong&gt;；性能结论&lt;strong&gt;仅为定性自述&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4. ⭐ HFNO：高低频协同傅里叶神经算子用于三维声波场正演&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：AI/地球物理（神经算子正演代理）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Pengyuan Sun（CNPC）、Puyi Hou（吉林大学）、Ye Lin（吉林大学）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;Journal of Applied Geophysics&lt;/em&gt; · https://doi.org/10.1016/j.jappgeo.2026.106528 ·〔09-24 #2 → 09-25 #2 升级〕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：标准 FNO 在谱处理中截断高频模式 → 增设&lt;strong&gt;专用高频 Fourier 分支&lt;/strong&gt;做显式频段选择以覆盖低频分支丢弃的谱区，形成双路互补；另提出&lt;strong&gt;时权因果损失&lt;/strong&gt;把声波传播的因果性嵌入训练目标。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：三个地质复杂度递增的基准，最难一档为 &lt;strong&gt;SEG-Combined（SEG/EAGE Salt + Overthrust 拼合）&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;量化&lt;/strong&gt;：&lt;strong&gt;HER（高频能量比误差）全部最低&lt;/strong&gt;；相对标准 FNO 基线&lt;strong&gt;最多降低 HER 误差 33%&lt;/strong&gt;；&lt;strong&gt;CPU 单次正演 1.34 s、相对同硬件 Devito 有限差分 3× 加速&lt;/strong&gt;；&lt;strong&gt;GPU 0.0094 s/次&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;本系列 11 期以来唯一同时满足「神经算子 + 三维地震正演 + 中文单位 + 有量化加速比」的条目&lt;/strong&gt;，可直接作为&quot;神经算子做正演代理&quot;的立项与验收参照。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ DOI/作者/机构/&lt;strong&gt;日期三方交叉&lt;/strong&gt;（OpenAlex &lt;code&gt;publication_date&lt;/code&gt; 2026-09-18；Crossref &lt;code&gt;created&lt;/code&gt; 2026-09-18；Crossref &lt;code&gt;published&lt;/code&gt; &lt;strong&gt;2026-12&lt;/strong&gt; 为卷期归属月）；✅ 摘要经 OpenAlex DOI 直查取得；⚠️ 代码未声明。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5. 分布式近端 Stein 变分梯度下降（SVGD）做大规模走时层析贝叶斯推断&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：传统方法（贝叶斯数值反演 + 分布式并行；SVGD 无神经网络）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：⚠️ 机构（德黑兰大学 / Georgia Tech）为&lt;strong&gt;推断&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2609.26653（提交 2026-09-22 16:20:25 UTC）· https://arxiv.org/abs/2609.26653 ·〔09-23 #2〕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：把全局走时层析重铸为&lt;strong&gt;共识型 ADMM&lt;/strong&gt;，SVGD 放进 ADMM worker 内部，用 &lt;strong&gt;Woodbury 恒等式&lt;/strong&gt;导出数据空间 Gauss-Newton 更新；明确以&quot;&lt;strong&gt;消除大规模敏感矩阵、降低 3D 内存占用&lt;/strong&gt;&quot;为目标。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：大规模走时层析（具体数据集未验证）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;同时命中 HPC 与贝叶斯两条主线&lt;/strong&gt;。它与 09-22 #1 合起来第一次勾出&quot;&lt;strong&gt;地震反演的 HPC 化&lt;/strong&gt;&quot;的两个层次：算力时间复用（系统层）与算法并行化（算法层）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：⚠️ 机构、代码、数据集、&quot;降低内存占用&quot;的&lt;strong&gt;量化倍数&lt;/strong&gt;全部未验证。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;6. TorchFDTD：带离散伴随与主机流式执行的 GPU 加速 FDTD&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：传统方法（数值/HPC；无学习组件）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：arXiv 著录（光子学 FDTD，&lt;strong&gt;非地震，迁移需自行验证&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2609.30039（提交 2026-09-24 16:07:07 UTC；physics.optics + physics.comp-ph；26 页 13 图）· https://arxiv.org/abs/2609.30039 ·〔09-25 #3〕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：把全局状态与 checkpoint &lt;strong&gt;换出到主机内存&lt;/strong&gt;，用时间换显存；&lt;strong&gt;手工实现精确离散伴随&lt;/strong&gt;而非让 AD 穿透核函数，用&quot;与中心差分相差 0.78%&quot;验证。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;量化&lt;/strong&gt;：&lt;strong&gt;2.7–3.1× 时间换 56%–65% 峰值显存下降&lt;/strong&gt;，且&lt;strong&gt;离散化格式不变&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：本周&quot;显存第三条路径&quot;中&lt;strong&gt;工程上最可直接抄的一条&lt;/strong&gt;——不改格式、不改数值方法，纯粹做状态流式化。若项目正受 3D FD 显存限制，这条优先级最高。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据核验；⚠️ 领域为光子学 FDTD。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;7. MENO：显存高效神经算子&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：AI/地球物理（神经算子架构）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：⚠️ 机构未验证&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2609.27739（提交 2026-09-23 11:54:03 UTC）· https://arxiv.org/abs/2609.27739 ·〔09-24 #1〕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：主张&lt;strong&gt;显存占用与数据分辨率解耦&lt;/strong&gt;；面向&quot;观测空间 ≠ 模型空间&quot;的跨几何算子学习。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：算子学习基准（清单未验证）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;量化&lt;/strong&gt;：⚠️ 参数 &lt;strong&gt;−84.4% / FLOPs −69.2%&lt;/strong&gt;（自述，机构未验证）；&quot;significantly smaller&quot;&quot;best accuracy&quot; 均无第三方复核。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：仓库内容未审阅（⚠️）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：本周&quot;内存而非 FLOPs&quot;信号的第一条贡献者，且&lt;strong&gt;首次出现&quot;分辨率无关显存&quot;这一维度的主张&lt;/strong&gt;。对&quot;由地面观测推地下模型&quot;这类&lt;strong&gt;观测空间 ≠ 模型空间&lt;/strong&gt;的问题有直接适配性。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：⚠️ 机构、基准清单、全部性能数字未验证。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;8. 泄漏感知的全剖面评估与标签高效半监督地震相分割&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：AI/地球物理（半监督分割 + 评测方法论）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：&lt;em&gt;Frontiers in Earth Science&lt;/em&gt; 著录（日报未展开具体名单）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：https://doi.org/10.3389/feart.2026.1910345（CC BY 4.0）·〔09-25 v2 #2〕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法/结论&lt;/strong&gt;：用 &lt;strong&gt;F3 / Parihaka 两个公开数据集&lt;/strong&gt;证明**&quot;架构差异小于随机种子差异&quot;&lt;strong&gt;，并把数据泄漏来源&lt;/strong&gt;精确定位到&quot;重叠 patch 的随机切分&quot;**。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：F3、Parihaka（公开）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;本周最有分量的方法论信号之一&lt;/strong&gt;，与 SPBench 独立得出一致且可执行的行动结论：&lt;strong&gt;先修评测协议（整剖面切分 + buffer gap + 多种子），再谈架构创新。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ 期刊/DOI/CC BY 核验；⚠️ 具体数值需读全文。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;9. GRADSOLVE：在 GPU 上求解并微分 ODE 集合（可微 HPC 第三条路线）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：传统方法（可微 HPC；JAX AD 为计算工具，无学习组件）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：⚠️ HTML 抓取仅得 University of London / Oxford 片段，&lt;strong&gt;作者机构未确证&lt;/strong&gt;；领域为天体物理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2609.28458 · https://arxiv.org/abs/2609.28458 · &lt;strong&gt;代码 https://github.com/ECLIPSE-AI4Science/gradsolve（MIT，27 stars，创建 2026-09-02，末次推送 2026-09-03）&lt;/strong&gt; ·〔09-25 v2 #5〕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：JAX + &lt;strong&gt;线程级 ensemble 并行&lt;/strong&gt;，实现大规模 ODE 集合的求解与微分。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：天体物理 ODE 集合（&lt;strong&gt;迁移需自行验证&lt;/strong&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：✅ 仓库链接与许可核验。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;可微 HPC 三条路线至此完整成型&lt;/strong&gt;（离散伴随 / 求解器在环 / JAX ensemble），且&lt;strong&gt;本周唯一附带真实可访问代码&lt;/strong&gt;的条目。适合作为&quot;JAX 生态做地震正反演&quot;的技术验证起点。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ 仓库链接与许可核验；⚠️ 作者机构未确证。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;10. 成本—精度权衡：神经算子 vs 经典数值求解器&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：AI/地球物理（神经算子适用边界的系统性研究）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：⚠️ 机构（Caltech）为&lt;strong&gt;推断&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2609.24021（提交 2026-09-21 02:45:25 UTC）· https://arxiv.org/abs/2609.24021 ·〔09-23 #3〕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法/结论&lt;/strong&gt;：在&lt;strong&gt;刻意对神经算子有利的设定下&lt;/strong&gt;（训练成本完全摊销），&lt;strong&gt;仍存在经典求解器胜出的区间&lt;/strong&gt;；给出成本—精度帕累托前沿与&lt;strong&gt;失效边界&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：算子学习基准 suite（具体算例未验证）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未验证（⚠️）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;&quot;什么时候不该用神经算子&quot;的答案。&lt;/strong&gt; 与 PINN Atlas（高频 Helmholtz 差 2–3 个量级）构成同一条&quot;不要盲目替代经典求解器&quot;的证据链，但本条更系统、更可执行。&lt;strong&gt;用于做 surrogate 立项排序。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：⚠️ 机构、代码、具体算例与图表数值未验证。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;本周提名区（第 11–25 位，供追踪，不展开；标注类别）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;序&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;来源&lt;/th&gt;
&lt;th&gt;首次收录&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;B-BiLo：带低秩适配的贝叶斯双层算子学习（&lt;strong&gt;免伴随路线&lt;/strong&gt;；⚠️ 实验仅扩散型 PDE）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1038/s41467-026-77768-7&lt;/td&gt;
&lt;td&gt;09-22 #3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Learning Physics from an Imperfect Ancestor（&lt;strong&gt;surrogate 的价值在 basin 选择而非精度&lt;/strong&gt;；与 FWI cycle skipping 同构）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2609.24947&lt;/td&gt;
&lt;td&gt;09-24 #3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;多模态大模型视觉地震学（VLM 做 P/S 拾取；命名两个失效模式；&lt;strong&gt;无与传统拾取器定量对比&lt;/strong&gt;）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.21203/rs.3.rs-10830064/v1&lt;/td&gt;
&lt;td&gt;09-22 #4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;基于 Kokkos 的低阶 GPU 加速有限元核函数性能分析（&lt;strong&gt;性能由访存映射决定，而非算术强度&lt;/strong&gt;）&lt;/td&gt;
&lt;td&gt;传统（HPC）&lt;/td&gt;
&lt;td&gt;arXiv 2609.21681&lt;/td&gt;
&lt;td&gt;09-24 #4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;适配预训练 LLM 快速反演震级与位置（TinyLlama+LoRA，&lt;strong&gt;与 INGV 业务系统对照&lt;/strong&gt;）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1029/2026JH001578&lt;/td&gt;
&lt;td&gt;09-23 #4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;方向感知掩码预训练 3D 地震表征学习 → 跨工区波阻抗反演（&lt;strong&gt;实证&quot;重建保真度 ≠ 可迁移性&quot;&lt;/strong&gt;）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2609.24615&lt;/td&gt;
&lt;td&gt;09-23 #5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;PosteriorBench：生成式反演器的后验匹配评测（参考后验 + 5 项指标 + 开源代码）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2609.20794&lt;/td&gt;
&lt;td&gt;09-21 #4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;地震波形去噪跨时间域/时频域/混合域系统评测（&lt;strong&gt;以下游任务为指标&lt;/strong&gt;）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1029/2026JH001403&lt;/td&gt;
&lt;td&gt;09-21 #5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;ActSeisDAS：连续主动源 DAS 监测的边侧 Python 框架（&lt;strong&gt;99.9% 数据缩减，324 GB/天 → 16 MB，24 小时数据 46 分钟&lt;/strong&gt;）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1016/j.acags.2026.100410&lt;/td&gt;
&lt;td&gt;09-21 #9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;CASCU：混合注意力网络做自适应地震绕射波分离&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.3389/feart.2026.1898241&lt;/td&gt;
&lt;td&gt;09-25 v2 #1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Diff-NekRS：多时间步&quot;求解器在环&quot;训练的可微框架（Argonne，1020 MPI ranks）&lt;/td&gt;
&lt;td&gt;传统（可微 HPC）&lt;/td&gt;
&lt;td&gt;arXiv 2609.23208&lt;/td&gt;
&lt;td&gt;09-25 #4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;Beyond Compression：神经代理求解器长时程 rollout 的潜表示训练（&lt;strong&gt;FLOPs −2 个量级、显存减半&lt;/strong&gt;）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2609.30198&lt;/td&gt;
&lt;td&gt;09-25 #5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;任意发射波形三维时域电磁多尺度并行时间步进&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;10.1190/geo-2025-0182&lt;/td&gt;
&lt;td&gt;09-25 v2 #6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;RSDB：Raspberry Shake 全球地震波形数据集（面向 ML）&lt;/td&gt;
&lt;td&gt;AI（数据集）&lt;/td&gt;
&lt;td&gt;10.1016/j.eqs.2026.06.001&lt;/td&gt;
&lt;td&gt;09-25 v2 #10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;3D-DCTU（真 3D 网络，SEG &lt;em&gt;Geophysics&lt;/em&gt;）vs DFRSeisNet（分块 + 全局-局部分解，&lt;em&gt;Sensors&lt;/em&gt;）——&lt;strong&gt;同一问题的两种相反处方&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1190/geo-2024-0855 ／ 10.3390/s26185938&lt;/td&gt;
&lt;td&gt;09-24 #5 / #8&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;四、本周全量条目索引（60 条位，按日报原序；含类别列）&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;类别标注为本文件按&quot;分类口径&quot;对日报内容的重新归类，&lt;strong&gt;不改变日报原文&lt;/strong&gt;。&quot;（AI 辅助）&quot;= AI 仅作辅助环节；&quot;（可微）&quot;= ML 框架仅作求导工具、无学习组件。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;2026-09-21（窗口 09-14 ~ 09-21）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;链接&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Structure-Driven Inversion（SDI）⚠️ &lt;strong&gt;跨期重复（首收 09-16 #1）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;传统（范式）&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.16536&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Physics-guided FCN using attenuation information for viscoacoustic VMB&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.21203/rs.3.rs-10933226/v1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Efficient matrix-free Gauss-Newton traveltime tomography on full-metric deformed grids&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.14982&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;PosteriorBench: From Point Estimates to Posterior Matching&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.20794&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Earthquake Seismogram Denoising Across Time, Time-Frequency, and Hybrid Domains&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1029/2026JH001403&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;DAS-SPP: Transformer-based seismic phase picking on DAS data&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1016/j.cageo.2026.106264&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Linearized PINN with pretrained nonlinear layers&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.14926&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Physics-Guided Conditional Flow Matching with Energy Regularization&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.15536&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;ActSeisDAS: Python-based edge framework for continuous active seismic DAS monitoring&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1016/j.acags.2026.100410&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Adaptive and accuracy-aware multiple data assimilation（ES-MDA-A2）⚠️ &lt;strong&gt;跨期重复（首收 09-16 #6）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.16434&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;2026-09-22（窗口 09-15 ~ 09-22；arxiv geo-ph 主窗口仅 16 条）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;链接&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;⭐ From Idle to Urgent: A Resource-Harvested HPC Workflow for High-Fidelity Seismic Estimation&lt;/td&gt;
&lt;td&gt;传统（HPC 系统）&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.22814&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Inversion of Elastic Properties of Stratified Layered Media using EDWI&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1190/geo-2025-0147&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Bayesian bilevel operator learning with low-rank adaptation（B-BiLo）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1038/s41467-026-77768-7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Do AI dream of P and S picks? Multimodal LLMs applied to visual seismological analysis&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.21203/rs.3.rs-10830064/v1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Reinforcement Learning-based Task Aware Denoising for DAS Seismic Data（RL-TAD）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1190/geo-2024-0704&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Can Deep Learning Achieve Cross-Physics Mapping?（CPM）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.16853&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;HiLNO: Hierarchical Latent Neural Operator with Multi-Scale Supervision&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.18419&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;AI-Driven Scientific Computing Workflows: A Systems Review&lt;/td&gt;
&lt;td&gt;AI（综述）&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.21162&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;FaultNet: Inferring Complex Fault Structures from Earthquake Hypocenter Distributions&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.5281/zenodo.22837108&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;PDEs in the age of machine learning: a critical synthesis&lt;/td&gt;
&lt;td&gt;AI（综述）&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1007/s10462-026-11677-5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;2026-09-23（窗口 09-16 ~ 09-23）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;链接&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;⭐ Shallow-to-deep velocity model building via diffusion models — Part I / Part II&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.26454 ／ https://arxiv.org/abs/2609.26482&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Distributed Proximal SVGD for Large-scale Bayesian Inference in Traveltime Tomography&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.26653&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Cost-Accuracy Trade-offs: Neural Operator vs Classical Numerical Solver&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.24021&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Adapting a Pretrained LLM to Rapidly Recover Earthquake Magnitude and Location&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1029/2026JH001578&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Direction-Aware Masked Pretraining for 3D Seismic Representation Learning&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.24615&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Predicting OOD Generalization of Neural Operators via Spectral Error Decomposition&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.23529&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Multiscale Stepwise Learning Network for Seismic Impedance Inversion&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.3390/app16189358&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Spatio-Temporal Neural Kernel Function Model for Earthquake Clustering（ETAS ↔ 神经点过程）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1029/2025JH001110&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Detection of the 2019 Hikurangi slow event using a transformer DL model&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.13168/agg.2026.0027&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;StrainProx: Seismic Time-Strain Inversion with Proximal Solvers&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1190/tle-2026-1107&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;2026-09-24（窗口 09-17 ~ 09-24）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;链接&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;MENO: Memory-Efficient Neural Operator&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.27739&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;⭐ High-low frequency collaborative FNO for 3D acoustic seismic wavefield modeling（HFNO）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1016/j.jappgeo.2026.106528&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Learning Physics from an Imperfect Ancestor&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.24947&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Performance Analysis of Low-Order, GPU-accelerated FE Kernels using Kokkos&lt;/td&gt;
&lt;td&gt;传统（HPC）&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.21681&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;A hybrid CNN-Transformer network for linear noise suppression in 3D seismic data（3D-DCTU）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1190/geo-2024-0855&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;DispSAC: Surface-wave dispersion inversion using soft actor-critic RL&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.31223/x5mj75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;GenVoid: Uncertainty-Aware Learning of Subsurface Material Defects&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.23761&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;DFRSeisNet: Fluctuation-Prior-Regularized Background Noise Attenuation&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.3390/s26185938&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Beyond PINNs: Unified Gauss-Newton and Petrov-Galerkin Framework&lt;/td&gt;
&lt;td&gt;传统（数值）&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.20641&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Mechanism-oriented tendency-integration operator networks for PDE foundation models&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.21203/rs.3.rs-10822726/v1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;2026-09-25 v1（窗口 09-18 ~ 09-25）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;链接&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;⭐ SPBench: A Multi-Task Evaluation Benchmark for Exploration Seismic Processing&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.28925&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;HFNO 三维声波场正演 ⚠️ &lt;strong&gt;跨期重复 + 升级（首收 09-24 #2，本期取得完整摘要）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1016/j.jappgeo.2026.106528&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;TorchFDTD: GPU-accelerated FDTD with discrete adjoints and host-streamed execution&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.30039&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Diff-NekRS: Scalable Differentiable Framework for Multi-Timestep Solver-in-the-Loop Training&lt;/td&gt;
&lt;td&gt;传统（可微）&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.23208&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Beyond Compression: Latent Representations for Stable Long-Horizon Rollout in Neural Surrogate Solvers&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.30198&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Conformal Structure of the Brinkman Penalisation Method for Operator Learning of Hamiltonian PDEs&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.29847&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Learning Operators of Geometry with an Interface Autoencoder&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.29437&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Stable Initial Model Construction for 2D Single-Parameter GPR FWI&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1007/s11770-026-1617-5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Automated Workflow for Focal Mechanism Determination of Low-Magnitude Earthquakes（SE Alps）&lt;/td&gt;
&lt;td&gt;传统（自动化流程）&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1785/0220260124&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Parameter estimation for land-surface models using Neural Physics&lt;/td&gt;
&lt;td&gt;传统（可微，免伴随；前向完全基于物理、不做任何训练）&lt;/td&gt;
&lt;td&gt;https://doi.org/10.5194/gmd-19-8801-2026&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;2026-09-25 v2（第二轮检索增补，15:05）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;链接&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Adaptive seismic diffraction separation via hybrid attention-based CASCU network&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.3389/feart.2026.1898241&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;⭐ Leakage-aware full-section evaluation and label-efficient semi-supervised seismic facies segmentation&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.3389/feart.2026.1910345&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Hybrid topography-dependent eikonal solver for acoustic tilted orthorhombic anisotropy&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1190/geo-2025-0302&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Stratigraphy-guided joint inversion of acoustic impedance and resistivity（碳酸盐岩储层）&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://doi.org/10.3389/feart.2026.1900017&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;⭐ GRADSOLVE: Differentiable astrophysics at scale（&lt;strong&gt;代码 github.com/ECLIPSE-AI4Science/gradsolve，MIT&lt;/strong&gt;）&lt;/td&gt;
&lt;td&gt;传统（可微）&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.28458&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Multiscale parallel time-stepping for 3D time-domain electromagnetic data&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1190/geo-2025-0182&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Gravity Inversion Based on Vision Transformer（鄱阳湖盆地）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1007/s11770-026-1608-6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Block adaptive thresholding FISTA for random noise suppression in hyperbolic Radon domain&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1007/s11770-026-1616-6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Kalman-Based Simultaneous Traveltime Inversion for Velocity and Reflector Geometry&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1007/s11770-026-1547-2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;RSDB — A global seismic waveform dataset from the Raspberry Shake network&lt;/td&gt;
&lt;td&gt;AI（数据集）&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1016/j.eqs.2026.06.001&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;五、本周演化：重复 / 升级 / 新增方向（分两线）&lt;/h2&gt;
&lt;h3&gt;5.A AI/地球物理线&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;周内重复（主榜内的跨期重复命中）&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;首次收录&lt;/th&gt;
&lt;th&gt;本期状态&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;HFNO（10.1016/j.jappgeo.2026.106528）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-24 #2&lt;/td&gt;
&lt;td&gt;09-25 #2 再入榜，&lt;strong&gt;并取得完整摘要与量化结果&lt;/strong&gt;（见 5.A 升级表）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;升级（前日&quot;信号&quot;→ 拿到可核验证据）&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;升级项&lt;/th&gt;
&lt;th&gt;轨迹&lt;/th&gt;
&lt;th&gt;结果&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;⭐ &lt;strong&gt;HFNO 三维声波场正演&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-23 期&quot;按标题检索无命中、字段全缺&quot;→ 09-24 期经 OpenAlex + Crossref DOI 反查拿到 DOI/作者/机构（仍无摘要）→ 09-25 期经 &lt;strong&gt;OpenAlex DOI 直查&lt;/strong&gt;取得完整摘要&lt;/td&gt;
&lt;td&gt;✅ &lt;strong&gt;拿到方法 + 数据 + 量化加速比&lt;/strong&gt;（HER 最多降 33%；CPU 1.34 s、相对 Devito 3×；GPU 0.0094 s/次）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;XiaoNet&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-19 摘要未获取 → 09-22 经 OpenAlex 取到完整摘要（&amp;gt;93% 压缩 / 240 KB / 亚毫秒）&lt;/td&gt;
&lt;td&gt;✅ 数字可用；⚠️ &lt;strong&gt;同时暴露 OpenAlex 机构映射错误&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;神经算子清算线&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-21 #4 PosteriorBench（后验对不对）→ 09-22 #10 PINN Atlas（高频 Helmholtz 差 2–3 量级）→ 09-23 #3 成本—精度边界、#6 OOD 谱诊断&lt;/td&gt;
&lt;td&gt;✅ 形成 3 条独立、可引用的支撑&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Agentic/多模态地球物理&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-17 #1 Agentic FWI（摘要不可得）→ 09-22 #4 VLM 地震学（命名失效模式）→ 09-23 #4 TinyLlama ↔ INGV 业务对照&lt;/td&gt;
&lt;td&gt;✅ 从&quot;存在性信号&quot;升级为&quot;有细节可评&quot;；❌ &lt;strong&gt;仍无与传统方法的定量对比&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PINN 定位&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-20 PINN Atlas 量化清算 → 09-21 #7 lPINN 给出对应工程解法（离线学基、在线只解最后一层，在线推理快 1–3 个数量级）&lt;/td&gt;
&lt;td&gt;✅ 批评与补救在同一周期配对&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;本周新增方向&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🆕 视觉语言模型（VLM）做地震学判读（注视点式多阶段缩放 + 形态学弃权协议 + 两个被命名的失效模式）&lt;/li&gt;
&lt;li&gt;🆕 跨物理域映射（Cross-Physics Mapping）：同一潜流形上学习扩散场 ↔ 波场双向算子，并&lt;strong&gt;量化出方向不对称性&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🆕 强化学习做&quot;逐区域去噪策略选择&quot;（A3C 智能体按数据区域挑选轻量去噪网络）&lt;/li&gt;
&lt;li&gt;🆕 双层算子学习 + LoRA 的免伴随贝叶斯反演（权重空间采样 → 参数空间采样）&lt;/li&gt;
&lt;li&gt;🆕 深度渐进（depth-progressive）生成式 VMB（层剥离思想嵌入扩散生成顺序）&lt;/li&gt;
&lt;li&gt;🆕 神经算子的成本—精度帕累托前沿与失效边界&lt;/li&gt;
&lt;li&gt;🆕 神经算子的可审计 OOD 诊断（无需真值；误差谱分解）&lt;/li&gt;
&lt;li&gt;🆕 方向感知的三维地震自监督预训练（&quot;重建保真度 ≠ 可迁移性&quot;反例）&lt;/li&gt;
&lt;li&gt;🆕 神经核函数替代 ETAS 经验核（保留 Hawkes 点过程概率结构）&lt;/li&gt;
&lt;li&gt;🆕 &quot;神经算子的价值在 basin 选择而非精度&quot;&lt;/li&gt;
&lt;li&gt;🆕 分辨率无关的神经算子显存 / 跨几何（cross-geometry）算子学习&lt;/li&gt;
&lt;li&gt;🆕 反问题的&quot;可观测性度量&quot;（面向采集设计）&lt;/li&gt;
&lt;li&gt;🆕 PDE 基础模型的&quot;机制可干预性&quot;&lt;/li&gt;
&lt;li&gt;🆕 地震处理领域系统性&quot;可复现性证据&quot;（368 篇审计；合成排名 ≠ 实测排名）&lt;/li&gt;
&lt;li&gt;🆕 潜空间代理&quot;长时程稳定性&quot;是训练目标问题而非结构问题（反直觉：改善 rollout 稳定性会让常规指标变差）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5.B 传统方法线&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;周内重复&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;首次收录&lt;/th&gt;
&lt;th&gt;本期状态&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ES-MDA-A2（2609.16434）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-16 #6（W38）&lt;/td&gt;
&lt;td&gt;09-21 再次排入 #10，无更新&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SDI（2609.16536）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-16 #1（W38）&lt;/td&gt;
&lt;td&gt;09-21 再次排入 #1，但&lt;strong&gt;无新版本、无代码、无实验&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;升级&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;升级项&lt;/th&gt;
&lt;th&gt;轨迹&lt;/th&gt;
&lt;th&gt;结果&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;⭐ &lt;strong&gt;HPC 缺口终结&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-17~09-21 连续 5 期记录&quot;HPC 无系统/方法学产出&quot;→ 09-22 #1 一次性补齐&quot;面向地震 + 系统层方法学 + 完整量化账&quot;三要件&lt;/td&gt;
&lt;td&gt;✅ 缺口终结的是&quot;&lt;strong&gt;方法学供给&lt;/strong&gt;&quot;，不是&quot;工具链更新&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;矩阵自由 GN&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-19 #5 CSEM（W38）→ 09-21 #3 全度量形变网格上的初至走时层析（图凝聚 + 块三角分解复用 Krylov 输运算子）&lt;/td&gt;
&lt;td&gt;✅ 从单一应用扩展到走时层析&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;可微 HPC 路线图成型&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-25 #3 TorchFDTD（离散伴随）+ #4 Diff-NekRS（求解器在环）+ v2 #5 GRADSOLVE（JAX ensemble，&lt;strong&gt;本周唯一可访问代码&lt;/strong&gt;）&lt;/td&gt;
&lt;td&gt;✅ 三条路线&lt;strong&gt;全部为传统/可微线&lt;/strong&gt;，共同点&quot;不靠通用 AD 直接套正演&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;本周新增方向&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🆕 Urgent Interactive HPC / 资源采集（完整的&lt;strong&gt;算力时间复用架构&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;🆕 共识 ADMM + 粒子变分推断的分布式贝叶斯反演（去中心化子问题 + worker 内 SVGD）&lt;/li&gt;
&lt;li&gt;🆕 &quot;融合 CUDA 核 + AD 不兼容&quot;被点名，离散伴随成为显式替代（两条独立来源，均给出精度与规模实测）&lt;/li&gt;
&lt;li&gt;🆕 免伴随（adjoint-free）可微反演（Neural Physics：ML 框架 AD 替掉伴随推导，&lt;strong&gt;前向模型完全基于物理、不做任何训练&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;🆕 &lt;strong&gt;传统数值方法集中回归&lt;/strong&gt;：混合地形 eikonal 各向异性求解器、任意波形三维时域电磁多尺度并行、双曲 Radon-FISTA 分块阈值、Kalman 走时-反射界面同时反演、GPR FWI 稳定初始模型&lt;/li&gt;
&lt;li&gt;🆕 变几何算子学习获得理论误差界（Hausdorff / graph-Hausdorff、拓扑证书）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5.C ⚠️ 本周暴露的两类口径问题（务必记住）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;日期口径（对 Elsevier 系期刊）&lt;/strong&gt;：HFNO 的 Crossref &lt;code&gt;published&lt;/code&gt; 记为 &lt;strong&gt;2026-12&lt;/strong&gt;（卷期归属月），而 &lt;code&gt;created&lt;/code&gt; 与 OpenAlex &lt;code&gt;publication_date&lt;/code&gt; 均为 &lt;strong&gt;2026-09-18&lt;/strong&gt;。&lt;strong&gt;只用 &lt;code&gt;published&lt;/code&gt; 会把窗口内的新上线论文误判为窗口外。&lt;/strong&gt; 本周起改为「&lt;code&gt;created&lt;/code&gt; 与 OpenAlex &lt;code&gt;publication_date&lt;/code&gt; 交叉、以较早的实际上线口径为准，并在正文显式列出两个日期」。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;机构映射错误（OpenAlex）&lt;/strong&gt;：XiaoNet 的三位作者单位被 OpenAlex 全部映射为 &quot;Oklahoma Biological Survey&quot;，&lt;strong&gt;与论文内容明显不符&lt;/strong&gt;。&lt;strong&gt;结论：机构字段必须双源交叉，不能单信 OpenAlex。&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;六、本周趋势总结（分两线）&lt;/h2&gt;
&lt;h3&gt;6.A AI/地球物理线&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;⭐ &quot;可复现性 / 比较口径&quot;第一次成为当日主线，且带着量化证据&lt;/strong&gt;。SPBench（368 篇仅 25 篇有代码、合成排名 ≠ 实测排名）+ v2 独立佐证（架构差异 &amp;lt; 随机种子差异，泄漏源自重叠 patch 随机切分）。&lt;strong&gt;这质疑的是&quot;我们凭什么认为 A 比 B 好&quot;这一前提。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;⭐ &quot;扩散 × FWI&quot;从后验采样推进到工序级替代，并首次给出实测泛化证据&lt;/strong&gt;（09-23 #1 Part II）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;神经算子的边界被三条独立证据界定，并新增&quot;basin 选择&quot;这第二验收口径&lt;/strong&gt;。&lt;strong&gt;用单点误差验收 surrogate 是系统性错误的&lt;/strong&gt;，应改为「多步 rollout 误差」+「梯度一致性检验」。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&quot;成本叙事&quot;从零散证据变成结构化的三条路径&lt;/strong&gt;：&lt;strong&gt;算力时间维度复用&lt;/strong&gt;（闲时建训练集 → 震时推理，AI 与 HPC 系统的混合）、&lt;strong&gt;模型容量维度压缩&lt;/strong&gt;（MENO 参数 −84.4% / FLOPs −69.2%；XiaoNet 240 KB）、&lt;strong&gt;结构维度降维&lt;/strong&gt;（LoRA 把权重空间采样降为参数空间采样）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&quot;让 SciML 可审计&quot;已成独立脉络&lt;/strong&gt;：PosteriorBench、跨物理域映射的方向不对称、无需真值的 OOD 谱诊断、机制干预实验。&lt;strong&gt;四条的共同点是都在问&quot;模型为什么给出这个答案&quot;。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LLM 在地震学中的角色进一步分化&lt;/strong&gt;（渲染成图再判读 vs 直接吃数值做反演），且&lt;strong&gt;开始出现业务系统对照&lt;/strong&gt;；极小配置（TinyLlama + LoRA / XiaoNet 240 KB）比&quot;接一个大 LLM&quot;更可能先落地到台站侧。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;出现一类需要警惕的&quot;廉价 UQ&quot;&lt;/strong&gt;（RL 策略集成 DispSAC）：&lt;strong&gt;它不等于后验&lt;/strong&gt;，可作稳定性扫描、不应作为 UQ 交付物。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;诚实报告密度维持在较好水平&lt;/strong&gt;：09-23 #4 明确报告&quot;加 S 波收益不足以抵消延迟&quot;；#3 的核心结论之一是&lt;strong&gt;神经算子在有利设定下仍会输&lt;/strong&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;6.B 传统方法线&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;⭐ HPC 议题从&quot;缺信息&quot;变成&quot;有方法学&quot;，再收敛到&quot;内存/显存&quot;&lt;/strong&gt;。三阶段：系统/工作流（09-22）→ 算法并行化（09-23）→ 内存工程（09-24、09-25）。&lt;strong&gt;核心判断：大型 3D 地震计算的约束条件是内存，不是 FLOPs。&lt;/strong&gt;（注意：这一判断的证据链&lt;strong&gt;大部分来自传统方法线&lt;/strong&gt;——TorchFDTD、Kokkos、Diff-NekRS、GRADSOLVE、分布式 SVGD。）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&quot;手写 CUDA 核 → 必须准备转置核（离散伴随）&quot;成为明确工程守则&lt;/strong&gt;；discretize-then-optimize 是措辞层面的关键。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可微 HPC 三条路线成型，且全部不依赖通用 AD&lt;/strong&gt;：对本项目的含义是——&lt;strong&gt;若正演已有手写核，转置核的工程投入应列入计划，而非指望框架自动求导。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;免伴随可微反演形成第二条路径&lt;/strong&gt;（Neural Physics，前向完全基于物理、不做任何训练），与矩阵自由 GN 的数学路径互补。对&quot;已有成熟正演代码但伴随维护成本高&quot;的场景是低风险选项。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;传统数值方法集中回归&lt;/strong&gt;（eikonal、多尺度并行时间步进、Radon-FISTA、Kalman 走时反演），且都服务 FWI/层析的底座——&lt;strong&gt;与 HPC 主线形成&quot;算得起 / 算得准、起得来&quot;的互补。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;⭐ 期刊侧是本周被低估的富矿，且是传统方法的主要来源&lt;/strong&gt;：09-25 v2 十席中 &lt;strong&gt;8 条来自正式期刊&lt;/strong&gt;，其中&lt;strong&gt;传统方法 7 条&lt;/strong&gt;（含 4 条纯数值方法）。&lt;code&gt;issn:&lt;/code&gt; 日期区间扫描在 &lt;em&gt;Applied Geophysics&lt;/em&gt;（1672-7975）上一次就捞出 10 篇，而 &lt;code&gt;cat:&lt;/code&gt; 检索完全覆盖不到。&lt;strong&gt;→ ISSN 区间扫描应放在 arXiv &lt;code&gt;cat:&lt;/code&gt; 检索之前执行。&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;6.C 综合判断&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;本周两线产出比约 39:21（AI:传统），传统方法占比为三周最高&lt;/strong&gt;，主要由两个因素驱动：HPC 缺口终结的增量&lt;strong&gt;大部分落在传统方法线&lt;/strong&gt;（系统/工作流、算法并行化、内存工程），以及期刊侧扫描捞出的传统数值方法集中回归。&lt;strong&gt;AI 线在自我清算（评测口径），传统线在补底座（算得起 + 算得准）——两条线本周给出的是同一个信息的两面：领域正在从&quot;提出方法&quot;转向&quot;把方法做实&quot;。&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;七、对项目的行动建议（本周合并版）&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;课题口径仍为默认的 &lt;strong&gt;AI + HPC + 地震数据处理 + FWI&lt;/strong&gt;。以下均为建议，&lt;strong&gt;未执行任何操作&lt;/strong&gt;。括号内为所属线别。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;A. 立即可做（低风险、低成本，1–3 天）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;⭐ 修评测协议&lt;/strong&gt;——依据 SPBench + 泄漏感知全剖面评估（均为 AI 线）。具体动作：&lt;strong&gt;整剖面切分（禁止重叠 patch 随机切分）+ buffer gap + 多种子重复&lt;/strong&gt;，并在报告里同时给出随机种子间的方差。&lt;strong&gt;这是本周投入产出比最高的一条。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;把&quot;多步 rollout 误差 + 梯度一致性检验&quot;写入 surrogate 验收清单&lt;/strong&gt;——依据 09-25 #4/#5 + 09-24 #3（AI 线）。&lt;strong&gt;停止用单点误差验收 surrogate。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;在内部评测规范中新增&quot;可审计性&quot;一节&lt;/strong&gt;——依据 09-21 #4、09-23 #6、09-24 #10（AI 线）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跑通 GRADSOLVE 环境&lt;/strong&gt;（GitHub，MIT）——本周唯一带可访问代码的可微 HPC 条目（传统/可微线），适合作为 JAX 生态做地震正反演的技术起点。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;按&quot;内存优先&quot;重估现有 3D 流程&lt;/strong&gt;——依据 09-23 #2、09-24 #1/#4、09-25 #3/#5 的六条独立来源（跨两线）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;B. 需要评估（有收益但需先做可行性判断，1–4 周）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;评估 TorchFDTD 式&quot;状态换出主机内存&quot;能否移植到现有 3D FD 正演&lt;/strong&gt;——&lt;strong&gt;2.7–3.1× 时间换 56%–65% 峰值显存，且离散格式不变&lt;/strong&gt;（传统/HPC 线）。这是本周最&quot;可抄&quot;的显存方案。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;复现 HFNO&lt;/strong&gt;（AI 线）——本系列唯一同时满足&quot;神经算子 + 3D 地震正演 + 中文单位 + 量化加速比&quot;的条目。&lt;strong&gt;验收口径建议直接用 HER + 与 Devito 同硬件对比。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;评估&quot;手写 CUDA 核 → 必须准备转置核&quot;对现有代码库的影响&lt;/strong&gt;——依据 09-25 #3、#4 的两条独立来源，以及 &lt;strong&gt;discretize-then-optimize&lt;/strong&gt; 这一措辞（传统/HPC 线）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;评估把 basin 选择作为 surrogate 第二验收口径&lt;/strong&gt;（AI 线），用 FWI cycle skipping 场景做对照实验。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;评估 B-BiLo 的免伴随路线在波动方程上是否成立&lt;/strong&gt;——&lt;strong&gt;关键判据：它只在扩散型 PDE 上验证过&lt;/strong&gt;（AI 线）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;评估 SPBench 项目页是否上线&lt;/strong&gt;——&lt;strong&gt;每周复查一次&lt;/strong&gt;（截至 09-25 仍 404）。&lt;strong&gt;这是所有基于 SPBench 的行动建议能否落地的前提。&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;C. 仅记录（暂不投入）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;SDI / PSDWII 类&quot;零实验零代码&quot;的范式宣示&lt;/strong&gt;（传统线）——09-21 再次排 #1 但无新证据，维持季度级跟踪。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agentic FWI（10.1007/s11004-026-10342-5）&lt;/strong&gt;（AI 线）——跨期 ≥3 期摘要不可得，&lt;strong&gt;建议人工判断是否继续投入检索预算&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DispSAC 类&quot;廉价 UQ&quot;&lt;/strong&gt;（AI 线）——可作稳定性扫描，&lt;strong&gt;不应作为 UQ 交付物&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RSDB / Applied Geophysics 摘要缺口&lt;/strong&gt;——见第八节，建议合并为一次批量人工动作。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;D. HPC 侧的具体提醒&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;开源栈下周复查项&lt;/strong&gt;（本周实测均无新版本）：Devito v4.8.23 / 2026-08-07；SPECFEM3D v4.1.1 / 2024-03-15；SeisSol v1.3.2 / 2025-06-17。&lt;strong&gt;连续多期成立，可考虑把复查频率降为双周。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;补订稳定 HPC 信息源&lt;/strong&gt;：SC / ISC / IPDPS / PPoPP、NVIDIA GTC、SEG/EAGE 年会技术程序、SPECFEM / Devito / SeisSol release notes。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;注意&quot;内存而非 FLOPs&quot;应作为硬约束，而非事后优化项。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;检索顺序调整&lt;/strong&gt;：&lt;strong&gt;ISSN 区间扫描应优先于 arXiv &lt;code&gt;cat:&lt;/code&gt; 检索&lt;/strong&gt;（本周 09-25 v2 首次实证；且期刊侧是传统方法条目的主要来源）。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;八、未解决项 / 需人工确认&lt;/h2&gt;
&lt;h3&gt;8.1 结构性问题（本周持续）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;⚠️ 模板变量连续第 6–8 期未注入&lt;/strong&gt;：&lt;code&gt;{{date}}&lt;/code&gt; / &lt;code&gt;{{lookback_days}}&lt;/code&gt; / &lt;code&gt;{{history_dir}}&lt;/code&gt; / &lt;code&gt;{{lookback_reports}}&lt;/code&gt; / &lt;code&gt;{{project}}&lt;/code&gt; 全部为原始占位符。&lt;strong&gt;建议修改自动化配置注入实际值。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;project&lt;/code&gt; 未指定&lt;/strong&gt;：所有&quot;对项目的启发&quot;均按默认课题语境撰写。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对比基线&lt;/strong&gt;：&lt;code&gt;lookback_reports = 5&lt;/code&gt;（09-18 ~ 09-22 五份），逐步成型。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;8.2 代码/数据可用性（本周统计）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;本周 60 条位中，明确给出可访问代码链接的仅 1 条&lt;/strong&gt;：GRADSOLVE（GitHub，MIT，传统/可微线）。另有延伸观察候选 FrFNO。&lt;/li&gt;
&lt;li&gt;09-25 #1 SPBench 自述将发布数据/实现/配置/评测脚本，但 &lt;strong&gt;arXiv 摘要页与 HTML 全文均无仓库地址，GitHub 检索无同名命中&lt;/strong&gt;；项目页 404。&lt;/li&gt;
&lt;li&gt;⚠️ FaultNet（Zenodo 22837108）&lt;strong&gt;代码许可未添加&lt;/strong&gt;（存档说明明确要求发布前补许可）——&lt;strong&gt;商用/再发布前必须确认许可&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;8.3 跨期悬置项（截至 2026-09-25）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;项&lt;/th&gt;
&lt;th&gt;悬置&lt;/th&gt;
&lt;th&gt;建议动作&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SPBench 项目页 404&lt;/strong&gt;（&lt;code&gt;https://seismicprocessingbenchmark.github.io/SPBench/&lt;/code&gt;）&lt;/td&gt;
&lt;td&gt;09-25 起&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;每周复查&lt;/strong&gt;；地址由论文图注确证，页面未上线&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Agentic FWI 摘要&lt;/strong&gt;（10.1007/s11004-026-10342-5）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;≥ 3 期&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;全文闭源，&lt;strong&gt;建议人工判断是否继续投入检索预算&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Science China Earth Sciences 生成式 AI 综述摘要&lt;/strong&gt;（10.1007/s11430-025-2038-7）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;≥ 3 期&lt;/strong&gt;（09-18 起）&lt;/td&gt;
&lt;td&gt;09-21 已拿到作者/单位/出版日；&lt;strong&gt;仅摘要缺失&lt;/strong&gt; → 人工浏览器打开一次并回填&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;伴随法小震矩释放率摘要&lt;/strong&gt;（Research Square rs-3.rs-10679490/v1）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;≥ 3 期&lt;/strong&gt;（09-21 起）&lt;/td&gt;
&lt;td&gt;人工取全文&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;BicycleGAN 日期冲突&lt;/strong&gt;（10.1016/j.cageo.2026.106272，Crossref 记 2027-01 vs OpenAlex 记 2026-09-17）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;≥ 2 期&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;人工确认真实上线日期&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;10.1007/s11770-026-1617-5&lt;/strong&gt;（GPR FWI 初始模型，传统线）&lt;/td&gt;
&lt;td&gt;09-25 起&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;摘要/方法/数据/代码全部缺失&lt;/strong&gt;；方向高度相关，值得人工取 PDF&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;10.1007/s11770-026-1587-7&lt;/strong&gt;（U-Net 三维重力反演，中南大学/东华理工/自然资源部）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;连续三期无摘要&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⚠️ 09-25 v2 已建议&lt;strong&gt;停止跟踪&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GRADSOLVE 作者机构未确证&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-25 起&lt;/td&gt;
&lt;td&gt;HTML 抓取仅得 University of London / Oxford 片段&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;RSDB&lt;/strong&gt;（10.1016/j.eqs.2026.06.001）&lt;/td&gt;
&lt;td&gt;09-25 起&lt;/td&gt;
&lt;td&gt;机构/摘要/数据集地址全缺；&lt;strong&gt;日期口径冲突&lt;/strong&gt;（published [2026,10] vs created 2026-09-23）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;4 篇 Springer &lt;em&gt;Applied Geophysics&lt;/em&gt; 条目无摘要&lt;/strong&gt;（…1617-5 / …1608-6 / …1616-6 / …1547-2，均为传统线）&lt;/td&gt;
&lt;td&gt;持续&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Springer 不提供结构化摘要，API 路径已走到尽头&lt;/strong&gt; → 合并为&lt;strong&gt;一次批量取 PDF 动作&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;10.1190/geo-2025-0182 日期冲突&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-25 起&lt;/td&gt;
&lt;td&gt;Crossref published 2026-09-20 vs created/OpenAlex 2026-09-02&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OUP（academic.oup.com）Cloudflare 拦截&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-20 起&lt;/td&gt;
&lt;td&gt;GJI 多条代码/数据声明只能人工浏览器打开&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Princeton RSE WebGPU/WGSL 求解器&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;跨周（W38 已 6 次未验证）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;建议结案或直接放弃&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;J. Seismic Exploration 元数据错配&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;跨周（持续复核仍存在）&lt;/td&gt;
&lt;td&gt;该刊 Crossref 著录&lt;strong&gt;不可靠&lt;/strong&gt;，自动筛选必须交叉验证出版商页面&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;8.4 需人工确认的性能数字（本周）&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;本周给出可直接引用量化数字的条目显著多于上周&lt;/strong&gt;（HFNO 的 HER/33%/1.34 s/3×/0.0094 s；Urgent HPC 的 −76%/3.7×/−97.9%/30 分钟；TorchFDTD 的 2.7–3.1×/56%–65%；ActSeisDAS 的 99.9%/46 分钟；MENO 的 −84.4%/−69.2%），但其中&lt;strong&gt;多数为作者自述、未独立验证&lt;/strong&gt;。&lt;strong&gt;已逐条在日报标注，选型决策请以自复现为准。&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;九、检索说明与本文件生成方式&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;本文件不是检索产物&lt;/strong&gt;。生成过程为：读取 &lt;code&gt;AI每日总结_2026-09-21.md&lt;/code&gt; ~ &lt;code&gt;AI每日总结_2026-09-25.md&lt;/code&gt; 五份原文（09-25 含 v1 与第七节 v2 增补）→ 按 ISO 周归并 → 抽取各期&quot;〇 对比&quot;&quot;趋势总结&quot;&quot;未解决项&quot; → 合并同一条目的升级轨迹 → &lt;strong&gt;按&quot;AI/地球物理 + 传统方法&quot;两分类重新归类并标注&lt;/strong&gt; → 按 AI 6 + 传统 4 配比重排 Top 10 → 输出本文件。&lt;strong&gt;未访问任何外部数据源。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;两类条数分布&lt;/strong&gt;：60 条位中 &lt;strong&gt;AI/地球物理 39 条 / 传统方法 21 条&lt;/strong&gt;（每日分布：09-21 为 7:3、09-22 为 8:2、09-23 为 8:2、09-24 为 8:2、09-25 v1 为 5:5、09-25 v2 为 3:7）。精选 Top 10 配比 &lt;strong&gt;6:4&lt;/strong&gt;；传统方法条数充足（21 条 ≥ 4），&lt;strong&gt;无需&quot;凑数&quot;&lt;/strong&gt;。&lt;strong&gt;值得注意的结构性事实：传统方法条目几乎全部来自期刊侧（尤其 09-25 v2 的 ISSN 扫描），而 AI 条目以 arXiv 为主——两类信息的检索渠道本身就在分化。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;历史重复/升级/新增&lt;/strong&gt;：周内重复 3 条（SDI〔传统〕、ES-MDA-A2〔传统〕、HFNO〔AI〕）；升级项分两线列于第五节；新增方向 AI 线 15 项 + 传统线 6 项。与前周（W38）对比的新增方向以 🆕 标注。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分类判定说明（边界条目归类原则）&lt;/strong&gt;：① 资源采集式 HPC 工作流（NN 为组件、核心创新为系统架构）→ 传统（HPC 系统）；② SVGD/ADMM 走时层析（无神经网络）→ 传统；③ TorchFDTD / Diff-NekRS / GRADSOLVE / Neural Physics（无学习或学习非主体）→ 传统（可微/HPC）；④ Beyond PINNs（Gauss-Newton/Petrov-Galerkin 数值框架）→ 传统（数值）。&lt;strong&gt;归类为整理动作，若与原文自述不符，以原文为准。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;⚠️ 2026-10-08 变更&lt;/strong&gt;：按用户要求，本周期 5 份日报已随全部 12 份历史日报移出主目录，现留存于工作区 &lt;code&gt;.回收站_日报_2026-10-08/&lt;/code&gt; 与外部备份 &lt;code&gt;/home/liguolong/geo_scratch/backup_日报_2026-10-08/&lt;/code&gt;（删除前校验一致）。09-25 的 v1 与 v2 在周报中合并为&quot;同一日的两轮检索&quot;；日报原文（两段独立内容）请在上述两处查阅。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;诚实性声明&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;所有链接、作者、机构、日期、数字&lt;strong&gt;均转述自日报原文&lt;/strong&gt;；日报未验证的一律沿用&quot;未验证/需人工确认&quot;标注，本文件未做任何新推断或补齐。&lt;/li&gt;
&lt;li&gt;日报中标为&quot;推断&quot;&quot;自述&quot;&quot;预印本&quot;&quot;二手来源&quot;的内容，在本文件中&lt;strong&gt;保持原标注&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;front matter 说明&lt;/strong&gt;：周报使用 &lt;code&gt;tags&lt;/code&gt; / &lt;code&gt;category&lt;/code&gt; 均为 &lt;code&gt;&quot;AI每周总结&quot;&lt;/code&gt;。若站点分类体系需要与日报保持一致，请把 &lt;code&gt;category&lt;/code&gt; 改为 &lt;code&gt;&quot;AI每日总结&quot;&lt;/code&gt;，其余字段不变。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;只读优先&lt;/strong&gt;：本文件生成过程未执行任何写入以外的操作，未提交、未删除、未覆盖任何既有文件。&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>AI每周总结-地球物理（2026-W38）</title><link>https://tuoyuangui.github.io/website/posts/typora/ai%E6%AF%8F%E6%97%A5%E6%80%BB%E7%BB%93/ai%E6%AF%8F%E5%91%A8%E6%80%BB%E7%BB%93_2026-w38/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/ai%E6%AF%8F%E6%97%A5%E6%80%BB%E7%BB%93/ai%E6%AF%8F%E5%91%A8%E6%80%BB%E7%BB%93_2026-w38/</guid><pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;AI每周总结 · 地球物理（2026-W38）&lt;/h1&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;📌 分类口径&lt;/strong&gt;：&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI/地球物理&lt;/strong&gt; = 以深度学习、机器学习、神经网络、基础模型、生成模型、强化学习等为核心创新；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;传统方法&lt;/strong&gt; = 以物理/数学/数值/信号处理/反演/成像/层析/地震干涉/走时/振幅等为核心，不以 DL/ML 为主要创新（AI 仅作辅助、对比或后处理，或 ML 框架仅作计算工具）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;一、本周概览&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;项&lt;/th&gt;
&lt;th&gt;值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;覆盖区间&lt;/td&gt;
&lt;td&gt;2026-09-14 ~ 2026-09-20（2026-W38）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;日报份数&lt;/td&gt;
&lt;td&gt;6（09-15 ~ 09-20）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;主榜单条位&lt;/td&gt;
&lt;td&gt;60 条位&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;去重后独立条目&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;约 41 条&lt;/strong&gt;（其余为跨日重复命中）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;两类分布（条位）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;AI/地球物理 44 / 传统方法 16&lt;/strong&gt;；每日波动大（09-16、09-18 各达传统 5 条，09-15、09-20 仅 1 条）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;来源结构（逐期波动）&lt;/td&gt;
&lt;td&gt;09-15~09-18 以 arXiv 预印本为主；09-19、09-20 反转为正式期刊为主（8/10）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;可复现资产&lt;/td&gt;
&lt;td&gt;本周&lt;strong&gt;首次&lt;/strong&gt;拿到可下载代码/数据：DiffSWE2d（GitHub）、SVGDFWI（Zenodo 代码包）、GPR 扩散正则化 FWI 数据（Zenodo，CC BY 4.0）、PINN Atlas（Zenodo + MIT 代码）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HPC 状态&lt;/td&gt;
&lt;td&gt;⚠️ &lt;strong&gt;连续 6 天无系统/方法学产出&lt;/strong&gt;；第 5 天（09-19）起拿到内存侧量化，第 6 天（09-20）拿到跨平台 GPU 实测基线&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;开源地震栈&lt;/td&gt;
&lt;td&gt;Devito v4.8.23（2026-08-07）、SPECFEM3D v4.1.1（2024-03-15）、SeisSol v1.3.2（2025-06-17）——&lt;strong&gt;全周无新 release&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;对比基线&lt;/td&gt;
&lt;td&gt;本周为周报系列起点，无前序周报可比；但内部按日报做了逐日&quot;重复/升级/新增&quot;归并&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;二、本周主线（跨日归并，7 条；每条标注所涉类别）&lt;/h2&gt;
&lt;h3&gt;主线 1 ·【AI/地球物理】生成式先验 × FWI：从&quot;替代正演-伴随链&quot;转向&quot;与 FWI 协作&quot;&lt;/h3&gt;
&lt;p&gt;本周该方向的四篇工作&lt;strong&gt;没有一个追求端到端替换&lt;/strong&gt;，共同技术关键词是&lt;strong&gt;解耦&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;09-15 #1 PSG&lt;/strong&gt;（arXiv 2609.12899）：用一个&lt;strong&gt;持久物理速度模型&lt;/strong&gt;经 Gaussian bridge 与扩散先验耦合，把&lt;strong&gt;波动方程梯度与去噪器梯度解耦&lt;/strong&gt;，同时保留常规 FWI 的初始化与优化历史。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-15 #2&lt;/strong&gt;（arXiv 2609.05476）：以&lt;strong&gt;共成像点道集（CIG）为条件&lt;/strong&gt;做速度与阻抗联合扩散反演——&lt;strong&gt;速度标签与阻抗标签解耦&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-16 #2 VAE-FWI UQ&lt;/strong&gt;（10.1029/2026JH001389）：&lt;strong&gt;反方向&lt;/strong&gt;——把 FWI 梯度直接反传进网络权重，是本周&lt;strong&gt;耦合最紧&lt;/strong&gt;的一条（⚠️ 上线日 2026-08-28，属窗口外补录）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-20 #4 SVGDFWI&lt;/strong&gt;（Zenodo 21182222，UT Austin，&lt;strong&gt;代码包 91.4 MB 已发布&lt;/strong&gt;）与 &lt;strong&gt;09-20 #5 GPR 扩散正则化 FWI 数据&lt;/strong&gt;（Zenodo 22732464/22732465，桂林理工大学，&lt;strong&gt;CC BY 4.0 实测数据集&lt;/strong&gt;）：把扩散先验当成&lt;strong&gt;正则项&lt;/strong&gt;接进贝叶斯反演。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;本周结论&lt;/strong&gt;：该方向在周内从&quot;单条方法&quot;升级为&lt;strong&gt;独立多源簇&lt;/strong&gt;，并在周末&lt;strong&gt;第一次拿到可复现资产&lt;/strong&gt;（此前 09-15 的 PSG 无代码）。三种推断机制并存：后验采样 / 粒子式变分（SVGD）/ 正则化反演。&lt;/p&gt;
&lt;h3&gt;主线 2 ·【传统方法·可微/数值】可微编程（AD）成为反演默认底座，讨论重心转向&quot;哪种 AD 更稳、更省&quot;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;09-16 #3 ADEPTS&lt;/strong&gt;（arXiv 2609.13482）：地幔对流反演框架，给出 &lt;strong&gt;unrolled vs implicit 两种 AD 策略的明确收敛判据&lt;/strong&gt;——讨论已从&quot;能不能 AD&quot;转向&quot;AD 用哪种方式&quot;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-16 #4 DiffSWE2d&lt;/strong&gt;（arXiv 2609.11426，&lt;strong&gt;代码 github.com/ZhonghouXu/DiffSWE2d&lt;/strong&gt;）：可微浅水方程求解器，端到端洪水/海啸建模。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-20 #1（JAG 106519）&lt;/strong&gt;：&lt;strong&gt;伴随状态算模型空间梯度 + 只对神经重参数化部分用 AD&lt;/strong&gt; 的混合方案，并报告 GPU/CPU 内存伸缩行为——直接针对&quot;AD 显存贵&quot;这一具体工程痛点。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-18 #6（GJI ggag358）&lt;/strong&gt;：Hessian-向量积的完整拉格朗日表述与对 AD 的误差评估。⚠️ &lt;strong&gt;明确指出：算子非对称时，常用拉格朗日形式 HVP 的第一项可能错误，用 L† 改写必须计入边界项&lt;/strong&gt;——这是一个会&lt;strong&gt;静默产生错误梯度&lt;/strong&gt;的问题，本周最实用的正确性提醒。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;主线 3 ·【AI/地球物理】概率化 / 不确定性量化：一周内累计 7 条独立工作，已成默认而非选项&lt;/h3&gt;
&lt;p&gt;本周该方向条目：&lt;strong&gt;09-16 #2（VAE）→ 09-18 #3（INN）→ 09-19 #1（Epinet 认知不确定度）、#3（Whittle–Matérn 先验 + HMC）、#4（神经似然 + HMC）→ 09-20 #4（SVGD）、#6（PINN Atlas，含 conformal UQ）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;机制库在本周内扩到四种&lt;/strong&gt;：扩散后验采样、可逆神经网络（INN）、HMC（含神经似然摊销）、SVGD 粒子式变分。&lt;/p&gt;
&lt;p&gt;其中 &lt;strong&gt;09-18 #3 澳洲大陆尺度概率电阻率成像&lt;/strong&gt;（arXiv 2609.19516）给出了本周最硬的一条成本账：&lt;strong&gt;2660 万条测深的概率反演压到 4.37 GPU 小时&lt;/strong&gt;（⚠️ 作者自述，预印本未复核）。INN 的&quot;一次前向得后验&quot;相比扩散的迭代采样，在&quot;每点都要不确定度&quot;的场景下成本结构优势明显。&lt;/p&gt;
&lt;h3&gt;主线 4 ·【两类混合】成本叙事成型：省显存、省 AD、省数据&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;路径&lt;/th&gt;
&lt;th&gt;代表条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;关键做法&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;模型极致压缩 + 边缘推理&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-19 #2 XiaoNet（PNAS Nexus pgag322）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;PhaseNet 压缩 &lt;strong&gt;&amp;gt;93% 至 240 KB&lt;/strong&gt;，Raspberry Pi 5 上 30 秒三通道窗推理 &lt;strong&gt;&amp;lt;1 ms&lt;/strong&gt;（⚠️ OpenAlex 把三位作者单位全映射为 &quot;Oklahoma Biological Survey&quot;，与地震监测主题明显不符，&lt;strong&gt;机构映射错误待人工确认&lt;/strong&gt;）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;数学上避开二阶存储&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-19 #5 矩阵自由 GN CSEM（Comput Geosci 30(5):97）&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;Hessian &lt;strong&gt;不构造、不存储、不求逆&lt;/strong&gt;，只做 HV 积 + 随机迹估计阻尼&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AD 显存解耦&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-20 #1（JAG 106519）&lt;/td&gt;
&lt;td&gt;AI×传统混合&lt;/td&gt;
&lt;td&gt;伴随状态 + 局部 AD 混合梯度&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;非凸拆解绕开 AD&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-20 #7 多等级 DL 解 Helmholtz（10.1007/s10915-026-03463-w）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;ReLU 分级把非凸拆成凸子问题&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;用极稀疏实测替代密集标注&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-19 #8 FLARE-T（arXiv 2609.20451）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;密集有限元仿真学潜动力学 + 极稀疏实测校准（首次出现在&lt;strong&gt;非反演的场地反应正演代理&lt;/strong&gt;上）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;判断&lt;/strong&gt;：本周&quot;便宜&quot;正式成为与&quot;准&quot;并列的卖点，且&lt;strong&gt;五条路径彼此正交&lt;/strong&gt;（压缩 / 数学 / 显存 / 非凸 / 数据）——&lt;strong&gt;AI 线与传统线在&quot;降本&quot;这一目标上第一次正面会师&lt;/strong&gt;。&lt;/p&gt;
&lt;h3&gt;主线 5 ·【传统方法为主】&quot;初始模型 / 先验从哪来&quot;——三条互相独立的答案&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用另一种物理场换&lt;/strong&gt;：09-18 #4 电磁数据驱动的多阶段&quot;预热&quot;FWI（10.1190/geo-2025-0168）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用结构化地质先验&lt;/strong&gt;：09-18 #7 地层格架约束的集合平滑多数据同化（10.1190/geo-2025-0527）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用预训练 + 硬约束微调&lt;/strong&gt;：09-18 #2 密度测井约束的 ResU-Net 三维重力反演（10.1190/geo-2025-0323）【AI】。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;把先验写进网络结构&lt;/strong&gt;：09-17 #3 BEIFWI 的 Sobel 层（10.1093/jge/gxag113）【AI】。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;共同点&lt;/strong&gt;：都不试图用更强的优化器硬碰非凸性，而是&lt;strong&gt;先把问题变简单&lt;/strong&gt;。这与 09-17 #5 的非凸性缓解综述（GJI ggag376，传统）构成&quot;问题 → 方案&quot;闭环。&lt;/p&gt;
&lt;h3&gt;主线 6 ·【AI/地球物理为主】基础设施与可信度被当作一等公民&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;数据/接口标准化&lt;/strong&gt;：09-15 #6 SeisBench DAS（arXiv 2609.07558）、09-15 #8 TREMORS（Agent 化多数据中心取数）、09-16 #7 中石油 220 TB 油气地震勘探大模型数据集（⚠️ 企业新闻口径，未说明基线）、09-16 #8「谛听」大模型工程化推进（⚠️ 二手来源，未验证）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;基础模型 + 少量标注&lt;/strong&gt;：09-15 #7 SS-UNETR（75k 无标注实际数据预训练 + 2.8k 合成标注微调）、09-17 #7 DTSEC（&lt;strong&gt;20% 训练数据达到同等性能&lt;/strong&gt;，跨区域退化可用少量本地样本修复）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可信度审计&lt;/strong&gt;：09-15 #10（ML 地震目录人类可验证性审计，⚠️ 偏差可达 20 个百分点量级）、09-17 #4 弹性波 PINN 批判性评估（154 页 44 图）、09-18 #9 明确声明&quot;未超越所有已有方法&quot;并报告负面消融。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;⚠️ 元数据质量警告&lt;/strong&gt;：09-18 发现 &lt;strong&gt;J. Seismic Exploration 的 Crossref 著录标题与出版商页面实际标题完全不符&lt;/strong&gt;（DOI &lt;code&gt;10.36922/jse026250107&lt;/code&gt;，作者与日期相同但内容不相关）；09-19 复核&lt;strong&gt;该错配持续存在&lt;/strong&gt;，且 &lt;code&gt;10.36922/jse026210090&lt;/code&gt; 与之&lt;strong&gt;共用同一标题但作者完全不同&lt;/strong&gt;。&lt;strong&gt;结论：自动文献筛选不能只依赖单一元数据提供商的标题字段。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;主线 7 ·【传统方法·HPC】连续 6 天缺口，但缺口的性质在第 5–6 天发生变化&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;09-15 ~ 09-17&lt;/strong&gt;：检索命中的 GPU/RTM/Devito/SPECFEM 内容&lt;strong&gt;几乎全为 SEO 营销页与无 DOI 博客&lt;/strong&gt;，全部剔除。缺口非&quot;领域不用 HPC&quot;，而是&lt;strong&gt;检索路径覆盖不到 HPC 发表渠道&lt;/strong&gt;（无 SC/ISC/IPDPS/PPoPP 类产出）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-18（第 4 天）&lt;/strong&gt;：首次拿到&lt;strong&gt;应用侧&lt;/strong&gt; GPU 成本（4.37 GPU 小时 / 2660 万条测深），但系统/方法学产出仍为零。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-19（第 5 天）&lt;/strong&gt;：首次出现&lt;strong&gt;内存侧&lt;/strong&gt;的明确工程表述（矩阵自由 GN 不构造/不存储/不求逆）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09-20（第 6 天）&lt;/strong&gt;：首次拿到&lt;strong&gt;可引用的跨平台对照基线&lt;/strong&gt;——arXiv 2609.10368 给出 &lt;strong&gt;8 阶 25 点声学模板（即地震 FD 内核）在 7 种 GPU 上的 Gpts/s&lt;/strong&gt;（Intel B70/B580/GPU MAX 1550、NVIDIA A100/RTX6000 Blackwell/H100、AMD MI325x），并对比 TinyTC 与 PyTorch/Triton；另有 &lt;strong&gt;BEAST 在 20,480 张 GH200 上达到 3.96 EFLOP/s&lt;/strong&gt;（arXiv 2609.12815，AI 侧：贝叶斯神经网络），并首次出现**&quot;不确定性并行&quot;作为独立并行维度**。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;开源栈全周零 release&lt;/strong&gt;（Devito / SPECFEM3D / SeisSol，本系列已连续多期确认）。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;三、本周精选 Top 10（AI/地球物理 6 条 + 传统方法 4 条，整体按相关性排序）&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;配比说明&lt;/strong&gt;：本周原 Top 15 经新口径重新归类后，AI/地球物理 11 条、传统方法 4 条。按&quot;AI 6 + 传统 4&quot;配比重排为 Top 10；移出主榜的 5 条（Agentic FWI、VAE-FWI、LMGM、SDI、FWI 非凸综述）进入提名区并标注类别——其中 &lt;strong&gt;Agentic FWI 因摘要与全文均不可得（仅存标题与关键词）降级&lt;/strong&gt;，SDI 与非凸综述分别属&quot;零实验范式宣示&quot;与&quot;综述类&quot;，边际信息量低于其余条目。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;1. 三维深度学习参数化弹性 FWI + 伴随状态法&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：AI/地球物理（神经重参数化为核心创新，伴随状态为传统底座）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：期刊著录经 Crossref 核验（具体名单见 DOI 页；日报未展开）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;Journal of Applied Geophysics&lt;/em&gt; 255, 106519 · https://doi.org/10.1016/j.jappgeo.2026.106519 ·〔09-20 #1〕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：LSTM 对 vp/vs 做&lt;strong&gt;神经重参数化&lt;/strong&gt;，模型空间梯度用&lt;strong&gt;伴随状态&lt;/strong&gt;求解，&lt;strong&gt;只对重参数化部分使用 AD&lt;/strong&gt;——直接绕开&quot;AD 穿透正演导致显存爆炸&quot;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：3D 各向同性弹性多参数（摘要未给具体工区）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明（⚠️）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：本周唯一一条&lt;strong&gt;同时命中 FWI + 弹性多参数 + 3D + AD 显存工程&lt;/strong&gt;的条目，且是&quot;已有成熟伴随代码 + 想引入神经参数化&quot;场景下最可直接抄的结构。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ 期刊/DOI/日期经 Crossref 核验（&lt;code&gt;created&lt;/code&gt; 2026-09-10，印刷期 2026-12）；⚠️ 具体误差改善数值在受限全文内、无代码声明，&lt;strong&gt;定性结论不可直接引用为性能依据&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2. 矩阵自由高斯-牛顿反演真实 CSEM 数据&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：传统方法（二阶优化 / 数值反演工程）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：期刊著录经 Crossref 核验（日报未展开具体名单）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;Computational Geosciences&lt;/em&gt; 30(5):97 · https://doi.org/10.1007/s10596-026-10496-5 ·〔09-19 #5〕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：Hessian &lt;strong&gt;既不显式构造、不存储、也不求逆&lt;/strong&gt;，只做 Hessian-向量积 + &lt;strong&gt;随机迹估计阻尼&lt;/strong&gt;；给出两种梯度预条件的对比。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：真实 CSEM（海洋可控源电磁）数据。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未取到（⚠️ OUP 侧页面被 Cloudflare 拦截）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：把二阶方法从理论推到可落地的&lt;strong&gt;完整工程案例&lt;/strong&gt;。可直接迁移到 FWI 的 Gauss-Newton 变体上，用于评估&quot;值不值得上二阶&quot;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ 期刊/DOI 核验；⚠️ 加速比仅给定性描述（&quot;substantially / markedly&quot;）&lt;strong&gt;无倍数&lt;/strong&gt;，需人工看文中表格。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3. PSG：物理状态引导的扩散采样 FWI&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：AI/地球物理（扩散生成先验）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：arXiv 摘要页未著录（⚠️）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2609.12899 · https://arxiv.org/abs/2609.12899 ·〔09-15 #1〕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：&lt;strong&gt;持久物理速度模型 + Gaussian bridge&lt;/strong&gt; 耦合扩散先验；物理状态由波形拟合更新并反向引导扩散，&lt;strong&gt;解耦波动方程梯度与去噪器梯度&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：OpenFWI 四族（clean / 缺失道 / 含噪）；冻结的 OpenFWI 先验&lt;strong&gt;零重训迁移&lt;/strong&gt;到 Marmousi、Overthrust、BP2004 Salt。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：摘要页未提供 → &lt;strong&gt;未验证&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：本周&quot;生成式 × FWI&quot;簇的基线成员；&quot;冻结先验 + 零重训迁移&quot;这一设定对&lt;strong&gt;跨工区复用&lt;/strong&gt;的可行性判断价值高于精度指标本身。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据核验；⚠️ 作者单位未提供，代码未验证。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4. 地震 Hessian-向量积：完整拉格朗日表述与对自动微分的误差评估&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：传统方法（数值数学 / 正确性）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：GJI 著录经 Crossref 核验（日报未展开具体名单）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;Geophysical Journal International&lt;/em&gt; · https://doi.org/10.1093/gji/ggag358 ·〔09-18 #6〕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：推导地震 HVP 的完整拉格朗日形式，并与 AD 结果做误差对照。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：理论推导 + 数值对照（详见全文）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关键结论&lt;/strong&gt;：&lt;strong&gt;算子非对称时，常用拉格朗日形式的 HVP 第一项可能错误&lt;/strong&gt;；若用 L† 改写，&lt;strong&gt;必须计入边界项&lt;/strong&gt;，否则静默产生错误梯度。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;本周最高性价比的一条&quot;正确性&quot;提醒。&lt;/strong&gt; 若项目内已有 HVP / 二阶优化实现，建议按此文核对边界项处理。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ 期刊/DOI 核验；⚠️ 具体误差数值需读全文。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5. 澳洲大陆尺度概率电阻率成像：可逆神经网络（INN）路线&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：AI/地球物理（INN 一次前向得后验）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：arXiv 预印本未著录单位（⚠️）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2609.19516（提交 2026-09-17）· https://arxiv.org/abs/2609.19516 ·〔09-18 #3〕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：INN 一次性前向得到后验，绕开扩散模型的迭代采样。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据/规模&lt;/strong&gt;：&lt;strong&gt;2660 万条航空电磁（AEM）测深&lt;/strong&gt;，大陆尺度。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未找到（⚠️）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：本周&lt;strong&gt;唯一&lt;/strong&gt;给出&quot;大尺度概率反演成本账&quot;的条目（&lt;strong&gt;4.37 GPU 小时&lt;/strong&gt;），且是概率反演四条机制路线中成本结构最优的一条。⚠️ 该路线&lt;strong&gt;此前四天完全未出现在检索结果中&lt;/strong&gt;，属本周最实质的方法学新增。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：⚠️ 预印本、无 DOI、无代码、单位未著录；&quot;4.37 GPU 小时&quot;为&lt;strong&gt;作者自述&lt;/strong&gt;，引用时必须标注为预印本自述值。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;6. Stencil Computation at the Intersection of AI and HPC（模板计算：AI 与 HPC 的交汇处）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：传统方法（数值/HPC；AI 张量编译器仅作实现工具）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：arXiv 未登记机构（⚠️）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：arXiv 2609.10368（submitted 2026-09-09，cs.DC）· https://arxiv.org/abs/2609.10368 ·〔09-20 #3〕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：用 &lt;strong&gt;AI 张量编译器（TinyTC）与 PyTorch/Triton&lt;/strong&gt; 实现科学计算高阶模板，并与手写核对比。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据/基准&lt;/strong&gt;：&lt;strong&gt;8 阶 25 点声学模板（即地震有限差分内核）在 7 种 GPU 上的 Gpts/s&lt;/strong&gt;：Intel B70 / B580 / GPU MAX 1550、NVIDIA A100 / RTX6000 Blackwell / H100、AMD MI325x。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未取到（⚠️）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：本周 HPC 侧&lt;strong&gt;唯一的可引用跨平台对照基准&lt;/strong&gt;，可直接用于&quot;自研 FD 内核 vs 用 AI 编译器生成&quot;的选型判断。注意它测的是&lt;strong&gt;单核性能&lt;/strong&gt;，不含通信与 I/O。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ arXiv 元数据核验；⚠️ 具体表格数值需读全文，机构未在 arXiv 登记。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;7. PINN Atlas：物理知情神经网络的量化清算与可复现基准&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：AI/地球物理（PINN 基准/评测）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：Zenodo 记录与 OpenAlex 机构著录冲突（CAOS open-research programme, Santiago vs Open University of Cyprus）→ 须按作者 ORCID 0000-0002-0150-3246 主页判定（⚠️）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：Zenodo 10.5281/zenodo.22822967（v1.1，2026-09-18；另有同名记录 21517389 / 22834739 → 主记录需人工确认）·〔09-20 #6〕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：&lt;strong&gt;17 个用例&lt;/strong&gt;逐一给出相对 L2 误差，按问题类型分层；含 conformal UQ 与保结构 Hamiltonian 学习。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据/结论（分层）&lt;/strong&gt;：平滑正问题&lt;strong&gt;亚 1%&lt;/strong&gt;；&lt;strong&gt;反问题 4e-2&lt;/strong&gt;；&lt;strong&gt;高频 Helmholtz 1.0e-1&lt;/strong&gt;；实测数据&lt;strong&gt;差 2–3 个量级&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：MIT 代码随 Zenodo 发布（✅ 有产物，⚠️ 网页未实际下载验证）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：&lt;strong&gt;可直接引用的立项与拒绝依据&lt;/strong&gt;。用于封死&quot;PINN 替代波动方程求解器&quot;这类提案；同时把 PINN 正确定位为&lt;strong&gt;约束/正则工具&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ Zenodo 记录与日期核验；⚠️ 机构冲突待人工判定。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;8. 电磁数据驱动的多阶段&quot;预热&quot;地震全波形反演&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：传统方法（多物理场约束的 FWI 流程；无 DL）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：⚠️ Crossref 机构串被截断（仅 &quot;Department of Earth and Space Sciences&quot; 与&quot;深圳市深海油气勘探技术重点实验室&quot;），&lt;strong&gt;具体高校为推测&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;Geophysics&lt;/em&gt;（SEG）· https://doi.org/10.1190/geo-2025-0168 ·〔09-18 #4〕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：用**另一种物理场（电磁）**提供初始模型，多阶段 warm-up 进入 FWI。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：实测工区未在摘要指明（⚠️）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：在&lt;strong&gt;已有 CSEM / MT 等非地震数据&lt;/strong&gt;的工区，这是一条&quot;先把问题变简单&quot;的低风险路线，比拼优化器更可能直接解决 cycle skipping。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：⚠️ 机构著录不全；工区信息需读全文。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;9. TIP-INN：网络&quot;该知道多少物理&quot;被做成可消融的对照实验&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：AI/地球物理（物理约束强度的消融实验设计）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：⚠️ 设备/机构等细节在日报中标为未验证&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;JGR: Machine Learning and Computation&lt;/em&gt; · https://doi.org/10.1029/2026JH001463 ·〔09-19 #1〕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：同一任务下对照&lt;strong&gt;软约束&lt;/strong&gt;（Epinet，只学 Helmholtz 自由能）与&lt;strong&gt;硬约束&lt;/strong&gt;（NICE-M，自由能 + 对偶耗散势）；输出含认知不确定度。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：热力学算例（详见全文）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未声明。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：本周&lt;strong&gt;第一份把&quot;物理约束强度&quot;当作自变量&lt;/strong&gt;的实验设计。此前绝大多数 PINN 类工作只报告&quot;加约束后更好&quot;，&lt;strong&gt;缺少&quot;加多少&quot;的刻度&lt;/strong&gt;。可作为内部物理约束消融的模板。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：⚠️ 摘要与量化数值需读全文。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;10. XiaoNet：地震震相拾取的模型蒸馏与边缘推理&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类别&lt;/strong&gt;：AI/地球物理（模型蒸馏 + 边缘部署）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者/团队&lt;/strong&gt;：⚠️ &lt;strong&gt;机构冲突&lt;/strong&gt;：Crossref 记 &quot;Oklahoma Geological Survey, University of Oklahoma&quot;，OpenAlex 记 &quot;Oklahoma Biological Survey&quot;（与地震监测主题明显不符），需人工确认&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链接&lt;/strong&gt;：&lt;em&gt;PNAS Nexus&lt;/em&gt; · https://doi.org/10.1093/pnasnexus/pgag322 ·〔09-19 #2〕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：把 PhaseNet &lt;strong&gt;压缩 &amp;gt;93% 至 240 KB&lt;/strong&gt;，在 &lt;strong&gt;Raspberry Pi 5&lt;/strong&gt; 上 30 秒三通道窗推理 &lt;strong&gt;&amp;lt;1 ms&lt;/strong&gt;，并给出带宽/延迟层面的系统论证。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据&lt;/strong&gt;：连续波形（具体数据集见全文）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：未获取（OUP 页面被 Cloudflare 拦截，需人工浏览器打开查 Data/Code Availability）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对本项目的启发&lt;/strong&gt;：本周&quot;AI 从更大转向更省&quot;的代表。若项目涉及&lt;strong&gt;台站侧/边缘部署&lt;/strong&gt;，这是可直接对标的配置。⚠️ 摘要只说 &quot;strong performance&quot;，&lt;strong&gt;无 F1/拾取误差&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证状态&lt;/strong&gt;：✅ DOI 核验；⚠️ 机构冲突与性能数字缺失。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;本周提名区（第 11–25 位，供追踪，不展开；标注类别）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;序&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;来源&lt;/th&gt;
&lt;th&gt;首次收录&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Agentic FWI Using Local and Global Optimizers（摘要/全文不可得，&lt;strong&gt;降级原因见配比说明&lt;/strong&gt;）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1007/s11004-026-10342-5&lt;/td&gt;
&lt;td&gt;09-17 #1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;VAE-FWI：不依赖预训练标注的 FWI 不确定性量化（上线日 08-28 属窗口外补录；&lt;strong&gt;FWI 梯度直接反传进网络权重&lt;/strong&gt;，产出形态为&quot;一组模型 + 方差&quot;）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1029/2026JH001389&lt;/td&gt;
&lt;td&gt;09-16 #2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;LMGM：三维地震勘探轻量全局建模（Mamba/状态空间模型，线性复杂度）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2609.18294&lt;/td&gt;
&lt;td&gt;09-17 #2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;SDI：Structure-Driven Inversion 范式宣示（零实验零代码；作者 12 天内两篇，季度级跟踪）&lt;/td&gt;
&lt;td&gt;传统（范式）&lt;/td&gt;
&lt;td&gt;arXiv 2609.16536&lt;/td&gt;
&lt;td&gt;09-16 #1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;FWI 非凸性缓解策略综述（摘要与关键词均无 ML 词，&lt;strong&gt;不含 AI 章节的假设未验证&lt;/strong&gt;）&lt;/td&gt;
&lt;td&gt;传统（综述）&lt;/td&gt;
&lt;td&gt;10.1093/gji/ggag376&lt;/td&gt;
&lt;td&gt;09-17 #5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;Pn 波层析 + 深度学习拾取（Seis-PnSn；俯冲带分段等可检验地质结论）&lt;/td&gt;
&lt;td&gt;传统（AI 辅助）&lt;/td&gt;
&lt;td&gt;10.1029/2026JB034108&lt;/td&gt;
&lt;td&gt;09-16 #5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;DiffSWE2d：可微浅水方程求解器（&lt;strong&gt;有 GitHub 代码&lt;/strong&gt;）&lt;/td&gt;
&lt;td&gt;传统（可微）&lt;/td&gt;
&lt;td&gt;arXiv 2609.11426&lt;/td&gt;
&lt;td&gt;09-16 #4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;结构感知贝叶斯 FWI：扩散正则化 SVGD（&lt;strong&gt;Zenodo 代码包 91.4 MB&lt;/strong&gt;）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.5281/zenodo.21182222&lt;/td&gt;
&lt;td&gt;09-20 #4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;时移 GPR 成像的物理引导扩散正则化 FWI 支持数据（&lt;strong&gt;Zenodo，CC BY 4.0&lt;/strong&gt;）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.5281/zenodo.22732464&lt;/td&gt;
&lt;td&gt;09-20 #5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;4D 并行解锁百亿亿次级贝叶斯神经网络（20,480×GH200，3.96 EFLOP/s；首个&quot;不确定性并行&quot;维度）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2609.12815&lt;/td&gt;
&lt;td&gt;09-20 #8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;SS-UNETR：3D 地震图像地质特征分析的半监督预训练基础模型&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1190/GEO-2024-0788&lt;/td&gt;
&lt;td&gt;09-15 #7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;SeisBench DAS：分布式声学传感的机器学习框架（格式/接口标准化）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;arXiv 2609.07558&lt;/td&gt;
&lt;td&gt;09-15 #6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;多等级深度学习自适应求解高频 Helmholtz 方程&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1007/s10915-026-03463-w&lt;/td&gt;
&lt;td&gt;09-20 #7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;地层格架约束的集合平滑多数据同化叠后反演&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;10.1190/geo-2025-0527&lt;/td&gt;
&lt;td&gt;09-18 #7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;边界增强连续表示 FWI（BEIFWI，Sobel 集成 CNN）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;10.1093/jge/gxag113&lt;/td&gt;
&lt;td&gt;09-17 #3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;四、本周全量条目索引（60 条位，按日报原序；含类别列）&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;用途：&lt;strong&gt;兜底检索入口&lt;/strong&gt;。任何一条都能通过链接直达；完整方法/数据/代码/启发字段请回到对应日报。
类别标注为本文件按&quot;分类口径&quot;对日报内容的重新归类，&lt;strong&gt;不改变日报原文&lt;/strong&gt;。标注&quot;（AI 辅助）&quot;= AI 仅作拾取/预处理等辅助环节；标注&quot;（可微）&quot;= ML 框架仅作求导工具、无学习组件。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;2026-09-15（窗口 09-08 ~ 09-15，7 天；自动扩展至 14 天）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;链接&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Physical-State-Guided Diffusion Sampling for FWI（PSG）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.12899&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Bayesian Joint Velocity and Impedance Inversion via Diffusion Models Conditioned on CIG&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.05476&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;ROMNet: hybrid reduced order modeling + ML for waveform inversion&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2608.25160&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;PSDWII: Physical-Structure-Driven Waveform Inversion Imaging&lt;/td&gt;
&lt;td&gt;传统（范式）&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.03380&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Should All Noises Be Treated Equally: Input Noise Variability &amp;amp; NN Robustness&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.14504 ／ https://doi.org/10.1029/2025JH000968&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;SeisBench DAS: ML framework for Distributed Acoustic Sensing&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.07558&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Semi-Supervised Pre-trained Foundation Model for 3D Geological Feature Analysis（SS-UNETR）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1190/GEO-2024-0788&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;TREMORS: An Agentic Assistant for Multi-Datacenter Seismic Data Acquisition&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.01777&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;A Frequency-Aware Dynamic Knowledge Distillation Framework（FADKD-Net）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.00828&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;How much of a machine-learning earthquake catalogue can an expert verify?&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.31223/X5MZ2D&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;2026-09-16（窗口 09-09 ~ 09-16）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;链接&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Structure-Driven Inversion: A New Paradigm for Solving Inverse Problems（SDI）&lt;/td&gt;
&lt;td&gt;传统（范式）&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.16536&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Physics-Constrained VAE for Uncertainty Quantification of FWI&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1029/2026JH001389&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;ADEPTS: auto-differentiable framework for mantle convection inversion&lt;/td&gt;
&lt;td&gt;传统（可微）&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.13482&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;DiffSWE2d: differentiable Shallow Water Equations solver&lt;/td&gt;
&lt;td&gt;传统（可微）&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.11426 ／ 代码 https://github.com/ZhonghouXu/DiffSWE2d&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Pn 波层析 + 深度学习震相拾取（Seis-PnSn）&lt;/td&gt;
&lt;td&gt;传统（AI 辅助）&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1029/2026JB034108&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Adaptive and accuracy-aware multiple data assimilation（ES-MDA-A2）&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.16434&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;油气地震勘探大模型高质量数据集（220 TB）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://news.cnpc.com.cn/system/2026/09/10/030202630.shtml&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;&quot;谛听&quot;地震大模型工程化推进（乌鲁木齐研讨班 + 山东调研）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://www.cea-igp.ac.cn/cxdt/281826.html&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Data-driven reconstruction of 3D particle distributions using wave measurements + DL&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1088/1361-665X/aea278&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;A Self-Diagnosing Structural Error-Aware Parameter Estimation Method for Earth System Models&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.16210&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;2026-09-17（窗口 09-10 ~ 09-17）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;链接&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Agentic Full-Waveform Inversion Using Local and Global Optimizers&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1007/s11004-026-10342-5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;LMGM: general lightweight global modeling framework for 3D seismic exploration&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.18294&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Boundary-Enhanced Continuous Representation FWI with Sobel-Integrated CNN（BEIFWI）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1093/jge/gxag113&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Solving the Elastic Wave Equation with PINNs: A Robust and Critical Assessment&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.07983&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;A comprehensive review of strategies to mitigate non-convexity in FWI&lt;/td&gt;
&lt;td&gt;传统（综述）&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1093/gji/ggag376&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Research on a DL-Based Inversion Method for Surface Wave Dispersion Spectra（INVNET）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1029/2026JH001472&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;DTSEC: Seismic Event Classifier via Fine-Tuning of a Pretrained Seismogram Foundation Model&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1785/0220260150&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;PISAS v1.0: Physics-Informed Neural Surrogate for Earthquake Productivity&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.5194/egusphere-2026-4241&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Bayesian inversion of multilayer CO2 migration from seismic plume observations&lt;/td&gt;
&lt;td&gt;传统（贝叶斯反演）&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.04937&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Hourly U.S.-wide flood simulation beyond traditional and data-driven models（dHBV2.0MTS-MC）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.06794&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;2026-09-18（窗口 09-11 ~ 09-18）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;链接&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Generative AI for seismic signal processing and imaging: status and perspectives&lt;/td&gt;
&lt;td&gt;AI（综述）&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1007/s11430-025-2038-7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Enhanced 3D gravity inversion using ResU-Net with density-logging constraints&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1190/geo-2025-0323&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Continental-scale probabilistic resistivity imaging of Australia using DL（INN）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.19516&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Multistage warm-up seismic FWI informed by electromagnetic data&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1190/geo-2025-0168&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;FWI Cycle-Skipping Mitigation with DTW, Part 2: An Intermediate Signal Approach&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1007/s00024-026-04116-7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Seismic Hessian vector products: Lagrangian formulation and AD error assessment&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1093/gji/ggag358&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Stratigraphy-guided ensemble smoother multidata assimilation for poststack inversion&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1190/geo-2025-0527&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Nonlinear seismic inversion in triaxial stress-induced anisotropic media&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1093/gji/ggag366&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Ensembles of lightweight U-Net with EfficientNet encoders for seismic segmentation&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.36922/jse026260116&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Deep reinforcement learning for strategic drilling&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1190/int-2025-0046&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;2026-09-19（窗口 09-12 ~ 09-19；arxiv geo-ph 主窗口仅 19 条）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;链接&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;How Much Physics Should a Neural Network Know?（TIP-INN / NICE-M）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1029/2026JH001463&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Edge seismic phase picking: Model distillation for multimodal early-warning（XiaoNet）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1093/pnasnexus/pgag322&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Bayesian Framework with Geology-Informed Structural Priors for Tomography + UQ&lt;/td&gt;
&lt;td&gt;传统（贝叶斯反演）&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1093/gji/ggag374&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Neural Surrogate HMC: Neural Likelihoods for HMC in Simulation-Based Inference&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1029/2025JH001164&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;A matrix-free Gauss-Newton inversion of realistic CSEM data&lt;/td&gt;
&lt;td&gt;传统&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1007/s10596-026-10496-5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Automatic segmentation of microseismic monitoring signal under low SNR（SEU-Net）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1371/journal.pone.0358562&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Learning-Based Methods and the Future of Numerical Ocean and Sea-Ice Modeling&lt;/td&gt;
&lt;td&gt;AI（综述）&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1146/annurev-marine-040125-074353&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Seismic Site Response Prediction from Sparse Observations（FLARE-T）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.20451&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Early warning of mine seismic events via spatiotemporal information transformation（SDPM）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1038/s44304-026-00272-x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Enhanced View of the Mw 6.4 Petrinja Sequence Using Deep Learning（PESMLC）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.26443/seismica.v5i2.1770&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;2026-09-20（窗口 09-13 ~ 09-20）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;条目&lt;/th&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;链接&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Three-dimensional deep learning parameterized elastic FWI with adjoint-state method&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1016/j.jappgeo.2026.106519&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Physics-guided deep learning for subsurface characterization: A critical review&lt;/td&gt;
&lt;td&gt;AI（综述）&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1016/j.jappgeo.2026.106515&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Stencil Computation at the Intersection of AI and HPC&lt;/td&gt;
&lt;td&gt;传统（HPC）&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.10368&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Structure-aware Bayesian FWI via diffusion-regularized SVGD（SVGDFWI）&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.5281/zenodo.21182222&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Supporting GPR Data for Time-Lapse Imaging … Diffusion-Regularized FWI&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.5281/zenodo.22732464&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;A Physics-Informed Neural Network Atlas&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.5281/zenodo.22822967&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;The Adaptive Solution of High-Frequency Helmholtz Equations via Multi-Grade DL&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1007/s10915-026-03463-w&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;4D Parallelism Unlocks Exascale Bayesian Neural Networks&lt;/td&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;https://arxiv.org/abs/2609.12815&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Bayesian Gaussian Process Framework for Discrete Inversion of 2D Gravity Data（InDIA）&lt;/td&gt;
&lt;td&gt;AI（ML·高斯过程）&lt;/td&gt;
&lt;td&gt;https://doi.org/10.1093/gji/ggag375&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Advances in Deep Learning Applications for Slow Earthquake Research&lt;/td&gt;
&lt;td&gt;AI（综述）&lt;/td&gt;
&lt;td&gt;见日报原文（09-20）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;五、本周演化：重复 / 升级 / 新增方向（分两线）&lt;/h2&gt;
&lt;h3&gt;5.A AI/地球物理线&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;重复（跨日再次命中，只保留首次收录）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LMGM（2609.18294）&lt;/strong&gt;——09-17 首收，09-19、09-21 复现，&lt;strong&gt;仍为 v1、无代码、无新增实验&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;澳洲电阻率成像（2609.19516）&lt;/strong&gt;——09-18 首收，09-19、09-20 复现，同上。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;升级（前日&quot;信号&quot;→ 后续拿到可核验证据）&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;升级项&lt;/th&gt;
&lt;th&gt;轨迹&lt;/th&gt;
&lt;th&gt;结果&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;XiaoNet&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-19 收录时&quot;摘要未获取、性能数字缺失&quot; → 09-22 经 OpenAlex 取到完整摘要（&amp;gt;93% 压缩 / 240 KB / 亚毫秒）&lt;/td&gt;
&lt;td&gt;✅ 数字可用；⚠️ &lt;strong&gt;同时暴露 OpenAlex 机构映射错误&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PINN 定位&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-17 #4 批判性评估（定性）→ 09-20 #6 PINN Atlas（17 例逐例误差）&lt;/td&gt;
&lt;td&gt;✅ 从&quot;定性争论&quot;升级为&quot;有公开基准可引用&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;新增方向（此前未出现）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🆕 模型蒸馏 + 边缘推理进入地震监测（XiaoNet）&lt;/li&gt;
&lt;li&gt;🆕 &quot;网络该知道多少物理&quot;做成可消融自变量（TIP-INN vs NICE-M）&lt;/li&gt;
&lt;li&gt;🆕 神经似然 + HMC 的摊销式贝叶斯（Neural Surrogate HMC）&lt;/li&gt;
&lt;li&gt;🆕 神经重参数化 + 伴随状态的 3D 弹性 FWI（JAG 106519）&lt;/li&gt;
&lt;li&gt;🆕 可复现的 PINN 方法图谱 / 精度分层基准（PINN Atlas）&lt;/li&gt;
&lt;li&gt;🆕 SVGD 粒子式变分推断进入贝叶斯 FWI（SVGDFWI，概率化第 4 种机制）&lt;/li&gt;
&lt;li&gt;🆕 &quot;不确定性并行&quot;作为独立并行维度（BEAST）&lt;/li&gt;
&lt;li&gt;🆕 输入表示域的系统性消融基准（去噪，以下游任务为指标）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5.B 传统方法线&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;重复&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SDI（2609.16536）&lt;/strong&gt;——09-16 首收，09-19、09-20 连续复现无更新（范式宣示类，归传统线跟踪）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;升级&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;升级项&lt;/th&gt;
&lt;th&gt;轨迹&lt;/th&gt;
&lt;th&gt;结果&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pn 波层析（Seis-PnSn）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-15 列入&quot;延伸观察&quot;，日期未验证 → 09-16 经 Crossref + 中科院地质地球所官方页核实&lt;/td&gt;
&lt;td&gt;✅ 拿到 DOI、卷期、上线日、模型名、20 余万条 Pn 到时数据 → &lt;strong&gt;由延伸观察升入主榜&lt;/strong&gt;（传统方法 + AI 辅助拾取）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PSDWII → SDI 范式&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-15 #4 只是&quot;虚源投影&quot;单点方法 → 09-16 #1 被正式提升为独立范式（含 MSDPII、PSDBP 两分支）&lt;/td&gt;
&lt;td&gt;✅ 相关性上调，但&lt;strong&gt;仍零实验零代码&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;HPC 缺口&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-15 ~ 09-18 全是营销页 → 09-18 首次拿到应用侧 GPU 小时数 → 09-19 内存侧表述（矩阵自由 GN）→ 09-20 跨平台 Gpts/s 基线&lt;/td&gt;
&lt;td&gt;⚠️ 性质从&quot;缺信息&quot;变为&quot;有应用侧基线，仍无系统侧方法学&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;元数据错配&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-18 首次发现 J. Seismic Exploration Crossref 标题与出版商页面不符 → 09-19 复核&lt;strong&gt;依然不符&lt;/strong&gt;，且新增共用标题但作者不同的记录&lt;/td&gt;
&lt;td&gt;❌ &lt;strong&gt;确认该刊 Crossref 著录在本窗口内持续不可靠&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;新增方向&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🆕 矩阵自由二阶优化落地到电磁反演（随机迹估计阻尼 + 预条件对比的完整工程案例）&lt;/li&gt;
&lt;li&gt;🆕 HVP 拉格朗日表述的边界项正确性警告（会静默产生错误梯度）&lt;/li&gt;
&lt;li&gt;🆕 DTW 中间信号法缓解 cycle skipping（Part 2）&lt;/li&gt;
&lt;li&gt;🆕 可微求解器拿到可访问代码（DiffSWE2d，GitHub）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5.C 两线交叉观察&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&quot;降本&quot;目标上两线会师&lt;/strong&gt;：AI 线（压缩/蒸馏、神经参数化降显存）与传统线（矩阵自由二阶、AD 策略选择）在&quot;省算力&quot;上给出&lt;strong&gt;互补而非竞争&lt;/strong&gt;的方案（见主线 4 表）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 辅助型条目（如 Seis-PnSn）是两线的天然接口&lt;/strong&gt;：传统层析为主体、DL 拾取为输入端。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;正确性审计在两线同时出现&lt;/strong&gt;：AI 线（PINN 批判性评估、ML 目录审计）与传统线（HVP 边界项）——&quot;你确定你算的是对的吗&quot;是本周两线共同的一等问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;六、本周趋势总结（分两线）&lt;/h2&gt;
&lt;h3&gt;6.A AI/地球物理线&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;生成式先验正在从&quot;替代 FWI&quot;转向&quot;与 FWI 协作&quot;&lt;/strong&gt;，技术关键词是&lt;strong&gt;解耦&lt;/strong&gt;（波动方程梯度 ↔ 去噪器梯度、速度标签 ↔ 阻抗标签）。这比 2023–2024 年那批&quot;U-Net 直接回归速度场&quot;在可解释性与可控性上进了一步。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;概率化/不确定性从选项变成默认&lt;/strong&gt;：连续 6 天、7 条独立工作指向同一结论——&lt;strong&gt;做反演而不给不确定度，正在变成不被接受的默认状态&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 的重心开始从&quot;更大&quot;向&quot;更省&quot;双向分裂&lt;/strong&gt;（XiaoNet 240 KB 边缘推理 vs 大模型/基础模型工作）。&lt;strong&gt;不是所有问题都要靠堆卡解决。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&quot;物理约束的硬保证&quot;开始取代&quot;损失惩罚&quot;&lt;/strong&gt;（PISAS 解析解码器把物理一致性变成结构上不可能违反；Sobel 层把边界先验变成结构）——比&quot;加一个物理损失项&quot;高一个层级。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&quot;物理约束到什么程度&quot;首次被当成可消融的自变量&lt;/strong&gt;（TIP-INN vs NICE-M）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可信度审计成为一等公民&lt;/strong&gt;：ML 目录可验证性（偏差可达 20 个百分点量级）、PINN 批判性评估（154 页 44 图）、&quot;哪些方法上了实测数据&quot;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;基础设施成为主战场&lt;/strong&gt;：220 TB 数据集、&quot;谛听&quot;、SeisBench DAS 标准化、TREMORS Agent 化取数——&lt;strong&gt;瓶颈正从算法侧迁移到数据供给与算力调度侧&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DL 拾取的下游价值首次形成完整闭环&lt;/strong&gt;（5 年 DL 拾取量 &amp;gt; 58 年人工目录累积量 → 可检验地质结论）；&lt;strong&gt;评价 AI-FWI 不应只看整体 SSIM，要看深层、盐下、强衰减等尾部构造&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;稀有事件/尾部样本是&quot;物理嵌入&quot;相对&quot;纯数据驱动&quot;的真正优势区&lt;/strong&gt;（≥100 年一遇洪峰上量级误差降 34%，整体技巧与纯 AI 相当）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;6.B 传统方法线&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;可微编程（AD）从&quot;技巧&quot;变成&quot;默认底座&quot;&lt;/strong&gt;，讨论重心已从&quot;能不能 AD&quot;转向&quot;&lt;strong&gt;AD 的哪一种方式更稳/更省&lt;/strong&gt;&quot;（ADEPTS 的 unrolled vs implicit 判据）。这是领域技术成熟的标志。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;二阶优化的工程化落地&lt;/strong&gt;：矩阵自由 GN（不构造/不存储/不求逆 + 随机迹阻尼 + 预条件对比）给出完整案例。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;正确性优先&lt;/strong&gt;：HVP 边界项问题（静默错误梯度）是本周传统线最实用的提醒。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&quot;先把问题变简单&quot;成为对抗非凸性的主流姿势&lt;/strong&gt;：多物理场初始模型、地质先验、多阶段 warm-up——与优化器层面的努力互补。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;反演的&quot;精度—算力&quot;权衡开始被显式建模为用户可调接口&lt;/strong&gt;（ES-MDA-A2 的&quot;目标准确度 + 最大同化次数&quot;两个旋钮）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;⚠️ HPC 侧连续 6 天无系统/方法学产出&lt;/strong&gt;，第 6 天才拿到可引用的跨平台实测基线。&lt;strong&gt;缺口不是&quot;地球物理不用 HPC&quot;，而是&quot;检索路径覆盖不到 HPC 发表渠道&quot;&lt;/strong&gt;——信息源问题，不是领域问题。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;⚠️ 元数据质量是需要警惕的信号&lt;/strong&gt;：Crossref 对 J. Seismic Exploration 的著录持续错位。&lt;strong&gt;自动筛选必须交叉验证出版商页面。&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;6.C 综合判断&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;本周两线的产出比约为 44:16（AI:传统）&lt;/strong&gt;。AI 线在&quot;生成式先验、概率化、降本&quot;三条线上多点开花；传统线的贡献集中于&lt;strong&gt;底座正确性与工程化&lt;/strong&gt;（HVP、矩阵自由 GN、AD 策略、跨平台基线）。&lt;strong&gt;两线不是替代关系：AI 线的每一条&quot;更省&quot;主张，背后都站着一个传统线的工程前提。&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;七、对项目的行动建议（本周合并版）&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;课题口径仍为默认的 &lt;strong&gt;AI + HPC + 地震数据处理 + FWI&lt;/strong&gt;。以下按&quot;投入成本 × 预期收益&quot;排序，&lt;strong&gt;均为建议，未执行任何操作&lt;/strong&gt;。括号内为所属线别。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;A. 立即可做（低风险、低成本，1–3 天）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;核对现有二阶/伴随实现的 HVP 边界项&lt;/strong&gt;——依据 GJI ggag358（传统线）。这是本周&lt;strong&gt;唯一一条可能导致静默错误梯度&lt;/strong&gt;的提醒，优先级最高。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;建立&quot;物理约束强度&quot;消融模板&lt;/strong&gt;——参照 TIP-INN vs NICE-M 的设计（AI 线），把软约束与硬约束做成同一任务下的对照臂。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;把 DiffSWE2d、SVGDFWI、PINN Atlas 三份可复现资产加入候选池&lt;/strong&gt;（分别对应可微求解器〔传统/可微〕、贝叶斯 FWI〔AI〕、PINN 基准〔AI〕）。三者均有可访问产物，&lt;strong&gt;至少值得跑通一次环境&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;在评测清单里加入两条硬性要求&lt;/strong&gt;：① 尾部构造（深层/盐下/强衰减）单独报指标；② 去噪类任务补下游指标（检测率、到时、极性）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;把&quot;合成排名不能代表实测排名&quot;&quot;元数据标题不可全信&quot;两条写进内部文献筛选规范&lt;/strong&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;B. 需要评估（有收益但需先做可行性判断，1–4 周）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;评估 INN 路线做概率反演的可行性&lt;/strong&gt;——依据 09-18 #3（2660 万条测深 / 4.37 GPU 小时，作者自述）。重点不是精度，是**&quot;每点都要不确定度&quot;场景下的成本结构**（AI 线）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;为 3D 体数据长程依赖任务做 LMGM（Mamba）对照&lt;/strong&gt;——线性复杂度是本周与算力账最直接相关的一条（AI 线）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;评估&quot;用电磁/其他物理场换 FWI 初始模型&quot;是否在现有工区可行&lt;/strong&gt;——依据 09-18 #4（传统线）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;评估自研 FD 内核 vs AI 张量编译器的性价比&lt;/strong&gt;——依据 09-20 #3 的 7 平台 Gpts/s 基线（传统/HPC 线）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;C. 仅记录（暂不投入）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;SDI / PSDWII 类&quot;零实验零代码&quot;的范式宣示&lt;/strong&gt;（传统线）——季度级跟踪，&lt;strong&gt;不作立项依据&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agentic FWI（10.1007/s11004-026-10342-5）&lt;/strong&gt;（AI 线）——摘要与全文均不可得，&lt;strong&gt;在读到全文前不做任何技术判断&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;企业新闻口径的效率数字&lt;/strong&gt;（如 220 TB 数据集的&quot;效率提升 9–12 倍&quot;）——引用时必须标注来源性质。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;D. HPC 侧的具体提醒&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;建议补订稳定的 HPC 信息源&lt;/strong&gt;：SC / ISC / IPDPS / PPoPP 会议论文、NVIDIA GTC 技术日程、SEG/EAGE 年会技术程序、&lt;strong&gt;SPECFEM / Devito / SeisSol 官方 release notes 与 GitHub releases&lt;/strong&gt;。本周 6 天的缺口本质是检索路径问题。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;开源栈下周复查项&lt;/strong&gt;（本周实测均无新版本）：Devito v4.8.23 / 2026-08-07；SPECFEM3D v4.1.1 / 2024-03-15；SeisSol v1.3.2 / 2025-06-17。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;注意&quot;内存而非 FLOPs&quot;这一信号&lt;/strong&gt;：本周已出现矩阵自由 GN（不存储 Hessian）。若内部在做架构选型，把内存占用作为&lt;strong&gt;硬约束&lt;/strong&gt;而非事后优化项。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;八、未解决项 / 需人工确认&lt;/h2&gt;
&lt;h3&gt;8.1 结构性问题（本周持续）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;⚠️ 模板变量连续未注入&lt;/strong&gt;：&lt;code&gt;{{date}}&lt;/code&gt; / &lt;code&gt;{{lookback_days}}&lt;/code&gt; / &lt;code&gt;{{history_dir}}&lt;/code&gt; / &lt;code&gt;{{lookback_reports}}&lt;/code&gt; / &lt;code&gt;{{project}}&lt;/code&gt; 全部为原始占位符，6 份日报全部沿用默认值（7 天 / 扩展 14 天 / 默认课题语境）。&lt;strong&gt;建议修改自动化配置注入实际值。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;project&lt;/code&gt; 未指定&lt;/strong&gt;：所有&quot;对项目的启发&quot;均按默认课题语境撰写，若实际项目有具体工区、正反演代码或集群环境，请补充后重跑。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;历史基线薄弱&lt;/strong&gt;：&lt;code&gt;lookback_reports = 7&lt;/code&gt;，但 09-15 时目录内 0 份、09-20 时仅 5 份。建议积累 5–7 份后再评估&quot;新增方向&quot;的统计意义。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;8.2 代码/数据可用性（本周统计）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;本周 60 条位中，明确给出可访问代码/数据链接的仅 4 条&lt;/strong&gt;：DiffSWE2d（GitHub，传统/可微）、SVGDFWI（Zenodo，AI）、GPR 扩散正则化数据（Zenodo，AI）、PINN Atlas（Zenodo + MIT，AI）。&lt;/li&gt;
&lt;li&gt;其余条目&lt;strong&gt;摘要页均未提供仓库链接&lt;/strong&gt;，请勿据此认定开源。&lt;/li&gt;
&lt;li&gt;⚠️ SVGDFWI 的 Zenodo 记录&lt;strong&gt;未明示 license&lt;/strong&gt;，再分发前必须确认；GPR 数据存在&lt;strong&gt;双 DOI（22732464 / 22732465）&lt;/strong&gt;，主记录需人工判定。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;8.3 跨期悬置项（截至 2026-09-20，含悬置天数）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;项&lt;/th&gt;
&lt;th&gt;悬置&lt;/th&gt;
&lt;th&gt;建议动作&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Princeton RSE WebGPU/WGSL 可移植地震求解器&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;第 6 次未验证&lt;/strong&gt;（09-15 起）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;建议人工浏览器确认一次后结案，或直接放弃&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Science China Earth Sciences 生成式 AI 综述摘要&lt;/strong&gt;（10.1007/s11430-025-2038-7）&lt;/td&gt;
&lt;td&gt;连续第 3 天未获取&lt;/td&gt;
&lt;td&gt;09-21 已拿到作者/单位/出版日（电子科技大学 / Mansoura / 清华，2026-09-14），&lt;strong&gt;仅摘要缺失&lt;/strong&gt;；&lt;strong&gt;需人工浏览器打开一次并回填&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;IEEE TGRS 多参数地震反演 DOI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-17 起悬置&lt;/td&gt;
&lt;td&gt;只有南阳理工学院宣传稿，&lt;strong&gt;确认 DOI 前不得引用&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DP-Inv 作者数分歧&lt;/strong&gt;（Crossref 4 位 vs Springer 目次 3 位）&lt;/td&gt;
&lt;td&gt;09-15 起&lt;/td&gt;
&lt;td&gt;人工确认&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;J. Seismic Exploration 元数据错配&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;第 2 天（已复核仍存在）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;结论已定型：该刊 Crossref 著录不可靠，自动筛选必须交叉验证出版商页面&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OUP（academic.oup.com）Cloudflare 拦截&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-20 起&lt;/td&gt;
&lt;td&gt;GJI 多条代码/数据声明只能人工浏览器打开&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DTW-ISA 的计算开销&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-18 起&lt;/td&gt;
&lt;td&gt;DTW 为 O(N·M)，长记录多道下可能成为瓶颈，&lt;strong&gt;需读全文确认能否上生产链路&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;FDCompGraph 是否开源 / aea999 多保真度参数化&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-19 起&lt;/td&gt;
&lt;td&gt;无新证据&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;XiaoNet 机构冲突&lt;/strong&gt;（Crossref vs OpenAlex）&lt;/td&gt;
&lt;td&gt;09-20 起&lt;/td&gt;
&lt;td&gt;到出版商页或作者主页确认&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SDPM 单位可疑&lt;/strong&gt;（OpenAlex 映射问题）&lt;/td&gt;
&lt;td&gt;09-20 起&lt;/td&gt;
&lt;td&gt;到 nature.com 页面确认&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PESMLC 目录是否发布&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-20 起&lt;/td&gt;
&lt;td&gt;到 seismica 页面确认&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Applied Geophysics 09-09 那批论文的摘要&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;持续&lt;/td&gt;
&lt;td&gt;出版商未向 Crossref/OpenAlex 提供结构化摘要，&lt;strong&gt;只能人工取 PDF&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Agentic FWI 摘要&lt;/strong&gt;（10.1007/s11004-026-10342-5）&lt;/td&gt;
&lt;td&gt;09-17 起&lt;/td&gt;
&lt;td&gt;全文闭源，&lt;strong&gt;连续多期无法推进&lt;/strong&gt;，建议人工判断是否继续投入检索预算&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;eDWI（geo-2025-0147）摘要截断&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;09-18 起&lt;/td&gt;
&lt;td&gt;Crossref 与 OpenAlex 均在 &quot;applications using seismic and other wave&quot; 处断掉，需从出版商获取完整摘要&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;研究机构缺失的 arXiv 条目&lt;/strong&gt;（2609.10368、2609.12815、2609.12115 等）&lt;/td&gt;
&lt;td&gt;09-20 起&lt;/td&gt;
&lt;td&gt;取 PDF 首页人工核对&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;8.4 需人工确认的性能数字（本周）&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;本周主榜 60 条位中，给出可直接引用量化数字的仅约 1/5&lt;/strong&gt;，其余为定性表述（&quot;substantially&quot;&quot;more accurate&quot;&quot;promising&quot;）。已逐条在日报中标注。&lt;strong&gt;任何基于本周条目做的选型决策都应以自复现为准，不要直接引用摘要里的形容词。&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;九、检索说明与本文件生成方式&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;本文件不是检索产物&lt;/strong&gt;。生成过程为：读取 &lt;code&gt;AI每日总结_2026-09-15.md&lt;/code&gt; ~ &lt;code&gt;AI每日总结_2026-09-20.md&lt;/code&gt; 六份原文 → 按 ISO 周归并 → 抽取各期&quot;〇 对比&quot;&quot;趋势总结&quot;&quot;未解决项&quot; → 合并同一条目的升级轨迹 → &lt;strong&gt;按&quot;AI/地球物理 + 传统方法&quot;两分类重新归类并标注&lt;/strong&gt; → 按 AI 6 + 传统 4 配比重排 Top 10 → 输出本文件。&lt;strong&gt;未访问任何外部数据源。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;两类条数分布&lt;/strong&gt;：60 条位中 &lt;strong&gt;AI/地球物理 44 条 / 传统方法 16 条&lt;/strong&gt;（每日分布：09-15 为 9:1、09-16 为 5:5、09-17 为 8:2、09-18 为 5:5、09-19 为 8:2、09-20 为 9:1）。精选 Top 10 配比 &lt;strong&gt;6:4&lt;/strong&gt;；传统方法条数充足（16 条 ≥ 4），&lt;strong&gt;无需&quot;凑数&quot;&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;历史重复/升级/新增&lt;/strong&gt;：本周期为系列起点，无前序周报可比；周内跨日重复 3 条（SDI〔传统〕、LMGM〔AI〕、INN 澳洲〔AI〕）、升级项分两线列于第五节、新增方向 AI 线 8 项 + 传统线 4 项。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分类判定说明（边界条目的归类原则）&lt;/strong&gt;：① AI 仅作辅助（如 DL 拾取 + 层析的 Seis-PnSn）→ 传统（AI 辅助）；② ML 框架仅作求导/计算工具、无学习组件（如 ADEPTS、DiffSWE2d）→ 传统（可微）；③ SDI 等不以 DL 为核心的范式宣示类 → 传统（范式）；④ 高斯过程等经典统计学习为核心 → AI（ML）；⑤ BeJNV 混合结构（JAG 106519）按&quot;核心创新在哪侧&quot;归 AI，并在类别行注明传统底座。&lt;strong&gt;归类为整理动作，不代表对论文创新性的判断；若与原文自述不符，以原文为准。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;⚠️ 2026-10-08 变更&lt;/strong&gt;：按用户要求，本周期 6 份日报已随全部 12 份历史日报移出主目录，现留存于工作区 &lt;code&gt;.回收站_日报_2026-10-08/&lt;/code&gt; 与外部备份 &lt;code&gt;/home/liguolong/geo_scratch/backup_日报_2026-10-08/&lt;/code&gt;（删除前校验一致）。&quot;回溯入口&quot;请改到上述两处查阅。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;诚实性声明&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;所有链接、作者、机构、日期、数字&lt;strong&gt;均转述自日报原文&lt;/strong&gt;，日报未验证的一律沿用&quot;未验证/需人工确认&quot;标注，本文件未做任何新的推断或补齐。&lt;/li&gt;
&lt;li&gt;日报中被标注为&quot;依据标题推断&quot;&quot;企业新闻口径&quot;&quot;二手来源&quot;的内容，在本文件中&lt;strong&gt;保持原标注&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;front matter 说明&lt;/strong&gt;：周报使用 &lt;code&gt;tags: [&quot;AI每周总结&quot;]&lt;/code&gt; 与 &lt;code&gt;category: &quot;AI每周总结&quot;&lt;/code&gt;。若站点分类体系（taxonomy）需要与日报保持同一 category，请把 &lt;code&gt;category&lt;/code&gt; 改为 &lt;code&gt;&quot;AI每日总结&quot;&lt;/code&gt;，其余字段不变。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;只读优先&lt;/strong&gt;：本文件生成过程未执行任何写入以外的操作，未提交、未删除、未覆盖任何既有文件。&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>AI 提示词</title><link>https://tuoyuangui.github.io/website/posts/typora/ai%E5%B7%A5%E5%85%B7/ai%E6%8F%90%E7%A4%BA%E8%AF%8D/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/ai%E5%B7%A5%E5%85%B7/ai%E6%8F%90%E7%A4%BA%E8%AF%8D/</guid><pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;AI 提示词&lt;/h1&gt;
&lt;h3&gt;1、每日定时任务提示词&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;你是资深地球物理方向的学者，熟悉 AI/深度学习、HPC、地震数据处理、全波形反演 FWI。

今天是 {{date}}，格式 YYYY-MM-DD。

任务：检索 {{lookback_days}} 天内 AI + 地球物理相关或者传统方法进展，筛选 10 条最相关内容；其中传统地球物理方法约 4 条（建议 3–5 条），AI/深度学习 + 地球物理约 6 条（建议 5–7 条）。若可验证的传统方法不足约 4 条，则按实际可验证条数列出并说明原因，不凑数。

读取 {{history_dir}} 中最近 {{lookback_reports}} 份历史总结，对比重复、升级、新增方向；分别对比 AI/地球物理与传统方法的重复、升级、新增方向，并在条目中标注“AI/地球物理”或“传统方法”。

严格要求：

只依据可验证来源，不编造链接、作者、团队、结论、数据或代码。

若信息不足或无法验证，标注“未验证/需人工确认”，不要凑数。

若不足 10 条，列出实际条数并说明原因；传统方法不足约 4 条时同样说明。

传统方法定义：以物理/数学/数值/信号处理/反演/成像/层析/地震干涉/走时/振幅等为核心，不以深度学习/机器学习为主要创新；AI 仅作辅助、对比或后处理的，归为传统方法。

AI/地球物理定义：以深度学习、机器学习、神经网络、基础模型、生成模型、强化学习等为核心创新的地球物理研究。

输出必须是一个完整 Markdown 文件全文，第一行必须是 YAML front matter，前面不要添加任何解释。

文件名：AI每周总结_{{date}}.md

YAML front matter 固定为：

title: &quot;AI每周总结-地球物理 ({{date}})&quot;
published: {{date}}
tags: [&quot;AI每周总结&quot;]
category: &quot;AI每周总结&quot;
draft: false

正文要求：

每条包含：标题、作者/团队、链接、方法、数据、代码、类别（AI/地球物理 或 传统方法）、对 {{project}} 的启发、验证状态。

按相关性排序；在整体排序中保留传统方法约 4 条、AI/地球物理约 6 条；若实际分布偏离，注明原因。

最后给出：今日趋势总结（分别总结 AI/地球物理与传统方法）、对 {{project}} 的行动建议、未解决项/需人工确认、检索说明（含两类条数分布、历史重复/升级/新增、不足原因）。

若平台支持写文件，将内容写入 AI每日总结_{{date}}.md；若不支持，只输出文件全文。

只读优先；涉及提交作业、删除、覆盖模型等操作，只给命令草稿，等待人工确认
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>deepseek harness 安装和使用</title><link>https://tuoyuangui.github.io/website/posts/typora/ai%E5%B7%A5%E5%85%B7/deepseek-harness-%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/ai%E5%B7%A5%E5%85%B7/deepseek-harness-%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8/</guid><pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;deepseek harness 安装和使用&lt;/h1&gt;
&lt;h2&gt;方法一：直接使用node.js 安装&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#下载位置：https://nodejs.org/en/download
# 需要已安装好node.js node -v

# 直接安装
npx @deepseek-ai/dsh web

# 编译安装
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build # 准备仓库产物
pnpm dsh web   # 直接使用这些已构建产物
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在浏览器中打开&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./deepseek%20harness%20%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8.assets/image-20260914163459533.png&quot; alt=&quot;image-20260914163459533&quot; /&gt;&lt;/p&gt;
&lt;p&gt;输入API密钥&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./deepseek%20harness%20%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8.assets/image-20260914164038532.png&quot; alt=&quot;image-20260914164038532&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;方法二：在vscode中使用并自动安装（在remote ssh远程时工作存在问题）&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;./deepseek%20harness%20%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8.assets/image-20260914172313064.png&quot; alt=&quot;image-20260914172313064&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;方法三：使用dsh-tui 然后连接workbuddy 免费用token（推荐）&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#下载位置：https://nodejs.org/en/download
# 需要已安装好node.js node -v

# 安装dsh 和 dsh-tui
# https://dshtui.com/getting-started/
npm install -g @deepseek-ai/dsh @deepseek-harness-tui/dsh-tui

# 安装workbuddy 按照官网教程即可
https://www.workbuddy.cn/events/invite?inviteCode=cdqfmscx2z

# 安装wrokbuddy-conect插件（选择版本）
# https://github.com/dingminhua/dsh-connect-workbuddy
dsh plugin --profile web add dsh-connect-workbuddy     # Web
dsh plugin --profile dsh-tui add dsh-connect-workbuddy # TUI
dsh plugin --profile desktop add dsh-connect-workbuddy # desktop

# 运行
dsh web # 网页
dsh-tui # TUI
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在vscode 的对应插件&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./deepseek%20harness%20%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8.assets/image-20260916165053686.png&quot; alt=&quot;image-20260916165053686&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在dsh-tui&lt;code&gt;/setting&lt;/code&gt;中修改各种设置&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./deepseek%20harness%20%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8.assets/image-20260916165402885.png&quot; alt=&quot;image-20260916165402885&quot; /&gt;&lt;/p&gt;
&lt;p&gt;web 设置wrokbuddy&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 启动web页面并设置
dsh web
# 验证workbuddy状态
dsh plugin --profile web exec dsh-connect-workbuddy status
dsh plugin --profile dsh-tui exec dsh-connect-workbuddy status

#对于服务器，或者不详安装workbuddy 可以把已经登录workbuddy的信息粘贴
cp -r  其他位置的~/.local/share[~/.config]/CodeBuddyExtension   ~/./local/share/CodeBuddyExtension

# 输出示例
CN (domestic): signed in as 没脾气的鬼才
  Access token expires 2026-10-16T08:48:36.883Z (refresh is automatic)
  Local accounts: 1
  Remaining credit: 3552
Global: signed out
  Local accounts: 0
Host bundle: stale heartbeat (DSH process exited)
Client card: load failures are logged to the browser console only; the host providers are unaffected.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;./deepseek%20harness%20%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8.assets/image-20260916165950434.png&quot; alt=&quot;image-20260916165950434&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./deepseek%20harness%20%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8.assets/image-20260916165921468.png&quot; alt=&quot;image-20260916165921468&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在tui中设置&lt;code&gt;/models&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./deepseek%20harness%20%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8.assets/image-20260916170344923.png&quot; alt=&quot;image-20260916170344923&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;总的命令&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 网络设置
export all_proxy=http://127.0.0.1:7890
# 删除老的包
rm -rf ~/.dsh ~/.npm ~/.dsh-tui ~/.nvm ~/.dsh-debug
# 下载并安装 nvm：
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
# 代替重启 shell
\. &quot;$HOME/.nvm/nvm.sh&quot;
# 下载并安装 Node.js：
nvm install 24
# 验证 Node.js 版本：
node -v # Should print &quot;v24.21.0&quot;.
# 下载并安装 pnpm：
corepack enable pnpm
# 验证 pnpm 版本：
pnpm -v
# 安装 deepseek harness 以及tui
npm install -g @deepseek-ai/dsh@latest @deepseek-harness-tui/dsh-tui@latest
#npm install -g @deepseek-ai/dsh@0.2.0-rc.2 @deepseek-harness-tui/dsh-tui@0.14.0
dsh --version
dsh-tui --version
# 验证 
#dsh plugin --profile web     add dsh-connect-workbuddy@4.3.2
#dsh plugin --profile dsh-tui add dsh-connect-workbuddy@4.3.2
dsh plugin --profile web     add dsh-connect-workbuddy@latest
dsh plugin --profile dsh-tui add dsh-connect-workbuddy@latest
dsh plugin --profile web     exec dsh-connect-workbuddy status
dsh plugin --profile dsh-tui exec dsh-connect-workbuddy status

# 使用聚合token
dsh plugin --profile dsh-tui add dsh-codearts-auth
dsh plugin --profile web     add dsh-codearts-auth
# 服务器端口映射 便于登录，登录需要随机调用端口进行验证
ssh -L 3080:127.0.0.1:3080 用户名@服务器IP
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>利用公开模板建站</title><link>https://tuoyuangui.github.io/website/posts/typora/%E7%BD%91%E7%BB%9C%E5%BB%BA%E7%AB%99/%E5%88%A9%E7%94%A8%E5%85%AC%E5%BC%80%E6%A8%A1%E6%9D%BF%E5%BB%BA%E7%AB%99/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E7%BD%91%E7%BB%9C%E5%BB%BA%E7%AB%99/%E5%88%A9%E7%94%A8%E5%85%AC%E5%BC%80%E6%A8%A1%E6%9D%BF%E5%BB%BA%E7%AB%99/</guid><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;1、安装node.js&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 下载并安装 nvm：
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

# 代替重启 shell
\. &quot;$HOME/.nvm/nvm.sh&quot;

# 下载并安装 Node.js：
nvm install 24


corepack enable
corepack prepare pnpm@11 --activate

# 验证 Node.js 版本：
node -v # Should print &quot;v24.21.0&quot;.

# 验证 npm 版本：
npm -v # Should print &quot;11.19.0&quot;.

&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;2、安装包和运行&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# https://github.com/saicaca/fuwari
pnpm install
pnpm dev
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;参考来源&lt;/h3&gt;
&lt;p&gt;https://bysansheng.cn/posts/fuwari-%E6%90%AD%E5%BB%BA%E6%95%99%E7%A8%8B/&lt;/p&gt;
&lt;p&gt;https://fuwari.vercel.app/&lt;/p&gt;
&lt;p&gt;https://github.com/afoim/fuwari&lt;/p&gt;
&lt;p&gt;https://blog.isyyo.com/posts/fuwari_tutorial/&lt;/p&gt;
</content:encoded></item><item><title>Linux 服务器本地转发</title><link>https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/linux%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%9C%AC%E5%9C%B0%E4%BB%A3%E7%90%86%E8%BD%AC%E5%8F%91/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/linux%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%9C%AC%E5%9C%B0%E4%BB%A3%E7%90%86%E8%BD%AC%E5%8F%91/</guid><pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Linux 服务器本地转发&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;# 查看本地端口情况
ss -tlnp | grep 1080

#pkill -9 -u liguolong

# 在 WSL 中执行 - 创建 SOCKS5 服务
ssh -fN -D 1080 localhost

# 在 WSL 中测试代理是否工作
curl --socks5-hostname localhost:1080 https://www.baidu.com -I

# 在 WSL 中执行 - 将 SOCKS5 服务转发到远端
ssh -fN -R 1080:localhost:1080 liguolong@172.19.133.164

# SSH 登录远端后执行
curl --socks5-hostname localhost:1080 https://www.baidu.com -I

#代理解析
export http_proxy=&quot;socks5h://localhost:1080&quot;
export https_proxy=&quot;socks5h://localhost:1080&quot;
export all_proxy=&quot;socks5h://localhost:1080&quot;

# 本地解析 DNS（需要本地能解析域名）
export http_proxy=&quot;socks5://localhost:1080&quot;
export https_proxy=&quot;socks5://localhost:1080&quot;

ssh -fN -D 1080 localhost
ssh -fN -R 1080:localhost:1080 lyy-node3
ssh lyy-node3
export http_proxy=&quot;socks5h://localhost:1080&quot;
export https_proxy=&quot;socks5h://localhost:1080&quot;
export all_proxy=&quot;socks5h://localhost:1080&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;本地端口&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;./Linux%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%9C%AC%E5%9C%B0%E4%BB%A3%E7%90%86%E8%BD%AC%E5%8F%91.assets/image-20260514212140002.png&quot; alt=&quot;image-20260514212140002&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;服务器端口&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;./Linux%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%9C%AC%E5%9C%B0%E4%BB%A3%E7%90%86%E8%BD%AC%E5%8F%91.assets/image-20260514212302039.png&quot; alt=&quot;image-20260514212302039&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>VScode调试 CUDA+CMAKE</title><link>https://tuoyuangui.github.io/website/posts/typora/%E7%BC%96%E8%AF%91%E8%B0%83%E8%AF%95/vscode%E8%B0%83%E8%AF%95%E6%96%B9%E6%B3%95/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E7%BC%96%E8%AF%91%E8%B0%83%E8%AF%95/vscode%E8%B0%83%E8%AF%95%E6%96%B9%E6%B3%95/</guid><pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;VScode调试 CUDA+CMAKE&lt;/h1&gt;
&lt;p&gt;在vscode中进行运行调试cuda程序&lt;/p&gt;
&lt;h2&gt;Launch.json&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;version&quot;: &quot;0.2.0&quot;,
  &quot;configurations&quot;: [
    {
      &quot;name&quot;: &quot;CUDA C++: Launch&quot;,
      &quot;type&quot;: &quot;cuda-gdb&quot;,
      &quot;request&quot;: &quot;launch&quot;,
      &quot;program&quot;: &quot;${workspaceFolder}/build/gpu2dfd&quot;,
      &quot;args&quot;: &quot;xx&quot;,
      &quot;preLaunchTask&quot;:&quot;Build&quot;
    },
  ]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Tasks.json&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;version&quot;: &quot;2.0.0&quot;,
  &quot;options&quot;: {
  &quot;cwd&quot;: &quot;${workspaceFolder}/build&quot; // 进入 build 文件夹
  },
  &quot;tasks&quot;: [
    {
     // 运行 cmake .. 命令
      &quot;type&quot;: &quot;shell&quot;,
      &quot;label&quot;: &quot;cmake&quot;,
      &quot;command&quot;: &quot;cmake&quot;,
      &quot;args&quot;: [
        &quot;..&quot;
      ]
    },
    {
      // 运行 make 命令
      &quot;label&quot;: &quot;make&quot;,
      &quot;group&quot;: {
        &quot;kind&quot;: &quot;build&quot;,
        &quot;isDefault&quot;: true
     },
      &quot;command&quot;: &quot;make&quot;,
      &quot;args&quot;: [
      ]
    },
    {
      &quot;label&quot;: &quot;Build&quot;,
     &quot;dependsOrder&quot;: &quot;sequence&quot;, // 按列出的顺序执行任务依赖项
      &quot;dependsOn&quot;:[
        &quot;cmake&quot;,
        &quot;make&quot;
      ]
    }
  ]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Cmake&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# complie the FDTD CUDA code with cmake
cmake_minimum_required(VERSION 3.10)
project(GPU2DFD LANGUAGES CUDA CXX)

# set the debug mode
set(CMAKE_BUILD_TYPE Debug)

# check the cuda language
include(CheckLanguage)
check_language(CUDA)
if(CMAKE_CUDA_COMPILER)
  message(STATUS &quot;Find CUDA !&quot;)
else()
  message(FATAL_ERROR &quot;Not found CUDA!&quot;)
endif()
set(CMAKE_CUDA_STANDARD 11)
set(CMAKE_CUDA_ARCHITECTURES 50 60 70)
# add the source file
add_executable(gpu2dfd gpu2dfd.cu)
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>podman 换源与示例</title><link>https://tuoyuangui.github.io/website/posts/typora/docker%E5%92%8Cpodman/podman%E6%8D%A2%E6%BA%90%E4%B8%8E%E7%A4%BA%E4%BE%8B/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/docker%E5%92%8Cpodman/podman%E6%8D%A2%E6%BA%90%E4%B8%8E%E7%A4%BA%E4%BE%8B/</guid><pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;podman 换源与示例&lt;/h1&gt;
&lt;h2&gt;一、docker国内源&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sudo cp  /etc/containers/registries.conf /etc/containers/registries.conf.bak
$ sudo vim /etc/containers/registries.conf

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;在末尾添加&lt;/strong&gt; 配置文件也可以&lt;code&gt;/home/lgl/.config/containers/storage.conf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./podman%E6%8D%A2%E6%BA%90%E4%B8%8E%E7%A4%BA%E4%BE%8B.assets/image-20240628235827635.png&quot; alt=&quot;image-20240628235827635&quot; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[[registry]]
# 需要被加速的原始仓库
prefix = &quot;docker.io&quot;
# 实际访问的仓库地址，通常与 prefix 相同
location = &quot;docker.io&quot;

# 第一个镜像源：中科大（推荐）
[[registry.mirror]]
location = &quot;3uscr8bc.mirror.aliyuncs.com&quot;
# 是否允许不安全的HTTP连接，国内主流源都支持HTTPS，保持false即可
insecure = false
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;$ sudo systemctl restart podman
$ podman info #检查是否成功
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;./podman%E6%8D%A2%E6%BA%90%E4%B8%8E%E7%A4%BA%E4%BE%8B.assets/image-20240629001751904.png&quot; alt=&quot;image-20240629001751904&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;二、检查是否成功&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;$ podman pull hello-world
$ podman run hello-world
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;./podman%E6%8D%A2%E6%BA%90%E4%B8%8E%E7%A4%BA%E4%BE%8B.assets/image-20240629004552295.png&quot; alt=&quot;image-20240629004552295&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;三、删除镜像和容器&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;# 删除容器
podman rm -af
# 删除所有镜像（谨慎使用！）
podman rmi -af

#进入容器的交互式终端
podman exec -it container_name /bin/bash

#列出当前正在运行的容器
podman ps

#列出所有容器（包括已停止的容器）
podman ps -a

#停止一个或多个容器
podman stop container_name
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>PyQT 软件安装</title><link>https://tuoyuangui.github.io/website/posts/typora/gui%E5%B7%A5%E5%85%B7/pyqt%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/gui%E5%B7%A5%E5%85%B7/pyqt%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85/</guid><pubDate>Wed, 24 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;PyQT 软件安装&lt;/h1&gt;
&lt;h2&gt;一、环境配置&lt;/h2&gt;
&lt;h3&gt;1、基础环境&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$ pip install pyqt6
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2、Qt creater&lt;/h3&gt;
&lt;p&gt;https://mirrors.tuna.tsinghua.edu.cn/
&lt;img src=&quot;./PyQT%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85.assets/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p6X5LiA55m-5LqM5Y2B5YWr,size_20,color_FFFFFF,t_70,g_se,x_16.png&quot; alt=&quot;在这里插入图片描述&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;2、搜索QT&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;./PyQT%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85.assets/4618845b3f474ff886d291c43661e79b.png&quot; alt=&quot;在这里插入图片描述&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;3、打开[archive]&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;./PyQT%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85.assets/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p6X5LiA55m-5LqM5Y2B5YWr,size_20,color_FFFFFF,t_70,g_se,x_16-1719458766195-1.png&quot; alt=&quot;在这里插入图片描述&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;3、打开[online_installers]&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;./PyQT%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85.assets/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p6X5LiA55m-5LqM5Y2B5YWr,size_20,color_FFFFFF,t_70,g_se,x_16-1719458766195-2.png&quot; alt=&quot;在这里插入图片描述&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;4、选择最新版&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;./PyQT%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85.assets/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p6X5LiA55m-5LqM5Y2B5YWr,size_20,color_FFFFFF,t_70,g_se,x_16-1719458766195-3.png&quot; alt=&quot;在这里插入图片描述&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;5、选择linux下的最新版&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;./PyQT%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85.assets/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p6X5LiA55m-5LqM5Y2B5YWr,size_20,color_FFFFFF,t_70,g_se,x_16-1719458766195-4.png&quot; alt=&quot;在这里插入图片描述&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;6、下载安装&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;./PyQT%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85.assets/image-20240627112714872.png&quot; alt=&quot;image-20240627112714872&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】&lt;a href=&quot;https://blog.csdn.net/qq_53873381/article/details/129876234&quot;&gt;Qt安装教程以及QT Creater，同时使用清华源镜像，解决安装过慢的问题_qt清华镜像-CSDN博客&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>hugFace 下载</title><link>https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/hugface%E4%B8%8B%E8%BD%BD/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/hugface%E4%B8%8B%E8%BD%BD/</guid><pubDate>Fri, 26 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;hugFace 下载&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;安装依赖&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;pip install -U huggingface_hub
sudo apt install aria2 -y
wget https://hf-mirror.com/hfd/hfd.sh
chmod a+x hfd.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2. 设置&lt;a href=&quot;https://zhida.zhihu.com/search?content_id=240522471&amp;amp;content_type=Article&amp;amp;match_order=1&amp;amp;q=%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F&amp;amp;zhida_source=entity&quot;&gt;环境变量&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Linux&lt;/em&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export HF_ENDPOINT=https://hf-mirror.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;Windows Powershell&lt;/em&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$env:HF_ENDPOINT = &quot;https://hf-mirror.com&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;3、 下载实例&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;./hfd.sh subsurfacegen/field-scale-dataset \
    --dataset \
    --local-dir ./subsurfacegen \
    --include &quot;models/*&quot; &quot;slices/*&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;hfd的多线程下载文件&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#!/usr/bin/env bash
RED=&apos;\033[0;31m&apos;; GREEN=&apos;\033[0;32m&apos;; YELLOW=&apos;\033[1;33m&apos;; DIM=&apos;\033[2m&apos;; BOLD=&apos;\033[1m&apos;; NC=&apos;\033[0m&apos; # No Color

trap &apos;printf &quot;\n%bInterrupted. Re-run to resume.%b\n&quot; &quot;$YELLOW&quot; &quot;$NC&quot;; exit 130&apos; INT

# Format a byte count as a human-readable string (decimal units, matching the HF UI).
human() {
    awk -v b=&quot;${1:-0}&quot; &apos;BEGIN{u=&quot;B KB MB GB TB PB&quot;;n=split(u,a,&quot; &quot;);i=1;
        while(b&amp;gt;=1000&amp;amp;&amp;amp;i&amp;lt;n){b/=1000;i++} printf (i==1?&quot;%d%s&quot;:&quot;%.2f%s&quot;),b,a[i]}&apos;
}

display_help() {
    cat &amp;lt;&amp;lt; EOF
Usage:
  hfd &amp;lt;REPO_ID&amp;gt; [--include include_pattern1 include_pattern2 ...] [--exclude exclude_pattern1 exclude_pattern2 ...] [--hf_username username] [--hf_token token] [--tool aria2c|wget] [-x threads] [-j jobs] [--dataset] [--local-dir path] [--revision rev]

Description:
  Downloads a model or dataset from Hugging Face using the provided repo ID.

Arguments:
  REPO_ID         The Hugging Face repo ID (Required)
                  Format: &apos;org_name/repo_name&apos; or legacy format (e.g., gpt2)
Options:
  include/exclude_pattern The patterns to match against file path, supports wildcard characters.
                  e.g., &apos;--exclude *.safetensor *.md&apos;, &apos;--include vae/*&apos;.
  --include       (Optional) Patterns to include files for downloading (supports multiple patterns).
  --exclude       (Optional) Patterns to exclude files from downloading (supports multiple patterns).
  --hf_username   (Optional) Hugging Face username for authentication (not email).
  --hf_token      (Optional) Hugging Face token for authentication.
  --tool          (Optional) Download tool to use: aria2c (default) or wget.
  -x              (Optional) Number of download threads for aria2c (default: 4).
  -j              (Optional) Number of concurrent downloads for aria2c (default: 5).
  --dataset       (Optional) Flag to indicate downloading a dataset.
  --local-dir     (Optional) Directory path to store the downloaded data.
                             Defaults to the current directory with a subdirectory named &apos;repo_name&apos;
                             if REPO_ID is composed of &apos;org_name/repo_name&apos;.
  --revision      (Optional) Model/Dataset revision to download (default: main).

Example:
  hfd gpt2
  hfd bigscience/bloom-560m --exclude *.safetensors
  hfd meta-llama/Llama-2-7b --hf_username myuser --hf_token mytoken -x 4
  hfd lavita/medical-qa-shared-task-v1-toy --dataset
  hfd bartowski/Phi-3.5-mini-instruct-exl2 --revision 5_0
EOF
    exit 1
}

[[ -z &quot;$1&quot; || &quot;$1&quot; =~ ^-h || &quot;$1&quot; =~ ^--help ]] &amp;amp;&amp;amp; display_help

REPO_ID=$1
shift

# Default values
TOOL=&quot;aria2c&quot;
THREADS=4
CONCURRENT=5
HF_ENDPOINT=${HF_ENDPOINT:-&quot;https://huggingface.co&quot;}
INCLUDE_PATTERNS=()
EXCLUDE_PATTERNS=()
REVISION=&quot;main&quot;

validate_number() {
    [[ &quot;$2&quot; =~ ^[1-9][0-9]*$ &amp;amp;&amp;amp; &quot;$2&quot; -le &quot;$3&quot; ]] || { printf &quot;%b[Error] %s must be 1-%s%b\n&quot; &quot;$RED&quot; &quot;$1&quot; &quot;$3&quot; &quot;$NC&quot;; exit 1; }
}

# Argument parsing
while [[ $# -gt 0 ]]; do
    case $1 in
        --include) shift; while [[ $# -gt 0 &amp;amp;&amp;amp; ! ($1 =~ ^--) &amp;amp;&amp;amp; ! ($1 =~ ^-[^-]) ]]; do INCLUDE_PATTERNS+=(&quot;$1&quot;); shift; done ;;
        --exclude) shift; while [[ $# -gt 0 &amp;amp;&amp;amp; ! ($1 =~ ^--) &amp;amp;&amp;amp; ! ($1 =~ ^-[^-]) ]]; do EXCLUDE_PATTERNS+=(&quot;$1&quot;); shift; done ;;
        --hf_username) HF_USERNAME=&quot;$2&quot;; shift 2 ;;
        --hf_token) HF_TOKEN=&quot;$2&quot;; shift 2 ;;
        --tool)
            [[ &quot;$2&quot; == aria2c || &quot;$2&quot; == wget ]] || { printf &quot;%b[Error] Invalid tool. Use &apos;aria2c&apos; or &apos;wget&apos;.%b\n&quot; &quot;$RED&quot; &quot;$NC&quot;; exit 1; }
            TOOL=&quot;$2&quot;; shift 2 ;;
        -x) validate_number &quot;threads (-x)&quot; &quot;$2&quot; 10; THREADS=&quot;$2&quot;; shift 2 ;;
        -j) validate_number &quot;concurrent downloads (-j)&quot; &quot;$2&quot; 10; CONCURRENT=&quot;$2&quot;; shift 2 ;;
        --dataset) DATASET=1; shift ;;
        --local-dir) LOCAL_DIR=&quot;$2&quot;; shift 2 ;;
        --revision) REVISION=&quot;$2&quot;; shift 2 ;;
        *) display_help ;;
    esac
done

# A fingerprint of the options that affect the file list; a change forces regeneration.
generate_command_string() {
    printf &apos;REPO_ID=%s TOOL=%s INCLUDE=%s EXCLUDE=%s DATASET=%s HF_USERNAME=%s HF_TOKEN=%s HF_ENDPOINT=%s REVISION=%s&apos; \
        &quot;$REPO_ID&quot; &quot;$TOOL&quot; &quot;${INCLUDE_PATTERNS[*]}&quot; &quot;${EXCLUDE_PATTERNS[*]}&quot; &quot;${DATASET:-0}&quot; \
        &quot;${HF_USERNAME:-}&quot; &quot;${HF_TOKEN:-}&quot; &quot;${HF_ENDPOINT:-}&quot; &quot;$REVISION&quot;
}

check_command() {
    if ! command -v &quot;$1&quot; &amp;amp;&amp;gt;/dev/null; then
        printf &quot;%b%s is not installed. Please install it first.%b\n&quot; &quot;$RED&quot; &quot;$1&quot; &quot;$NC&quot;
        exit 1
    fi
}

check_command curl; check_command &quot;$TOOL&quot;

LOCAL_DIR=&quot;${LOCAL_DIR:-${REPO_ID#*/}}&quot;
mkdir -p &quot;$LOCAL_DIR/.hfd&quot;

REPO_API_PATH=&quot;models/$REPO_ID&quot;; DOWNLOAD_API_PATH=&quot;$REPO_ID&quot;
[[ &quot;$DATASET&quot; == 1 ]] &amp;amp;&amp;amp; { REPO_API_PATH=&quot;datasets/$REPO_ID&quot;; DOWNLOAD_API_PATH=$REPO_API_PATH; }

# wget --cut-dirs strips &quot;&amp;lt;download_api_path&amp;gt;/resolve/&amp;lt;revision&amp;gt;/&quot;; a fixed value wrongly
# assumes the org/name form and eats a directory level for legacy (single-name) repo ids.
CUT_DIRS=$(( $(printf &apos;%s&apos; &quot;$DOWNLOAD_API_PATH&quot; | tr -cd &apos;/&apos; | wc -c) + 3 ))

# Metadata API URL (used for the gated/auth check); append revision when not main.
METADATA_API_PATH=&quot;$REPO_API_PATH&quot;
[[ &quot;$REVISION&quot; != &quot;main&quot; ]] &amp;amp;&amp;amp; METADATA_API_PATH=&quot;$METADATA_API_PATH/revision/$REVISION&quot;
API_URL=&quot;$HF_ENDPOINT/api/$METADATA_API_PATH?blobs=true&quot;

METADATA_FILE=&quot;$LOCAL_DIR/.hfd/repo_metadata.json&quot;

fetch_and_save_metadata() {
    status_code=$(curl -L -s -w &quot;%{http_code}&quot; -o &quot;$METADATA_FILE&quot; ${HF_TOKEN:+-H &quot;Authorization: Bearer $HF_TOKEN&quot;} &quot;$API_URL&quot;)
    RESPONSE=$(cat &quot;$METADATA_FILE&quot;)
    if [ &quot;$status_code&quot; -eq 200 ]; then
        printf &quot;%s\n&quot; &quot;$RESPONSE&quot;
    else
        printf &quot;%b[Error] Failed to fetch metadata from %s. HTTP status code: %s.%b\n%s\n&quot; &quot;$RED&quot; &quot;$API_URL&quot; &quot;$status_code&quot; &quot;$NC&quot; &quot;$RESPONSE&quot; &amp;gt;&amp;amp;2
        rm -f &quot;$METADATA_FILE&quot;
        exit 1
    fi
}

# Exit early if the repo is gated/private but no credentials were supplied.
check_authentication() {
    local gated
    if command -v jq &amp;amp;&amp;gt;/dev/null; then
        gated=$(printf &apos;%s&apos; &quot;$1&quot; | jq -r &apos;.gated // false&apos;)
    else
        printf &apos;%s&apos; &quot;$1&quot; | grep -q &apos;&quot;gated&quot;:[^f]&apos; &amp;amp;&amp;amp; gated=true || gated=false
    fi
    if [[ &quot;$gated&quot; != &quot;false&quot; &amp;amp;&amp;amp; ( -z &quot;$HF_TOKEN&quot; || -z &quot;$HF_USERNAME&quot; ) ]]; then
        printf &quot;%bThe repository requires authentication, but --hf_username and --hf_token is not passed. Please get token from https://huggingface.co/settings/tokens.\nExiting.\n%b&quot; &quot;$RED&quot; &quot;$NC&quot;
        exit 1
    fi
}

printf &quot;%b%s%b (%s)\n&quot; &quot;$BOLD&quot; &quot;$REPO_ID&quot; &quot;$NC&quot; &quot;$REVISION&quot;
if [[ ! -f &quot;$METADATA_FILE&quot; ]]; then
    printf &quot;%bFetching metadata...%b\n&quot; &quot;$DIM&quot; &quot;$NC&quot;
    RESPONSE=$(fetch_and_save_metadata) || exit 1
else
    RESPONSE=$(cat &quot;$METADATA_FILE&quot;)
fi
check_authentication &quot;$RESPONSE&quot;

# Total bytes of the revision (cheap, branch-specific); empty if the endpoint lacks this API.
fetch_treesize() {
    local json
    json=$(curl -sSL ${HF_TOKEN:+-H &quot;Authorization: Bearer $HF_TOKEN&quot;} &quot;$HF_ENDPOINT/api/$REPO_API_PATH/treesize/$REVISION&quot;) || return
    if command -v jq &amp;amp;&amp;gt;/dev/null; then
        printf &apos;%s&apos; &quot;$json&quot; | jq -r &apos;.size // empty&apos; 2&amp;gt;/dev/null
    else
        printf &apos;%s&apos; &quot;$json&quot; | grep -o &apos;&quot;size&quot;:[0-9]*&apos; | head -1 | grep -o &apos;[0-9]*&apos;
    fi
}
# Reuse the cached list only if the command is unchanged AND the manifest is intact (its line
# count equals repo_info&apos;s total). An interrupted/failed walk leaves no repo_info, so it re-lists.
should_regenerate_filelist() {
    local cmd=&quot;$LOCAL_DIR/.hfd/last_download_command&quot; mf=&quot;$LOCAL_DIR/.hfd/manifest&quot; info=&quot;$LOCAL_DIR/.hfd/repo_info&quot;
    [[ -f &quot;$mf&quot; &amp;amp;&amp;amp; -f &quot;$info&quot; &amp;amp;&amp;amp; &quot;$(generate_command_string)&quot; == &quot;$(cat &quot;$cmd&quot; 2&amp;gt;/dev/null)&quot; \
       &amp;amp;&amp;amp; &quot;$(wc -l &amp;lt; &quot;$mf&quot;)&quot; == &quot;$(cut -d&apos; &apos; -f1 &quot;$info&quot; 2&amp;gt;/dev/null)&quot; ]] &amp;amp;&amp;amp; return 1
    return 0
}

fileslist_file=&quot;.hfd/${TOOL}_urls.txt&quot;

# Convert a list of wildcard patterns into a single alternation regex.
patterns_to_regex() {
    (($#)) || return 0
    printf &apos;%s\n&apos; &quot;$@&quot; | sed &apos;s/\./\\./g; s/\*/.*/g&apos; | paste -sd &apos;|&apos; -
}

# Emit &quot;size&amp;lt;TAB&amp;gt;path&quot; for every file in a tree page (jq, or a grep/awk fallback).
emit_page_files() {
    if command -v jq &amp;amp;&amp;gt;/dev/null; then
        jq -r &apos;.[] | select(.type==&quot;file&quot;) | &quot;\(.size)\t\(.path)&quot;&apos; &quot;$1&quot;
    else
        # Strip the nested lfs{} object (it has its own &quot;size&quot;) so type/size/path align per entry.
        sed &apos;s/&quot;lfs&quot;:{[^}]*}//g&apos; &quot;$1&quot; \
            | grep -oE &apos;&quot;type&quot;:&quot;[^&quot;]*&quot;|&quot;size&quot;:[0-9]+|&quot;path&quot;:&quot;[^&quot;]*&quot;&apos; \
            | sed &apos;s/&quot;type&quot;:&quot;//; s/&quot;size&quot;://; s/&quot;path&quot;:&quot;//; s/&quot;$//&apos; \
            | awk &apos;NR%3==1{t=$0} NR%3==2{s=$0} NR%3==0{if(t==&quot;file&quot;)print s&quot;\t&quot;$0}&apos;
    fi
}

# Emit &quot;size&amp;lt;TAB&amp;gt;path&quot; for every file from the cached metadata siblings[] (needs jq).
emit_siblings() {
    jq -r &apos;(.siblings // [])[] | &quot;\(.size // 0)\t\(.rfilename)&quot;&apos; &quot;$METADATA_FILE&quot;
}

# True when siblings[] is the complete list: its sizes sum to treesize (so it wasn&apos;t truncated, as
# it is for very large repos). Lets us skip the slow tree walk for typical repos via one API call.
siblings_complete() {
    command -v jq &amp;amp;&amp;gt;/dev/null &amp;amp;&amp;amp; [[ &quot;$REPO_SIZE&quot; =~ ^[0-9]+$ ]] || return 1
    local n s
    read -r n s &amp;lt; &amp;lt;(jq -r &apos;(.siblings // []) as $s | &quot;\($s|length) \([$s[].size // 0]|add // 0)&quot;&apos; &quot;$METADATA_FILE&quot; 2&amp;gt;/dev/null)
    (( ${n:-0} &amp;gt; 0 )) &amp;amp;&amp;amp; [[ &quot;${s:-0}&quot; == &quot;$REPO_SIZE&quot; ]]
}

# Keep only &quot;size&amp;lt;TAB&amp;gt;path&quot; stdin lines matching include/exclude (the *_REGEX globals).
filter_size_path() {
    local size path
    while IFS=$&apos;\t&apos; read -r size path; do
        [[ -z &quot;$path&quot; ]] &amp;amp;&amp;amp; continue
        [[ -n &quot;$INCLUDE_REGEX&quot; &amp;amp;&amp;amp; ! &quot;$path&quot; =~ $INCLUDE_REGEX ]] &amp;amp;&amp;amp; continue
        [[ -n &quot;$EXCLUDE_REGEX&quot; &amp;amp;&amp;amp; &quot;$path&quot; =~ $EXCLUDE_REGEX ]] &amp;amp;&amp;amp; continue
        printf &apos;%s\t%s\n&apos; &quot;${size:-0}&quot; &quot;$path&quot;
    done
}

# Resumably walk the recursive tree into .hfd/manifest.partial (filtered size&amp;lt;TAB&amp;gt;path). After each
# page, checkpoint .hfd/list_state (fingerprint / entries scanned / next cursor) so an interrupted or
# failed walk continues from there instead of restarting. Progress (entries scanned) goes to stderr.
walk_tree() {
    local state=&quot;$LOCAL_DIR/.hfd/list_state&quot; partial=&quot;$LOCAL_DIR/.hfd/manifest.partial&quot;
    local page=&quot;$LOCAL_DIR/.hfd/tree_page.json&quot; fp url scanned=0 headers n saved_fp=&quot;&quot;
    fp=$(generate_command_string)
    [[ -f &quot;$state&quot; &amp;amp;&amp;amp; -f &quot;$partial&quot; ]] &amp;amp;&amp;amp; { read -r saved_fp; read -r scanned; read -r url; } &amp;lt; &quot;$state&quot;
    if [[ &quot;$saved_fp&quot; != &quot;$fp&quot; ]]; then   # no checkpoint, or it belongs to a different command
        url=&quot;$HF_ENDPOINT/api/$REPO_API_PATH/tree/$REVISION?recursive=true&amp;amp;expand=false&quot;
        scanned=0; : &amp;gt; &quot;$partial&quot;
    elif [[ -s &quot;$partial&quot; &amp;amp;&amp;amp; -n &quot;$(tail -c1 &quot;$partial&quot;)&quot; ]]; then
        sed -i &apos;$d&apos; &quot;$partial&quot;   # drop a torn final line from a kill mid-append (the page re-fetches)
    fi
    while [[ -n &quot;$url&quot; ]]; do
        headers=$(curl -sSL ${HF_TOKEN:+-H &quot;Authorization: Bearer $HF_TOKEN&quot;} -D - -o &quot;$page&quot; &quot;$url&quot;) || return 1
        if command -v jq &amp;amp;&amp;gt;/dev/null; then n=$(jq &apos;length&apos; &quot;$page&quot; 2&amp;gt;/dev/null); else n=$(grep -o &apos;&quot;type&quot;:&quot;&apos; &quot;$page&quot; | wc -l); fi
        emit_page_files &quot;$page&quot; | filter_size_path &amp;gt;&amp;gt; &quot;$partial&quot;
        scanned=$(( scanned + ${n:-0} ))
        printf &apos;\r\033[K%bListing files... %d scanned%b&apos; &quot;$DIM&quot; &quot;$scanned&quot; &quot;$NC&quot; &amp;gt;&amp;amp;2
        url=$(printf &apos;%s&apos; &quot;$headers&quot; | tr -d &apos;\r&apos; | grep -i &apos;^link:&apos; \
            | grep -o &apos;&amp;lt;[^&amp;gt;]*&amp;gt;;[[:space:]]*rel=&quot;next&quot;&apos; | sed -n &apos;s/^&amp;lt;\([^&amp;gt;]*\)&amp;gt;.*/\1/p&apos;)
        printf &apos;%s\n%s\n%s\n&apos; &quot;$fp&quot; &quot;$scanned&quot; &quot;$url&quot; &amp;gt; &quot;$state&quot;   # checkpoint after the page is in
    done
    return 0
}

# Dedup .hfd/manifest.partial by path (a resumed walk may re-list its boundary page) into the final
# manifest, and write &quot;&amp;lt;count&amp;gt; &amp;lt;bytes&amp;gt;&quot; totals to filelist_stats.
finalize_filelist() {
    local mf=&quot;$LOCAL_DIR/.hfd/manifest&quot;
    : &amp;gt; &quot;$mf&quot;
    awk -F&apos;\t&apos; -v mf=&quot;$mf&quot; &apos;!seen[$2]++ { print &amp;gt;&amp;gt; mf; n++; s+=$1 } END { print (n+0)&quot; &quot;(s+0) }&apos; \
        &quot;$LOCAL_DIR/.hfd/manifest.partial&quot; &amp;gt; &quot;$LOCAL_DIR/.hfd/filelist_stats&quot;
}

# Build tool input from the manifest; set NEED_COUNT (files still to fetch). One find pass diffs
# the tree, keeping files missing or the wrong size (.aria2 sidecar = in-progress, kept): cheap
# for huge repos, correct after a manual delete. Run from the local dir (manifest paths relative).
build_download_list() {
    local needed=.hfd/needed size path dir cur
    if [[ ! -s .hfd/manifest ]]; then NEED_COUNT=0; : &amp;gt; &quot;$fileslist_file&quot;; return; fi
    awk -F&apos;\t&apos; &apos;
        FNR==NR { want[$2]=$1; ord[++n]=$2; next }
        { p=$2; sub(/^\.\//,&quot;&quot;,p);
          if (p ~ /\.aria2$/) { sub(/\.aria2$/,&quot;&quot;,p); part[p]=1 } else have[p]=$1 }
        END { for (i=1;i&amp;lt;=n;i++) { q=ord[i];
                if ((q in have) &amp;amp;&amp;amp; have[q]==want[q] &amp;amp;&amp;amp; !(q in part)) continue;
                print want[q] &quot;\t&quot; q } }
    &apos; .hfd/manifest &amp;lt;(find . -type f ! -path &apos;./.hfd/*&apos; -printf &apos;%s\t%p\n&apos; 2&amp;gt;/dev/null) &amp;gt; &quot;$needed&quot;
    NEED_COUNT=$(wc -l &amp;lt; &quot;$needed&quot;)
    # Per needed file: drop a wrong-size copy -c/--continue can&apos;t fix in place (aria2c with no
    # .aria2 control file, or a wget file larger than expected) for a fresh refetch; emit the record.
    while IFS=$&apos;\t&apos; read -r size path; do
        [[ -z &quot;$path&quot; ]] &amp;amp;&amp;amp; continue
        if [[ &quot;$TOOL&quot; == &quot;aria2c&quot; ]]; then
            [[ -e &quot;$path&quot; &amp;amp;&amp;amp; ! -e &quot;$path.aria2&quot; ]] &amp;amp;&amp;amp; rm -f &quot;$path&quot;
            dir=&quot;${path%/*}&quot;; [[ &quot;$dir&quot; == &quot;$path&quot; ]] &amp;amp;&amp;amp; dir=&quot;&quot;
            printf &apos;%s/%s/resolve/%s/%s\n dir=%s\n out=%s\n&apos; &quot;$HF_ENDPOINT&quot; &quot;$DOWNLOAD_API_PATH&quot; &quot;$REVISION&quot; &quot;$path&quot; &quot;$dir&quot; &quot;${path##*/}&quot;
            [[ -n &quot;$HF_TOKEN&quot; ]] &amp;amp;&amp;amp; printf &apos; header=Authorization: Bearer %s\n&apos; &quot;$HF_TOKEN&quot;
            printf &apos;\n&apos;
        else
            cur=$(stat -c%s &quot;$path&quot; 2&amp;gt;/dev/null || echo 0); (( cur &amp;gt; size )) &amp;amp;&amp;amp; rm -f &quot;$path&quot;
            printf &apos;%s/%s/resolve/%s/%s\n&apos; &quot;$HF_ENDPOINT&quot; &quot;$DOWNLOAD_API_PATH&quot; &quot;$REVISION&quot; &quot;$path&quot;
        fi
    done &amp;lt; &quot;$needed&quot; &amp;gt; &quot;$fileslist_file&quot;
    rm -f &quot;$needed&quot;
}

if should_regenerate_filelist; then
    command -v jq &amp;amp;&amp;gt;/dev/null || printf &quot;%b[Warning] jq not installed, using grep/awk for json parsing (slower). Consider installing jq.%b\n&quot; &quot;$YELLOW&quot; &quot;$NC&quot;

    # Total size up front (before the long walk); label the call so its few-second wait isn&apos;t silent.
    printf &quot;%bFetching repository info...%b&quot; &quot;$DIM&quot; &quot;$NC&quot;
    REPO_SIZE=$(fetch_treesize); printf &apos;\r\033[K&apos;
    [[ &quot;$REPO_SIZE&quot; =~ ^[0-9]+$ ]] &amp;amp;&amp;amp; printf &quot;%bRepository size: %s%b\n&quot; &quot;$DIM&quot; &quot;$(human &quot;$REPO_SIZE&quot;)&quot; &quot;$NC&quot;
    INCLUDE_REGEX=$(patterns_to_regex &quot;${INCLUDE_PATTERNS[@]}&quot;)
    EXCLUDE_REGEX=$(patterns_to_regex &quot;${EXCLUDE_PATTERNS[@]}&quot;)
    printf &quot;%bListing files...%b&quot; &quot;$DIM&quot; &quot;$NC&quot;
    # Fast path: typical repos return their whole file list in the metadata; only big repos
    # (truncated siblings) need the paginated, resumable tree walk.
    if siblings_complete; then
        rm -f &quot;$LOCAL_DIR/.hfd/list_state&quot;
        emit_siblings | filter_size_path &amp;gt; &quot;$LOCAL_DIR/.hfd/manifest.partial&quot;
        gen_status=${PIPESTATUS[0]}
    else
        walk_tree; gen_status=$?
    fi
    # A failed walk keeps its checkpoint (list_state + manifest.partial), so a re-run resumes.
    (( gen_status == 0 )) || { printf &quot;\n%b[Error] Failed to list repository files. Re-run to resume.%b\n&quot; &quot;$RED&quot; &quot;$NC&quot; &amp;gt;&amp;amp;2; exit 1; }
    finalize_filelist
    read -r TOTAL_FILES SUM_SIZE &amp;lt; &quot;$LOCAL_DIR/.hfd/filelist_stats&quot;
    printf &apos;\r\033[K%bListed %d files (%s)%b\n&apos; &quot;$DIM&quot; &quot;$TOTAL_FILES&quot; &quot;$(human &quot;$SUM_SIZE&quot;)&quot; &quot;$NC&quot;
    # Whole-revision total from treesize; the summed filtered size when include/exclude narrows it.
    TOTAL_SIZE=$REPO_SIZE
    [[ -n &quot;$INCLUDE_REGEX$EXCLUDE_REGEX&quot; || ! &quot;$REPO_SIZE&quot; =~ ^[0-9]+$ ]] &amp;amp;&amp;amp; TOTAL_SIZE=$SUM_SIZE
    printf &apos;%s %s\n&apos; &quot;$TOTAL_FILES&quot; &quot;$TOTAL_SIZE&quot; &amp;gt; &quot;$LOCAL_DIR/.hfd/repo_info&quot;
    # Fingerprint written last: marks the list complete (an interrupted walk has none, so it re-lists).
    generate_command_string &amp;gt; &quot;$LOCAL_DIR/.hfd/last_download_command&quot;
    rm -f &quot;$LOCAL_DIR/.hfd/manifest.partial&quot; &quot;$LOCAL_DIR/.hfd/list_state&quot; &quot;$LOCAL_DIR/.hfd/tree_page.json&quot;
fi

cd &quot;$LOCAL_DIR&quot; || exit 1

# Render one in-place status line; speed = byte delta since last call (PREV_B/PREV_T).
# Fields are fixed-width so columns don&apos;t jitter as values grow a digit; ETA is last.
PREV_B=0; PREV_T=0
render_progress() {
    local now=$1 dfiles=$2 dt sp pct eta e
    dt=$(( SECONDS - PREV_T )); ((dt&amp;lt;1)) &amp;amp;&amp;amp; dt=1
    sp=$(( (now - PREV_B) / dt )); ((sp&amp;lt;0)) &amp;amp;&amp;amp; sp=0; PREV_B=$now; PREV_T=$SECONDS
    pct=0; ((TOTAL_SIZE&amp;gt;0)) &amp;amp;&amp;amp; pct=$(( now * 100 / TOTAL_SIZE )); ((pct&amp;gt;100)) &amp;amp;&amp;amp; pct=100
    # ETA only once speed is meaningful; clamp absurd early estimates to keep it tidy.
    eta=&quot;--:--&quot;; ((sp&amp;gt;0 &amp;amp;&amp;amp; TOTAL_SIZE&amp;gt;now)) &amp;amp;&amp;amp; { e=$(( (TOTAL_SIZE-now)/sp )); ((e&amp;lt;360000)) &amp;amp;&amp;amp; eta=$(printf &apos;%02d:%02d&apos; $((e/60)) $((e%60))); }
    printf &apos;\r\033[K%b[%3d%%]%b %*d/%d files | %9s/%9s | %9s/s | ETA %s&apos; \
        &quot;$GREEN&quot; &quot;$pct&quot; &quot;$NC&quot; &quot;${#TOTAL_FILES}&quot; &quot;$dfiles&quot; &quot;$TOTAL_FILES&quot; \
        &quot;$(human &quot;$now&quot;)&quot; &quot;$(human &quot;$TOTAL_SIZE&quot;)&quot; &quot;$(human &quot;$sp&quot;)&quot; &quot;$eta&quot;
}

# Progress without scanning finished files: manifest totals + a stat of only in-flight files.
monitor_progress() {
    local interval=$1 base=$1 stop_hint=&quot;Stopping download, please wait...&quot;; PREV_T=$SECONDS
    # The main INT trap is deferred until the foreground download returns, so acknowledge
    # Ctrl+C here (fires at once in the subshell) and note the force-stop that already works.
    [[ &quot;$TOOL&quot; == &quot;aria2c&quot; ]] &amp;amp;&amp;amp; stop_hint=&quot;Stopping download, please wait... (press Ctrl+C again to force stop)&quot;
    trap &apos;printf &quot;\n%b%s%b\n&quot; &quot;$YELLOW&quot; &quot;$stop_hint&quot; &quot;$NC&quot;; exit 0&apos; INT
    if [[ &quot;$TOOL&quot; == &quot;wget&quot; ]]; then
        # wget downloads in manifest order, so a forward cursor needs to stat only the
        # current file; everything before it is done and counted by its known size.
        local -a MS MP; local s p
        while IFS=$&apos;\t&apos; read -r s p; do MS+=(&quot;$s&quot;); MP+=(&quot;$p&quot;); done &amp;lt; .hfd/manifest
        local idx=0 done_b=0 cur
        while :; do
            sleep &quot;$interval&quot;
            while (( idx &amp;lt; ${#MP[@]} )); do
                cur=$(stat -c%s &quot;${MP[idx]}&quot; 2&amp;gt;/dev/null) || break
                (( cur &amp;gt;= MS[idx] )) || break
                done_b=$(( done_b + MS[idx] )); idx=$((idx+1))
            done
            cur=0; (( idx &amp;lt; ${#MP[@]} )) &amp;amp;&amp;amp; cur=$(stat -c%s &quot;${MP[idx]}&quot; 2&amp;gt;/dev/null || echo 0)
            render_progress $(( done_b + cur )) &quot;$idx&quot;
        done
    else
        # Parallel downloads finish out of order, so a cursor would miss files completing between
        # ticks. Each tick sums block usage (sparse-aware) of the manifest&apos;s files only — ignoring
        # stale files left from an earlier version of the repo — minus in-progress (.aria2) ones.
        local now files t0 walk
        while :; do
            sleep &quot;$interval&quot;
            t0=$SECONDS
            read -r now files &amp;lt; &amp;lt;(awk -F&apos;\t&apos; &apos;
                FNR==NR { want[$2]=1; next }
                { p=$2; sub(/^\.\//,&quot;&quot;,p)
                  if (p ~ /\.aria2$/) { sub(/\.aria2$/,&quot;&quot;,p); if (p in want) a++; next }
                  if (p in want) { b+=$1; d++ } }
                END { print b*512, d-a }
            &apos; .hfd/manifest &amp;lt;(find . -type f ! -path &apos;./.hfd/*&apos; -printf &apos;%b\t%p\n&apos; 2&amp;gt;/dev/null))
            render_progress &quot;$now&quot; &quot;$files&quot;
            # Self-throttle: if the walk took longer than the base interval, sleep that long
            # next time so scanning stays under ~half the wall-clock at any repo size.
            walk=$(( SECONDS - t0 )); interval=$base; (( walk &amp;gt; base )) &amp;amp;&amp;amp; interval=$walk
        done
    fi
}

# Totals were persisted at file-list generation; reload for resumed runs.
[[ -f .hfd/repo_info ]] &amp;amp;&amp;amp; read -r TOTAL_FILES TOTAL_SIZE &amp;lt; .hfd/repo_info
TOTAL_FILES=${TOTAL_FILES:-0}; TOTAL_SIZE=${TOTAL_SIZE:-0}
FILE_NOUN=&quot;files&quot;; ((TOTAL_FILES==1)) &amp;amp;&amp;amp; FILE_NOUN=&quot;file&quot;

# Diff the local tree against the manifest to find what&apos;s missing, then short-circuit if done.
((TOTAL_FILES&amp;gt;50000)) &amp;amp;&amp;amp; printf &quot;%bChecking local files...%b\n&quot; &quot;$DIM&quot; &quot;$NC&quot;
build_download_list
if (( NEED_COUNT == 0 )); then
    printf &quot;%bUp to date. %s %s in %s%b\n&quot; &quot;$GREEN&quot; &quot;$TOTAL_FILES&quot; &quot;$FILE_NOUN&quot; &quot;$LOCAL_DIR&quot; &quot;$NC&quot;
    exit 0
fi

# &quot;Resuming&quot; if any data is already on disk (completed files or a partial), else a fresh start.
verb=&quot;Downloading&quot;; [[ -n &quot;$(find . -type f ! -path &apos;./.hfd/*&apos; -print -quit 2&amp;gt;/dev/null)&quot; ]] &amp;amp;&amp;amp; verb=&quot;Resuming&quot;
printf &quot;%s %s %s to %s  ·  Ctrl+C to stop, re-run to resume\n&quot; &quot;$verb&quot; &quot;$TOTAL_FILES&quot; &quot;$FILE_NOUN&quot; &quot;$LOCAL_DIR&quot;

# Silence native per-file output (logged to .hfd/download.log) so the monitor owns one
# clean line. Refresh every 1s, backing off for huge repos where the walk gets expensive.
interval=1; ((TOTAL_FILES&amp;gt;50000)) &amp;amp;&amp;amp; interval=5
monitor_progress &quot;$interval&quot; &amp;amp;
MON_PID=$!
trap &apos;kill &quot;$MON_PID&quot; 2&amp;gt;/dev/null&apos; EXIT

if [[ &quot;$TOOL&quot; == &quot;aria2c&quot; ]]; then
    aria2c --quiet=true --log=.hfd/download.log --log-level=error --file-allocation=none \
        -x &quot;$THREADS&quot; -j &quot;$CONCURRENT&quot; -s &quot;$THREADS&quot; -k 1M -c -i &quot;$fileslist_file&quot; &amp;gt;/dev/null
    status=$?
else
    wget -x -nH --cut-dirs=&quot;$CUT_DIRS&quot; ${HF_TOKEN:+--header=&quot;Authorization: Bearer $HF_TOKEN&quot;} \
        --input-file=&quot;$fileslist_file&quot; --continue -nv -o .hfd/download.log
    status=$?
fi

# Clear the live progress line in place; the final status line takes its spot (no blank line).
kill &quot;$MON_PID&quot; 2&amp;gt;/dev/null; wait &quot;$MON_PID&quot; 2&amp;gt;/dev/null; printf &apos;\r\033[K&apos;

if [[ $status -eq 0 ]]; then
    printf &quot;%bDone. %s %s, %s in %s%b\n&quot; &quot;$GREEN&quot; &quot;$TOTAL_FILES&quot; &quot;$FILE_NOUN&quot; &quot;$(human &quot;$TOTAL_SIZE&quot;)&quot; &quot;$LOCAL_DIR&quot; &quot;$NC&quot;
else
    printf &quot;%bDownload incomplete. Re-run to resume. Log: %s%b\n&quot; &quot;$RED&quot; &quot;$PWD/.hfd/download.log&quot; &quot;$NC&quot;
    exit 1
fi
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;参考：https://hf-mirror.com/&lt;/p&gt;
</content:encoded></item><item><title>ASCII输出光标和颜色</title><link>https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/ascii%E6%8E%A7%E5%88%B6%E8%BE%93%E5%87%BA%E5%85%89%E6%A0%87%E5%92%8C%E9%A2%9C%E8%89%B2/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/ascii%E6%8E%A7%E5%88%B6%E8%BE%93%E5%87%BA%E5%85%89%E6%A0%87%E5%92%8C%E9%A2%9C%E8%89%B2/</guid><pubDate>Wed, 20 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;ASCII输出光标和颜色&lt;/h1&gt;
&lt;h2&gt;ASCII 控制字符 - &quot;\033&quot;&lt;/h2&gt;
&lt;p&gt;ASCII控制字符的编号范围是0-31和127（0x00-0x1F和0x7F），共33个字符。&lt;/p&gt;
&lt;p&gt;输出到控制台时，可以利用控制字符来控制输出文本的显示效果。&lt;/p&gt;
&lt;p&gt;控制字符可以用8进制或16进制表示，比如：&lt;code&gt;&quot;\033&quot;, &quot;\0x1b&quot;, &quot;\x1b&quot;&lt;/code&gt;均表示同一个控制字符，含义是ESC&lt;/p&gt;
&lt;p&gt;ESC后面跟一个格式字符串，用来设置颜色或控制光标&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;格式&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;含义&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;\033[0m&lt;/td&gt;
&lt;td&gt;关闭所有属性&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\033[1m&lt;/td&gt;
&lt;td&gt;设置高亮度&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\033[4m&lt;/td&gt;
&lt;td&gt;下划线&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\033[5m&lt;/td&gt;
&lt;td&gt;闪烁&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\033[7m&lt;/td&gt;
&lt;td&gt;反显&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\033[8m&lt;/td&gt;
&lt;td&gt;消隐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\033[30~37m&lt;/td&gt;
&lt;td&gt;设置前景色&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\033[40~47;m&lt;/td&gt;
&lt;td&gt;设置背景色&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\033[nA&lt;/td&gt;
&lt;td&gt;光标上移n行&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\033[nB&lt;/td&gt;
&lt;td&gt;光标下移n行&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\033[nC&lt;/td&gt;
&lt;td&gt;光标右移n行&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\033[nD&lt;/td&gt;
&lt;td&gt;光标左移n行&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\033[y;xH&lt;/td&gt;
&lt;td&gt;设置光标位置  printf(&quot;\033[%d;%dH&quot;,  (x), (y))&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\033[2J&lt;/td&gt;
&lt;td&gt;清屏&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\033[K&lt;/td&gt;
&lt;td&gt;清除从光标到行尾的内容&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\033[s&lt;/td&gt;
&lt;td&gt;保存光标位置&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\033[u&lt;/td&gt;
&lt;td&gt;恢复光标位置&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\033[?25l&lt;/td&gt;
&lt;td&gt;隐藏光标&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\033[?25h&lt;/td&gt;
&lt;td&gt;显示光标&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;显示光标&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;前景色和背景色对应的数字&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;颜色&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;背景色&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;背景色加亮&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;前景色&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;前景色加亮&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;黑&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;90&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;红&lt;/td&gt;
&lt;td&gt;41&lt;/td&gt;
&lt;td&gt;101&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;91&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;绿&lt;/td&gt;
&lt;td&gt;42&lt;/td&gt;
&lt;td&gt;102&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;92&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;黄&lt;/td&gt;
&lt;td&gt;43&lt;/td&gt;
&lt;td&gt;103&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;93&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;蓝&lt;/td&gt;
&lt;td&gt;44&lt;/td&gt;
&lt;td&gt;104&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;94&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;紫&lt;/td&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;td&gt;105&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;95&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;靛蓝&lt;/td&gt;
&lt;td&gt;46&lt;/td&gt;
&lt;td&gt;106&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;96&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;白&lt;/td&gt;
&lt;td&gt;47&lt;/td&gt;
&lt;td&gt;107&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;97&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;使用echo命令进行测试&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;可以使用echo命令对格式字符串进行测试&lt;/p&gt;
&lt;p&gt;例如:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo -e &quot;\033[41;36m 一段文字 \033[0m&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里先把控制台的背景色设置为红色（41），文字的颜色设置为靛蓝色（36），打印一段文字后，关闭了所有设置（还原到默认状态下）&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./ASCII%E6%8E%A7%E5%88%B6%E8%BE%93%E5%87%BA%E5%85%89%E6%A0%87%E5%92%8C%E9%A2%9C%E8%89%B2.assets/clip_image001.png&quot; alt=&quot;output&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;测试不同的前景色&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./ASCII%E6%8E%A7%E5%88%B6%E8%BE%93%E5%87%BA%E5%85%89%E6%A0%87%E5%92%8C%E9%A2%9C%E8%89%B2.assets/clip_image002.png&quot; alt=&quot;test-foregroud-color&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;C语言控制颜色和输出&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;unistd.h&amp;gt;
// 清除屏幕
#define CLEAR() printf(&quot;\033[2J&quot;)
// 上移光标
#define MOVEUP(x) printf(&quot;\033[%dA&quot;, (x))
// 下移光标
#define MOVEDOWN(x) printf(&quot;\033[%dB&quot;, (x))
// 左移光标
#define MOVELEFT(y) printf(&quot;\033[%dD&quot;, (y))
// 右移光标
#define MOVERIGHT(y) printf(&quot;\033[%dC&quot;,(y))
// 定位光标
#define MOVETO(x,y) printf(&quot;\033[%d;%dH&quot;, (x), (y))
// 光标复位
#define RESET_CURSOR() printf(&quot;\033[H&quot;)
// 隐藏光标
#define HIDE_CURSOR() printf(&quot;\033[?25l&quot;)
// 显示光标
#define SHOW_CURSOR() printf(&quot;\033[?25h&quot;)
//反显
#define HIGHT_LIGHT() printf(&quot;\033[7m&quot;)
#define UN_HIGHT_LIGHT() printf(&quot;\033[27m&quot;)
int main(int argc,char **argv)
{
    // 颜色
    printf(&quot;\033[31mThe color,%s!\033[1m\n&quot;,&quot;haha&quot;);
    printf(&quot;\033[31mThe color,%s!\033[4m\n&quot;,&quot;haha&quot;);
    printf(&quot;\033[31mThe color,%s!\033[5m\n&quot;,&quot;haha&quot;);
    printf(&quot;\033[31mThe color,%s!\033[7m\n&quot;,&quot;haha&quot;);
    printf(&quot;\033[31mThe color,%s!\033[8m\n&quot;,&quot;haha&quot;);
    printf(&quot;\033[31mThe color,%s!\033[0m\n&quot;,&quot;haha&quot;);
    printf(&quot;\033[47;31mThe color,%s!\033[0m\n&quot;,&quot;haha&quot;);
    printf(&quot;\033[47mThe color,%s!\033[0m\n&quot;,&quot;haha&quot;);
    // 光标
    sleep(2);
    printf(&quot;\033[47m%s!\033[5A\n&quot;,&quot;up 5&quot;);
    sleep(2);
    printf(&quot;\033[47m%s!\033[9B\n&quot;,&quot;down 9&quot;);
    sleep(2);
    printf(&quot;\033[47m%s!\033[19C\n&quot;,&quot;right 19&quot;);
    printf(&quot;right19&quot;);
    sleep(2);
    printf(&quot;\033[47m%s!\033[10D\n&quot;,&quot;left 10&quot;);
    printf(&quot;left 10&quot;);
    sleep(2);
    printf(&quot;\033[47m%s!\033[50;20H\n&quot;,&quot;move to y:50,x 20&quot;);
    printf(&quot;y50 x 20&quot;);
    sleep(2);
    printf(&quot;\033[47m%s!\033[?25l\n&quot;,&quot;hide cursor&quot;);
    sleep(2);
    printf(&quot;\033[47m%s!\033[?25h\n&quot;,&quot;sow cursor&quot;);
    sleep(2);
    printf(&quot;\033[47m%s!\033[2J\n&quot;,&quot;clear scleen&quot;);
    sleep(2);

    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】https://www.cnblogs.com/sunhaixian/p/16528087.html&lt;/p&gt;
&lt;p&gt;【2】https://blog.csdn.net/kevinshq/article/details/8179252&lt;/p&gt;
</content:encoded></item><item><title>安装基础地震常用软件脚本</title><link>https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/%E5%BF%AB%E9%80%9Fubuntu%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/%E5%BF%AB%E9%80%9Fubuntu%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85/</guid><pubDate>Mon, 18 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;安装基础地震常用软件脚本&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;sudo apt update
sudo apt upgrade
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm ~/miniconda3/miniconda.sh
source ~/miniconda3/bin/activate
conda init --all
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --set show_channel_urls yes
pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install numpy scipy pandas matplotlib seaborn
pip install numpy pandas matplotlib
pip install scipy
pip install tqdm
pip install jupyter
pip install matplotlib
pip install scons
sudo apt install python3 python-is-python3 python3-dev python-dev-is-python3 python3-pip python3-numpy libxaw7-dev freeglut3-dev libnetpbm10-dev libgd-dev libplplot-dev libcairo2-dev libjpeg-dev swig g++ gfortran libopenmpi-dev libfftw3-dev libsuitesparse-dev git
sudo apt update
sudo apt install -y build-essential gfortran  libx11-dev libxt-dev libxaw7-dev     xorg-dev libmotif-dev libxmu-dev libxext-dev libpng-dev libjpeg-dev libgif-dev     libtiff-dev libfftw3-dev libblas-dev liblapack-dev ghostscript gv
sudo apt install x11-apps
sudo apt install libtirpc-dev
sudo apt-get install imagemagick
&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;安装seismic Unix&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;cd ~/Software/seismic_unix
tar -xvf cwp_su_all_44R28.tgz
echo &apos;# Seismic Unix
export CWPROOT=~/Software/seismic_unix
export PATH=$PATH:$CWPROOT/bin&apos; &amp;gt;&amp;gt; ~/.bashrc
~/.bashrc
cp ~/Software/seismic_unix/Makefile.config ~/Software/seismic_unix/src/Makefile.config
cd ~/Software/seismic_unix/src
make install
make xtinstall
make finstall
make utils
make xminstall
make mglinstall
suplane |suximage
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;#=======================================================================
#                 Makefile.config for Gnu/Linux
#=======================================================================
#-----------------------------------------------------------------------
# pick up the Make rules (Gnu make required)
#-----------------------------------------------------------------------

include $(CWPROOT)/src/Rules/gnumake.rules
include $(CWPROOT)/src/Rules/abbrev.rules
include $(CWPROOT)/src/Rules/cflags.rules
include $(CWPROOT)/src/Rules/suffix.rules
include $(CWPROOT)/src/Rules/misc.rules
include $(CWPROOT)/src/Rules/opengl.rules

#-----------------------------------------------------------------------
#                      CWP feature options
#-----------------------------------------------------------------------
#
# LINEHDRFLAG=SU_LINEHEADER  - adds 3200 byte text &amp;amp; 400 byte SEG-Y
#                              style line headers to output. CWP/SU
#                              always reads either format unless SUXDR
#                              has been selected.
#
# XDRFLAG=-DSUXDR            - forces all SU data to be big endian
#                              independent of processor architecture
#
# LARGE_FILE_FLAG            - controls access to files &amp;gt; 2 GB on
#                              some systems.
#
# -DSLTSU_SEGY_H             - if defined selects SLT/SU trace header
#                              layout so both packages are compatible
#-----------------------------------------------------------------------

LINEHDRFLAG =

# if the include files  are under  /usr/include/rpc use this for XDR
# whether or not you had to install libtrpc.a
# make sure
XDRFLAG =  -DSUXDR
XDRLFLAGS =
XDRIFLAGS =

# else if you had to install libtirpc and the rpc include files are under
# /usr/include/tirpc/rpc or if you get an error about &amp;lt;types.h&amp;gt; not found,
#  and you want to use XDR, then make sure the next three lines are uncommented
XDRFLAG = -DSUXDR -DSUTIRPC
XDRIFLAGS = -I/usr/include/tirpc/rpc -I/usr/include/tirpc
XDRLFLAGS = -ltirpc

# else if you do not want to use XDR, uncomment the next three lines
#XDRFLAG =
#XDRLFLAGS =
#XDRIFLAGS =


# Most systems are LITTLE_ENDIAN these days
ENDIANFLAG = -DCWP_LITTLE_ENDIAN
LARGE_FILE_FLAG = -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE

CWP_FLAGS = $(LARGE_FILE_FLAG) $(ENDIANFLAG) $(XDRFLAG) $(XDRIFLAGS) $(LINEHDRFLAG)

#-----------------------------------------------------------------------
# system stuff
#-----------------------------------------------------------------------

SHELL = /bin/sh
ROOT = $(CWPROOT)

LN = ln # this needs to be changed to cp for FAT32 filesystems
AR = ar
ARFLAGS = rv
RANLIB = ranlib
RANFLAGS =
ICHMODLINE = chmod 644 $@
MCHMODLINE = chmod 755 $@

POSTLFLAGS = $(XDRLFLAGS)

#-----------------------------------------------------------------------
# use both X11 path conventions
#-----------------------------------------------------------------------

IX11 = /usr/X11/include
LX11 = /usr/X11/lib
IMOTIF = /usr/X11R6/include
LMOTIF = /usr/X11R6/lib

LD_LIBRARY_PATH += $(CWPROOT)/lib:${LX11}:${LMOTIF}

#-----------------------------------------------------------------------
# Sun/Oracle compilers  comment out the Gnu compiler section to use
#-----------------------------------------------------------------------

CPP = cpp

CC = cc
#OPTC = -g -Xc  -xc99
OPTC = -O -Xc  -xc99
#CFLAGS = -I$I $(OPTC) $(CWP_FLAGS) -D_BSD_SOURCE -D_POSIX_SOURCE
CFLAGS = -I$I $(OPTC) $(CWP_FLAGS) -D_DEFAULT_SOURCE -D_POSIX_SOURCE

FC = f90 -f77
OPTF = -g
FFLAGS =

C++FLAGS = -I$I $(OPTC) $(CWP_FLAGS)

#-----------------------------------------------------------------------
# Gnu compilers by default just because they are the most common
#-----------------------------------------------------------------------

CPP = cpp

#CC = clang
CC = gcc
#OPTC = -g  -std=c99 -Wall -pedantic -Wno-long-long
OPTC = -O  -std=c99 -Wall -pedantic -Wno-long-long
#CFLAGS = -I$I $(OPTC) $(CWP_FLAGS) -D_BSD_SOURCE -D_POSIX_SOURCE
CFLAGS = -I$I $(OPTC) $(CWP_FLAGS) -D_DEFAULT_SOURCE -D_POSIX_SOURCE

FC = gfortran
FOPTS = -g
FFLAGS = $(FOPTS) -ffixed-line-length-none

C++FLAGS = -I$I $(OPTC) $(CWP_FLAGS)

&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;安装Madagascar&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;sudo apt install unzip
sudo apt install -y libavcodec-dev
cd ~/Software/madagascar
unzip src-master.zip
cd src-master
./configure --prefix=~/Software/madagascar/src-master API=c++,fortran-90
scons
make
make install
echo  &apos;# madagascar
source ~/Software/madagascar/src-master/env.sh&apos; &amp;gt;&amp;gt;~/.bashrc
~/.bashrc
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>WSL换安装位置</title><link>https://tuoyuangui.github.io/website/posts/typora/windows%E7%B3%BB%E7%BB%9F/wsl%E6%8D%A2%E4%BD%8D%E7%BD%AE/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/windows%E7%B3%BB%E7%BB%9F/wsl%E6%8D%A2%E4%BD%8D%E7%BD%AE/</guid><pubDate>Wed, 09 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;WSL换安装位置&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;1.查看已安装的linux发行版本&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wsl -l --all -v
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2. 导出分发版为tar文件到d盘&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wsl --export Ubuntu-22.04 e:\WSL\wsl-ubuntu22.04.tar
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;3. 注销当前分发版&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wsl --unregister Ubuntu-22.04
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;4. 重新导入并安装WSL在D盘&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wsl --import Ubuntu-22.04 e:\WSL\wsl-ubuntu22.04 e:\WSL\wsl-ubuntu22.04.tar --version 2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;5. 设置默认登陆用户为安装时用户名&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ubuntu2204 config --default-user liguolong
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;6. 删除wsl-ubuntu20.04.tar&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;del d:\wsl-ubuntu20.04.tar
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;换源&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 查看你的 Ubuntu 版本代号
UBUNTU_CODENAME=$(lsb_release -sc)
echo &quot;你的 Ubuntu 版本代号是: $UBUNTU_CODENAME&quot;

# 设置为阿里云源（最稳定）
# 源码仓库（可选）
sudo tee /etc/apt/sources.list &amp;lt;&amp;lt; EOF
deb https://mirrors.aliyun.com/ubuntu/ $UBUNTU_CODENAME main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ $UBUNTU_CODENAME-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ $UBUNTU_CODENAME-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ $UBUNTU_CODENAME-backports main restricted universe multiverse

deb-src https://mirrors.aliyun.com/ubuntu/ $UBUNTU_CODENAME main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ $UBUNTU_CODENAME-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ $UBUNTU_CODENAME-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ $UBUNTU_CODENAME-backports main restricted universe multiverse
EOF
# 图像
sudo apt install gimp -y
# 管理夹
sudo apt install nautilus -y
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;安装桌面&lt;/h2&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】https://blog.csdn.net/w851685279/article/details/108904106&lt;/p&gt;
</content:encoded></item><item><title>导出依赖包</title><link>https://tuoyuangui.github.io/website/posts/typora/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/%E5%AF%BC%E5%87%BA%E4%BE%9D%E8%B5%96%E5%8C%85/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/%E5%AF%BC%E5%87%BA%E4%BE%9D%E8%B5%96%E5%8C%85/</guid><pubDate>Sun, 11 May 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;导出依赖包&lt;/h1&gt;
&lt;h2&gt;1、导出虚拟环境中的包&lt;/h2&gt;
&lt;p&gt;导出pip已经安装的所有包&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ pip freeze &amp;gt; requirements.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;上面这种方式只适合在&lt;a href=&quot;https://so.csdn.net/so/search?q=%E8%99%9A%E6%8B%9F%E7%8E%AF%E5%A2%83&amp;amp;spm=1001.2101.3001.7020&quot;&gt;虚拟环境&lt;/a&gt;中导出虚拟环境中的包，如果不是在虚拟环境下就会导出全局环境的python的环境包&lt;/p&gt;
&lt;h2&gt;2、导出项目依赖的包&lt;/h2&gt;
&lt;p&gt;当我们只想导出我们创建的项目的依赖包，而我们的项目又不在虚拟环境中，这样就会导出多余的包，&lt;/p&gt;
&lt;p&gt;要想在全局环境中导出我们项目的依赖包，可以利用python包&lt;code&gt;pipreqs&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ pip install pipreqs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;进入到项目所在目录，在执行下面的命令&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ pipreqs . --encoding=utf8 --force
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;# “.” 指的是将导出依赖包的文件放在当前目录下&lt;/p&gt;
&lt;p&gt;# “--encoding=utf8” 指的是存放文件的编码为utf-8,否则会报错&lt;/p&gt;
&lt;p&gt;# “--force” --force 强制执行，当 生成目录下的requirements.txt存在时强制覆盖&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>CPU高精度计时</title><link>https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/cpu%E9%AB%98%E7%B2%BE%E5%BA%A6%E8%AE%A1%E6%97%B6/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/cpu%E9%AB%98%E7%B2%BE%E5%BA%A6%E8%AE%A1%E6%97%B6/</guid><pubDate>Thu, 16 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;CPU高精度计时&lt;/h1&gt;
&lt;p&gt;为了在C语言中进行准确计时，可以使用&lt;code&gt;clock()&lt;/code&gt;函数，它是C标准库的一部分。&lt;code&gt;clock()&lt;/code&gt;函数返回程序开始执行到调用&lt;code&gt;clock()&lt;/code&gt;函数时处理器时钟的滴答数。每个时钟滴答的持续时间可以通过&lt;code&gt;CLOCKS_PER_SEC&lt;/code&gt;宏来确定，它定义了一秒钟内的时钟滴答数。&lt;/p&gt;
&lt;p&gt;以下是一个使用&lt;code&gt;clock()&lt;/code&gt;函数进行计时的示例：&lt;/p&gt;
&lt;p&gt;复制&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;time.h&amp;gt;

int main() {
    clock_t start, end;
    double cpu_time_used;

    start = clock(); // 开始计时

    // 执行一些操作
    for (long i = 0; i &amp;lt; 1000000; ++i) {
        // 这里是一些你想要计时的代码
    }

    end = clock(); // 结束计时

    cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC; // 计算使用的CPU时间

    printf(&quot;使用的CPU时间: %f 秒\n&quot;, cpu_time_used);

    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个例子中，&lt;code&gt;clock()&lt;/code&gt;函数在执行一些操作前后被调用，用来计算这段代码执行所花费的时间。&lt;code&gt;cpu_time_used&lt;/code&gt;变量包含了以秒为单位的CPU时间。&lt;/p&gt;
&lt;p&gt;如果你需要更高精度的计时，可以使用POSIX标准中的&lt;code&gt;gettimeofday()&lt;/code&gt;函数，它在&lt;code&gt;sys/time.h&lt;/code&gt;头文件中定义：&lt;/p&gt;
&lt;p&gt;复制&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;sys/time.h&amp;gt;

int main() {
    struct timeval start, end;
    long mtime, seconds, useconds;

    gettimeofday(&amp;amp;start, NULL); // 开始计时

    // 执行一些操作
    for (long i = 0; i &amp;lt; 1000000; ++i) {
        // 这里是一些你想要计时的代码
    }

    gettimeofday(&amp;amp;end, NULL); // 结束计时

    seconds  = end.tv_sec  - start.tv_sec;
    useconds = end.tv_usec - start.tv_usec;

    mtime = ((seconds) * 1000 + useconds/1000.0) + 0.5;

    printf(&quot;使用的CPU时间: %ld 毫秒\n&quot;, mtime);

    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在这个例子中，&lt;code&gt;gettimeofday()&lt;/code&gt;函数提供了微秒级的精度，可以用于更精确的计时需求。&lt;code&gt;mtime&lt;/code&gt;变量包含了以毫秒为单位的执行时间。&lt;/p&gt;
</content:encoded></item><item><title>异构计算加速框架-叠前数据处理</title><link>https://tuoyuangui.github.io/website/posts/typora/dcu%E5%92%8C%E9%9B%86%E7%BE%A4/%E5%BC%82%E6%9E%84%E8%AE%A1%E7%AE%97%E5%8A%A0%E9%80%9F%E6%A1%86%E6%9E%B6/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/dcu%E5%92%8C%E9%9B%86%E7%BE%A4/%E5%BC%82%E6%9E%84%E8%AE%A1%E7%AE%97%E5%8A%A0%E9%80%9F%E6%A1%86%E6%9E%B6/</guid><pubDate>Wed, 25 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;异构计算加速框架-叠前数据处理&lt;/h1&gt;
&lt;p&gt;​		异构计算是指采用不同类型的指令集和体系架构的计算单元组成系统的计算方式。相比传统CPU，异构计算可以实现更高的效率和更低的延迟。目前的异构计算引擎主要有图形处理器（GPU，Graphics Processing Unit）、现场可编程门阵列（FPGA，Field Programming Gate Array）、专用集成电路（ASIC）等。&lt;/p&gt;
&lt;p&gt;​		CPU-GPU协同是实现高性能计算的必要条件，称为&lt;strong&gt;CPU-GPU异构计算&lt;/strong&gt;（HC，Heterogeneous Computing）。它通过将应用程序的计算密集型部分卸载到GPU来提供更高的性能，而其余代码仍然在CPU上运行，能智能地结合CPU和GPU的最佳特性以实现高计算增益，旨在将每个应用程序的需求与CPU/GPU架构的优势相匹配，并避免两个处理单元的空闲时间。&lt;/p&gt;
&lt;h2&gt;1、 GPGPU&lt;/h2&gt;
&lt;p&gt;​		通用图形处理器（GPGPU，General Purpose Graphics Processing Unit）最早由NVIDIA公司的Mark J. Harris于2002年提出。基于图形渲染管线的流水线特征，GPU本质上是一个可同时处理多个计算任务的硬件加速器。由于GPU中包含了大量的计算资源，Mark J. Harris自2002年就开始尝试在GPU上做通用并行计算方面的研究。在此阶段，由于架构及编程平台的限制，研究人员采用将目标计算算法转换为图形运算算法的方式，使用GPU来实现通用并行计算需求。&lt;/p&gt;
&lt;p&gt;​		&lt;strong&gt;NVIDIA -&amp;gt; CUDA（Compute Unified Device Architecture，计算统一设备架构）编程模型&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;​		&lt;strong&gt;AMD -&amp;gt; RCOm (Radeon Open Compute, 开源软件栈, 软件平台，运行环境) 编程模型使用的是HIP或者OpenCL&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E5%BC%82%E6%9E%84%E8%AE%A1%E7%AE%97%E5%8A%A0%E9%80%9F%E6%A1%86%E6%9E%B6.assets/image-20240528090022143.png&quot; alt=&quot;image-20240528090022143&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;2、NVIDIA CUDA 生态&lt;/h2&gt;
&lt;p&gt;​		CUDA是由NVIDIA公司推行的一套并行编程框架，目前只有NVIDIA的GPU支持该框架，其开发语言主要为CUDA C。作为一种GPU的并行开发语言，CUDA的API涉及设备管理、存储管理、数据传输、线程管理、事件管理等功能。CUDA的存储模型主要分为全局存储（global memory）、局部存储（local memory）、共享存储（shared memory）、常量存储（constant memory）和纹理存储（texture memory）等存储类型。不同的存储类型，其存储容量、可见程度、读写速度差异巨大，需要在程序设计中根据各自特点和应用问题的需求合理调配。&lt;/p&gt;
&lt;p&gt;CUDA的编程模型和执行模型按照层次结构分层设计。CUDA的执行模型由3个层级组成，最基础的执行单位是线程（thread），多个线程组成一个线程块（block），多个线程块形成线程网格（grid）。CUDA编程模型作为一个异构模型，其中使用了CPU和GPU。在CUDA中，主机（host）指的是CPU及其存储器，设备（device）是指GPU及其存储器。在主机上运行的代码可以管理主机和设备上的内存，还可以启动在设备上执行的内核函数（kernel）。这些内核由许多GPU线程并行执行。&lt;/p&gt;
&lt;h3&gt;2.1  NVCC编译&lt;/h3&gt;
&lt;p&gt;​		CUDA应用程序的源代码由传统的C++主机代码和GPU设备函数混合组成。CUDA编译过程将设备函数与主机代码分开，使用专有的NVIDIA编译器和汇编器编译设备函数，使用可用的C++主机编译器编译主机代码，之后将编译过的GPU函数嵌入到主机对象（object）文件。在链接阶段，向最终生成的可运行二进制文件添加特定的CUDA运行时库函数，如支持远程SPMD过程调用的运行时库函数、显式GPU操作的运行时库函数（如分配GPU内存缓冲区，主机与设备之间的数据传输等）。&lt;/p&gt;
&lt;p&gt;​		编译过程涉及每个CUDA源文件的拆分、编译、预处理和合并步骤。为了将上述复杂的编译过程向开发人员隐藏，NVIDIA公司设计了CUDA编译器引擎程序nvcc。nvcc接受一系列常规编译器选项，例如宏定义和头文件、函数库路径设置，支持编译过程的组合。所有非CUDA编译步骤都被转发到nvcc支持的主机C++编译器，编译选项到主机C++编译选项的转换也由nvcc自动完成。&lt;/p&gt;
&lt;h3&gt;2.2 基本参数&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;./%E5%BC%82%E6%9E%84%E8%AE%A1%E7%AE%97%E5%8A%A0%E9%80%9F%E6%A1%86%E6%9E%B6.assets/image-20240528091238914.png&quot; alt=&quot;image-20240528091238914&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E5%BC%82%E6%9E%84%E8%AE%A1%E7%AE%97%E5%8A%A0%E9%80%9F%E6%A1%86%E6%9E%B6.assets/image-20240528091002866.png&quot; alt=&quot;image-20240528091002866&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E5%BC%82%E6%9E%84%E8%AE%A1%E7%AE%97%E5%8A%A0%E9%80%9F%E6%A1%86%E6%9E%B6.assets/image-20240528091317536.png&quot; alt=&quot;image-20240528091317536&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E5%BC%82%E6%9E%84%E8%AE%A1%E7%AE%97%E5%8A%A0%E9%80%9F%E6%A1%86%E6%9E%B6.assets/image-20240528091326572.png&quot; alt=&quot;image-20240528091326572&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E5%BC%82%E6%9E%84%E8%AE%A1%E7%AE%97%E5%8A%A0%E9%80%9F%E6%A1%86%E6%9E%B6.assets/image-20240528091343246.png&quot; alt=&quot;image-20240528091343246&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;2.3、数学库&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;cuBLAS：cuBLAS库提供了基本线性代数子程序（BLAS，Basic Linear Algebra Subprograms）的GPU加速实现。cuBLAS利用针对NVIDIA GPU高度优化的行业标准BLAS API加速AI和HPC应用。cuBLAS库包含用于分批操作、跨多个GPU执行以及混合和低精度执行的扩展。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;cuTENSOR：cuTENSOR库是第一个由GPU加速的张量线性代数库，提供张量收缩、还原和元素运算。cuTENSOR用于加速深度学习训练和推理、计算机视觉、量子化学和计算物理等领域的应用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;cuSPARSE：cuSPARSE库为稀疏矩阵提供了GPU加速的基本线性代数子程序，其功能可用于建立GPU加速的求解器。cuSPARSE被从事机器学习、计算流体力学、地震勘探和计算科学等应用的工程师和科学家广泛使用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;cuSOLVER：cuSOLVER库提供了针对NVIDIA GPU高度优化的密集和稀疏因式分解、线性求解器和eigensolvers。cuSOLVER用于加速科学计算和数据科学等不同领域的应用，并拥有针对混合精度张量加速和跨多个GPU执行的扩展。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;cuFFT：cuFFT库提供了针对NVIDIA GPU高度优化的快速傅里叶变换（FFT，Fast Fourier Transform）实现。cuFFT被用于建立跨学科的商业和研究应用，如深度学习、计算机视觉、计算物理、分子动力学、量子化学以及地震和医学成像，并具有跨多个GPU执行的扩展。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;cuRAND：cuRAND库是一个随机数发生器的GPU设备端实现。&lt;/p&gt;
&lt;h2&gt;3、叠前数据加速策略&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;难点：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;数据量大；（I/O密集，CPU和GPGPU异步计算）&lt;/li&gt;
&lt;li&gt;计算量大；（计算密集，GPGPU+MPI协调加速）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;计算策略：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;数据并行：基于MPI算法将不同偏移距或者不同炮数据发到不同CPU；&lt;/li&gt;
&lt;li&gt;模型并行：将模型切分部署到GPU加速卡上，涉及多GPU之间的大量数据传输，通过RDMA或者NVLINK技术解决；&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;./%E5%BC%82%E6%9E%84%E8%AE%A1%E7%AE%97%E5%8A%A0%E9%80%9F%E6%A1%86%E6%9E%B6.assets/image-20240528092145931.png&quot; alt=&quot;image-20240528092145931&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;4、具体加速策略（FDTD + FWI）&lt;/h2&gt;
&lt;h3&gt;前提假设（小模型+集群+异构）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;每个卡能够放下偏移距限制下的小模型，满足反演偏移需要。&lt;/li&gt;
&lt;li&gt;集群之间通讯需要MPI通讯，GPGPU通过NVLINK或者RDMA计算显卡之间通讯。&lt;/li&gt;
&lt;li&gt;每个卡通过异步流实现分配的单炮运行。&lt;/li&gt;
&lt;li&gt;运行的结果通过 MPI_CAST 发送到其他节点。&lt;/li&gt;
&lt;li&gt;每个节点上采用N个线程，与GPGPU卡个数保持一致，其主要模型和反演结果放在MallocHost中，实现卡调度近似。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;总体控制架构&lt;/h3&gt;
&lt;p&gt;集群控制示意图：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E5%BC%82%E6%9E%84%E8%AE%A1%E7%AE%97%E5%8A%A0%E9%80%9F%E6%A1%86%E6%9E%B6.assets/image-20240530093151139.png&quot; alt=&quot;image-20240530093151139&quot; /&gt;&lt;/p&gt;
&lt;p&gt;具体展开示意图：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E5%BC%82%E6%9E%84%E8%AE%A1%E7%AE%97%E5%8A%A0%E9%80%9F%E6%A1%86%E6%9E%B6.assets/image-20240528100557190.png&quot; alt=&quot;image-20240528100557190&quot; /&gt;&lt;/p&gt;
&lt;p&gt;​		采用MPI进行调度，每个节点分配一个线程，每个线程分配N（N个卡）个CUDA流分别控制N炮，采用cuda流异步通讯的方式。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E5%BC%82%E6%9E%84%E8%AE%A1%E7%AE%97%E5%8A%A0%E9%80%9F%E6%A1%86%E6%9E%B6.assets/image-20240530093628932.png&quot; alt=&quot;image-20240530093628932&quot; /&gt;&lt;/p&gt;
&lt;p&gt;实际资料处理调度原理图&lt;/p&gt;
&lt;p&gt;​	&lt;strong&gt;优势：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;只在一个节点上开辟一个内存占用，有效提高内存使用效率；&lt;/li&gt;
&lt;li&gt;MPI通讯有助于在大型服务器上部署运行。&lt;/li&gt;
&lt;li&gt;异步传输和cudaMallocHost加速运行效率。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;参考&lt;/h3&gt;
&lt;p&gt;【1】 https://scc.ustc.edu.cn/zlsc/user_doc/html/gpu-computing/gpu-computing.html&lt;/p&gt;
&lt;p&gt;【2】 &lt;a href=&quot;https://github.com/yufengwa/cuQRTM&quot;&gt;yufengwa/cuQRTM: cuQRTM is a CUDA-based code package that implements Q-RTMs based on a set of stable and efficient strategies, such as streamed CUFFT, checkpointing-assisted time-reversal reconstruction (CATRC) and adaptive stabilization. (github.com)&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>查看系统硬件信息</title><link>https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/%E6%9F%A5%E7%9C%8B%E7%B3%BB%E7%BB%9F%E7%A1%AC%E4%BB%B6%E4%BF%A1%E6%81%AF/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/%E6%9F%A5%E7%9C%8B%E7%B3%BB%E7%BB%9F%E7%A1%AC%E4%BB%B6%E4%BF%A1%E6%81%AF/</guid><pubDate>Mon, 09 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;查看系统硬件信息&lt;/h1&gt;
&lt;h2&gt;1、查看物理cpu个数&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;cat /proc/cpuinfo |grep &quot;physical id&quot;|sort |uniq|wc -l
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;2、查看核心数量&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;grep &apos;core id&apos; /proc/cpuinfo | sort -u | wc -l
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;3、查看线程数&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;grep &apos;processor&apos; /proc/cpuinfo | sort -u | wc -l
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;4、查看cpu型号&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】https://developer.aliyun.com/article/563422&lt;/p&gt;
</content:encoded></item><item><title>WSL2 卸载安装</title><link>https://tuoyuangui.github.io/website/posts/typora/windows%E7%B3%BB%E7%BB%9F/wsl2%E5%8D%B8%E8%BD%BD%E5%AE%89%E8%A3%85/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/windows%E7%B3%BB%E7%BB%9F/wsl2%E5%8D%B8%E8%BD%BD%E5%AE%89%E8%A3%85/</guid><pubDate>Mon, 09 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;WSL2 卸载安装&lt;/h1&gt;
&lt;h2&gt;1、 安装&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;./WSL2%E5%8D%B8%E8%BD%BD%E5%AE%89%E8%A3%85.assets/image-20240918192056647.png&quot; alt=&quot;image-20240918192056647&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./WSL2%E5%8D%B8%E8%BD%BD%E5%AE%89%E8%A3%85.assets/image-20240918192159308.png&quot; alt=&quot;image-20240918192159308&quot; /&gt;&lt;/p&gt;
&lt;p&gt;启动&lt;code&gt;虚拟机平台&lt;/code&gt;和&lt;code&gt;linux windows&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;2、升级WSL内核和启用虚拟机功能&lt;/h2&gt;
&lt;p&gt;内核地址：https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi&lt;/p&gt;
&lt;p&gt;安装 WSL 2 之前，必须启用“虚拟机平台”可选功能。 计算机需要虚拟化功能才能使用此功能。
以管理员身份打开&lt;code&gt;PowerShell&lt;/code&gt;并运行：重启&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --set-default-version 2
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;3、导入备份&lt;/h2&gt;
&lt;h4&gt;改为默认用户权限&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;查看当前用户 &lt;code&gt;ls /home/&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;尝试切换至用户权限 &lt;code&gt;su 用户名&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;切换至&lt;a href=&quot;https://so.csdn.net/so/search?q=root%E6%9D%83%E9%99%90&amp;amp;spm=1001.2101.3001.7020&quot;&gt;root权限&lt;/a&gt; &lt;code&gt;sudo su&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;修改默认配置文件&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;备份 &lt;code&gt;cp /etc/wsl.conf /etc/wsl.conf.bk&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;修改 &lt;code&gt;vim /etc/wsl.conf&lt;/code&gt; 在最前面增加以下内容&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[user]
default=用户名
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;Reference&lt;/h1&gt;
&lt;p&gt;【1】&lt;a href=&quot;https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package&quot;&gt;旧版 WSL 的手动安装步骤 | Microsoft Learn&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Born modeling in Madagascar</title><link>https://tuoyuangui.github.io/website/posts/typora/madagascar/born%E6%A8%A1%E6%8B%9F/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/madagascar/born%E6%A8%A1%E6%8B%9F/</guid><pubDate>Thu, 28 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Born modeling in Madagascar&lt;/h1&gt;
&lt;h3&gt;1. 数据准备&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;from rsf.proj import *

# Prepare source and velocity
#############################

# Source wavelet
Flow(&apos;wavelet&apos;,None,
     &apos;&apos;&apos;
     spike n1=1500 d1=0.001 k1=201 |
     ricker1 frequency=10
     &apos;&apos;&apos;)
# Source spectra
Result(&apos;spectra&apos;,&apos;wavelet&apos;,
    &apos;&apos;&apos;
    spectra |window n1=50 |
    graph title=&quot;Source Spectra&quot;
    &apos;&apos;&apos;)

# Source location
Flow(&apos;source&apos;,None,
     &apos;&apos;&apos;
     spike n1=501 n2=501 d1=0.01 d2=0.01
     label1=x1 unit1=km label2=x2 unit2=km
     k1=201 k2=251
     &apos;&apos;&apos;)

# Background velocity
Flow(&apos;v0&apos;,&apos;source&apos;,&apos;math output=2.&apos;)

# Velocity perturbation
Flow(&apos;detv&apos;,None,
    &apos;&apos;&apos;
    spike n1=501 d1=0.01 o1=0 k1=300,301,302 mag=0.02 |
    spray axis=2 n=501 d=0.01 o=0 |
    costaper nw2=25
    &apos;&apos;&apos;)

# True velocity
Flow(&apos;vel&apos;,&apos;v0 detv&apos;,&apos;add ${SOURCES[1]}&apos;)
Result(&apos;vel&apos;,
    &apos;&apos;&apos;
    grey scalebar=y barreverse=y
    color=j bias=2.01 title=&quot;Velocity&quot;
    &apos;&apos;&apos;)

&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Slurm作业调度系统</title><link>https://tuoyuangui.github.io/website/posts/typora/dcu%E5%92%8C%E9%9B%86%E7%BE%A4/slurm/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/dcu%E5%92%8C%E9%9B%86%E7%BE%A4/slurm/</guid><pubDate>Sun, 24 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Slurm作业调度系统&lt;/h1&gt;
&lt;p&gt;​		Slurm(Simple Linux Utility for Resource Management，http://slurm.schedmd.com/)是 开源的、具有容错性和高度可扩展大型和小型Linux&lt;strong&gt;集群资源管理和作业调度系统&lt;/strong&gt;。超 级计算系统可利用Slurm进行资源和作业管理，以避免相互干扰，提高运行效率。所有 需运行的作业无论是用于程序调试还是业务计算均必须通过交互式并行srun、批处理 式sbatch或分配式salloc等命令提交，提交后可以利用相关命令查询作业状态等。&lt;/p&gt;
&lt;h2&gt;1、作业实例&lt;/h2&gt;
&lt;p&gt;​		在中科曙光云上运行 &lt;code&gt;sbatch test.slurm&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/bash
# filename:test.slurm
#SBATCH -p hebhdnormal    # 队列
#SBATCH -N 1              # 节点数
#SBATCH -n 32             # 总线程数
#SBATCH --gres=dcu:3      # 调用DCU 3个
#SBATCH -J test           # 作业名

# load the basic module
module purge
module load compiler/cmake/3.23.3  compiler/dtk/23.10 compiler/devtoolset/7.3.1  mpi/hpcx/2.7.4/gcc-7.3.1
module li

# the commands
mpirun -np 3 ./gpu2dafdshoti datapath=./ enter_y=y  vp=vel.rsf den=den.rsf wave=wavelet.rsf  npml=10 freesrf=y  fm=25 nbell=3 sou=sou.rsf rec=rec.rsf seis_p=shot.rsf  gpu_encoder=7 output=output.txt snapot=900 snapnt=1 snap_p=snap_p.rsf
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;1.1 三种模式&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;• 批处理作业（采用&lt;code&gt;sbatch&lt;/code&gt;命令提交，最常用方式）：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;​		对于批处理作业（提交后立即返回该命令行终端，用户可进行其它操作）使 用&lt;code&gt;sbatch&lt;/code&gt;命令提交作业脚本，作业被调度运行后，在所分配的首个节点上执行作 业脚本。在作业脚本中也可使用&lt;code&gt;srun&lt;/code&gt;命令加载作业任务。提交时采用的命令行终 端终止，也不影响作业运行。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;• 交互式作业提交（采用&lt;code&gt;srun&lt;/code&gt;命令提交）：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;​		资源分配与任务加载两步均通过&lt;code&gt;srun&lt;/code&gt;命令进行：当在登录&lt;code&gt;shell&lt;/code&gt;中执行&lt;code&gt;srun&lt;/code&gt;命令时， &lt;code&gt;srun&lt;/code&gt;首先向系统提交作业请求并等待资源分配，然后在所分配的节点上加载作业 任务。采用该模式，用户在该终端需等待任务结束才能继续其它操作，在作业结 束前，如果提交时的命令行终端断开，则任务终止。一般用于短时间小作业测试。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;• 实时分配模式作业（采用&lt;code&gt;salloc&lt;/code&gt;命令提交）：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;​	 分配作业模式类似于交互式作业模式和批处理作业模式的融合。用户需指定所需 要的资源条件，向资源管理器提出作业的资源分配请求。提交后，作业处于排队， 当用户请求资源被满足时，将在用户提交作业的节点上执行用户所指定的命令， 指定的命令执行结束后，运行结束，用户申请的资源被释放。在作业结束前，如 果提交时的命令行终端断开，则任务终止。典型用途是分配资源并启动一个&lt;code&gt;shell&lt;/code&gt;， 然后在这个shell中利用&lt;code&gt;srun&lt;/code&gt;运行并行作业。 &lt;code&gt;salloc&lt;/code&gt;后面如果没有跟定相应的脚本或可执行文件，则默认选择&lt;code&gt;/bin/sh，&lt;/code&gt;用户获得 了一个合适环境变量的shell环境。 &lt;code&gt;salloc&lt;/code&gt;和&lt;code&gt;sbatch&lt;/code&gt;最主要的区别是&lt;code&gt;salloc&lt;/code&gt;命令资源请求被满足时，直接在提交作业的 节点执行相应任务，而&lt;code&gt;sbatch&lt;/code&gt;则当资源请求被满足时，在分配的第一个节点上执 行相应任务。  &lt;code&gt;salloc&lt;/code&gt;在分配资源后，再执行相应的任务，很适合需要指定运行节点和其它资源 限制，并有特定命令的作业。&lt;/p&gt;
&lt;h3&gt;1.2 查看队列中的作业信息：&lt;code&gt;squeue&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;./Slurm.assets/image-20240527215629183.png&quot; alt=&quot;image-20240527215629183&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;JOBID&lt;/strong&gt;：作业号。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PARTITION&lt;/strong&gt;：队列名（分区名）。&lt;/li&gt;
&lt;li&gt;NAME：作业名。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;USER&lt;/strong&gt;：用户名。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ST&lt;/strong&gt;：状态。 – PD：排队中，PENDING。 – R：运行中，RUNNING。 – CA：已取消，CANCELLED。 – CF：配置中，CONFIGURING – CG：完成中，COMPLETING – CD：已完成，COMPLETED。 – F：已失败，FAILED。 – TO：超时，TIMEOUT。 – NF：节点失效，NODE FAILURE。 – SE：特殊退出状态，SPECIAL EXIT STATE。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TIME&lt;/strong&gt;：已运行时间。&lt;/li&gt;
&lt;li&gt;NODELIST(REASON)：分配给的节点名列表&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】&lt;a href=&quot;https://hmli.ustc.edu.cn/doc/userguide/slurm-userguide.pdf&quot;&gt;Slurm作业调度系统使用指南 (ustc.edu.cn)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;【2】&lt;a href=&quot;./Slurm.assets/slurm-userguide.pdf&quot;&gt;Slurm作业调度系统使用指南 (ustc.edu.cn)-&amp;gt;本地地址&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;【3】&lt;a href=&quot;https://ac.sugon.com/doc/1.0.6/11250/general-handbook/scheduler/sbatch.html&quot;&gt;提交批处理作业-sbatch(推荐) · 计算服务 (sugon.com)&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>创建一个Linux文件目录结构图</title><link>https://tuoyuangui.github.io/website/posts/typora/%E5%85%B6%E4%BB%96%E6%8A%80%E5%B7%A7/%E7%94%9F%E6%88%90%E6%96%87%E4%BB%B6%E7%9B%AE%E5%BD%95/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E5%85%B6%E4%BB%96%E6%8A%80%E5%B7%A7/%E7%94%9F%E6%88%90%E6%96%87%E4%BB%B6%E7%9B%AE%E5%BD%95/</guid><pubDate>Fri, 15 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;创建一个文件目录结构图&lt;/h1&gt;
&lt;p&gt;在README文件中创建一个&lt;a href=&quot;https://so.csdn.net/so/search?q=%E6%96%87%E4%BB%B6%E7%9B%AE%E5%BD%95%E7%BB%93%E6%9E%84&amp;amp;spm=1001.2101.3001.7020&quot;&gt;文件目录结构&lt;/a&gt;图通常涉及使用代码块来表示文件和文件夹的层次结构。
这里有一个步骤指南来创建一个基本的文件目录结构图：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;确定结构&lt;/strong&gt;: 首先，你需要确定你想展示的文件和&lt;a href=&quot;https://so.csdn.net/so/search?q=%E6%96%87%E4%BB%B6%E5%A4%B9&amp;amp;spm=1001.2101.3001.7020&quot;&gt;文件夹&lt;/a&gt;的结构。决定哪些目录和文件是重要的，以及它们是如何组织的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;使用缩进&lt;/strong&gt;: 在README文件中，你可以使用缩进来表示文件和文件夹之间的层次关系。通常，一个缩进可以用一个制表符或者四个空格表示。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;使用符号&lt;/strong&gt;: 人们通常使用一些特殊的符号来表示文件夹和文件。例如，/ 通常用于表示目录，而文件则直接写文件名。你也可以使用其他符号来增强可读性，比如&lt;code&gt;├─&lt;/code&gt;, &lt;code&gt;└─&lt;/code&gt;, 或 &lt;code&gt;│&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;以下是一个简单的文件目录结构图的例子：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;project-name/
│
├── dir1/
│   ├── file1.ext
│   └── file2.ext
│
├── dir2/
│   ├── sub-dir1/
│   │   └── file3.ext
│   └── sub-dir2/
│
└── dir3/
    ├── file4.ext
    └── file5.ext
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在这个例子中:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;project-name&lt;/code&gt; 是最顶层的文件夹。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dir1&lt;/code&gt;,&lt;code&gt;dir2&lt;/code&gt;, &lt;code&gt;dir3&lt;/code&gt; 是它下面的子文件夹。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;file1.ext&lt;/code&gt;, &lt;code&gt;file2.ext&lt;/code&gt; 等是文件。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sub-dir1&lt;/code&gt;, &lt;code&gt;sub-dir2&lt;/code&gt; 是&lt;code&gt;dir2&lt;/code&gt;下的子文件夹。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个结构图可以直接写入Markdown文件中，通常作为&lt;a href=&quot;https://so.csdn.net/so/search?q=%E4%BB%A3%E7%A0%81%E5%9D%97&amp;amp;spm=1001.2101.3001.7020&quot;&gt;代码块&lt;/a&gt;来保持格式一致。这种方式简单且直观，可以帮助读者理解项目的组织结构。&lt;/p&gt;
&lt;h2&gt;自动生成方案&lt;/h2&gt;
&lt;p&gt;在 Windows(需支持WSL)/MacOS/Linux中，可以使用工具&lt;code&gt;tree&lt;/code&gt;来&lt;strong&gt;自动生成目录结构&lt;/strong&gt;。&lt;/p&gt;
&lt;h3&gt;安装tree&lt;/h3&gt;
&lt;p&gt;Windows（WSL）/Linux：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get install tree
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;MacOS：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;brew install tree
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;使用tree自动生成目录结构&lt;/h3&gt;
&lt;p&gt;进入你需要生成目录结构文件夹，打开终端，输入以下命令，终端将把目录结构直接打印出来：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tree
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你需要控制打印目录的深度，那么可以加一个&lt;code&gt;-L&lt;/code&gt;参数，后面加上目录深度值（1、2、3、…）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tree -L [level]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你需要将内容写入Markdown文件中：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tree -L [level] &amp;gt; output.md
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后，你可以将output.md中的内容复制到你的Markdown文件中。&lt;/p&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】https://blog.csdn.net/SoulmateY/article/details/135281617&lt;/p&gt;
</content:encoded></item><item><title>混合编译.c/.cpp与.cu文件</title><link>https://tuoyuangui.github.io/website/posts/typora/cuda/nvcc%E5%8A%A8%E6%80%81%E9%9D%99%E6%80%81%E5%BA%93%E7%BC%96%E8%AF%91/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/cuda/nvcc%E5%8A%A8%E6%80%81%E9%9D%99%E6%80%81%E5%BA%93%E7%BC%96%E8%AF%91/</guid><pubDate>Wed, 06 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;混合编译.c/.cpp与.cu文件&lt;/h2&gt;
&lt;p&gt;项目中用到cuda编程，写了kernel函数，需要nvcc编译器来编译。.c/.cpp的文件，假定用gcc编译。&lt;/p&gt;
&lt;p&gt;如何混合编译它们，整体思路是：.cu文件编译出的东西，作为最终编译出的可执行程序的链接依赖。&lt;/p&gt;
&lt;p&gt;具体说起来又可以有这几种情况：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;分别编译各个文件，最后链接&lt;/li&gt;
&lt;li&gt;将CUDA程序编译为静态库&lt;/li&gt;
&lt;li&gt;将CUDA程序弄成动态库&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其中后两种方式更工程化，基于makefile或CMake会更加方便。&lt;/p&gt;
&lt;p&gt;假设手头上的文件为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;test1.cu
test2.c
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;则具体编译指令、编译脚本如下：&lt;/p&gt;
&lt;h2&gt;方法1：分别编译各个文件&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;nvcc -c test1.cu
gcc -c test2.c
gcc -o testc test1.o test2.o -lcudart -L/usr/local/cuda/lib64
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;方法2: 将cuda程序编译为静态库&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;nvcc -lib test1.cu -o libtestcu.a
gcc test2.c -ltestcu -L. -lcudart -L/usr/local/cuda/lib64
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;方法3：将CUDA程序弄成动态库&lt;/h2&gt;
&lt;p&gt;以makefile为例&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;all: c

c: libtestcu.so
    gcc test2.c -ltestcu -L. -lcudart -L/usr/local/cuda/lib64 -o testc

libtestcu.so: test.cu
    nvcc -o libtestcu.so -shared -Xcompiler -fPIC test1.cu
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;方法4：混合编译.c/.cpp与.cu文件&lt;/h2&gt;
&lt;p&gt;先分别编译，再联合， 编译动态库需要把环境变量&lt;code&gt;$LD_LIBRARY_PATH&lt;/code&gt;进行修改，否则无法成功&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#/bin/bash

CC=/usr/bin/gcc
NVCC=/usr/local/cuda-11.8/bin/nvcc
LIB=/usr/local/cuda-11.8/lib64
INC=/usr/local/cuda-11.8/include
CFLAGS=-I$(INC) -L$(LIB) -lcudart -lstdc++ -lcuda

SRCCS=$(wildcard *.c)   # .c src  file
SRCUS=$(wildcard *.cu)  # .cu src file

# c
OBJCCS_static =$(patsubst %.c, %.o,  $(SRCCS))
OBJCCS_dynamic=$(patsubst %.c, %.os, $(SRCCS))
# cu
OBJCUS_static =$(patsubst %.cu, %.o,  $(SRCUS))
OBJCUS_dynamic=$(patsubst %.cu, %.os, $(SRCUS))

%.os:%.c
    $(CC) -o $@ -c  -O3  -fPIC -shared -Wall $&amp;lt;
%.o:%.c
    $(CC) -o $@ -c  -O3  -Wall -lm $&amp;lt;

%.os:%.cu
    $(NVCC) -o $@ -c -Xcompiler -fPIC --use_fast_math -O3  $&amp;lt;
%.o:%.cu
    $(NVCC) -o $@ -c  -O3 -lcudart --use_fast_math $&amp;lt;

install_dynamic:$(OBJCUS_dynamic) $(OBJCCS_dynamic)
    $(CC)  -o libdlglcu.so  $^  -fPIC -shared  -lm $(CFLAGS)

install_static:$(OBJCUS_static) $(OBJCCS_static)
    ar rc liblglcu.a  $^
    ranlib liblglcu.a

header:
    paste *.h *.cuh -s &amp;gt; lglcu.h

install: install_dynamic install_static header

clean:
    -rm -rf *.o *.os lglcu.h liblglcu.a libdlglcu.so
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;reference:&lt;/h2&gt;
&lt;p&gt;【1】https://www.cnblogs.com/zjutzz/p/10272424.html&lt;/p&gt;
&lt;p&gt;【2】https://blog.csdn.net/bruce_0712/article/details/78515133&lt;/p&gt;
&lt;p&gt;【3】&lt;a href=&quot;https://www.zangcq.com/2018/03/10/c%E4%B8%8Ecuda%E6%B7%B7%E5%90%88%E7%BC%96%E8%AF%91%E5%8A%A8%E6%80%81%E9%93%BE%E6%8E%A5%E6%96%87%E4%BB%B6-so/&quot;&gt;C与CUDA混合编译动态链接文件.so – Chuanqiz’s blog (zangcq.com)&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Seiscope OPT toolbox improve</title><link>https://tuoyuangui.github.io/website/posts/typora/%E4%BC%98%E5%8C%96%E7%AE%97%E6%B3%95/seiscope_opt_toolbox/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E4%BC%98%E5%8C%96%E7%AE%97%E6%B3%95/seiscope_opt_toolbox/</guid><pubDate>Fri, 18 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Seiscope OPT toolbox improve&lt;/h1&gt;
&lt;h2&gt;1、基础理论&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;./seiscope_OPT_toolbox.assets/image-20250221161157941.png&quot; alt=&quot;image-20250221161157941&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;2.1 预条件梯度下降法：PSTD&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;./seiscope_OPT_toolbox.assets/image-20250221161326879.png&quot; alt=&quot;image-20250221161326879&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;[1] &lt;a href=&quot;https://seiscope2.osug.fr/SEISCOPE-OPTIMIZATION-TOOLBOX-274&quot;&gt;seiscope2.osug.fr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[2] &lt;a href=&quot;https://github.com/ofmla/seiscope_opt_toolbox_w_ctypes&quot;&gt;ofmla/seiscope_opt_toolbox_w_ctypes：此存储库展示了如何从 Python 使用 SEISCOPE 优化工具箱 Fortran 代码&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Pyside UI设计</title><link>https://tuoyuangui.github.io/website/posts/typora/gui%E5%B7%A5%E5%85%B7/pyside6/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/gui%E5%B7%A5%E5%85%B7/pyside6/</guid><pubDate>Wed, 16 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Pyside UI设计&lt;/h1&gt;
&lt;h2&gt;一、PySide6将UI文件转换为Python代码&lt;/h2&gt;
&lt;p&gt;要将&lt;code&gt;.ui&lt;/code&gt;文件转换为Python代码，你可以使用&lt;code&gt;pyside6-uic&lt;/code&gt;工具，这是PySide6的一部分。以下是如何操作的步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;设计UI&lt;/strong&gt;：使用Qt Designer设计你的界面，并保存为&lt;code&gt;.ui&lt;/code&gt;文件。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;转换UI文件&lt;/strong&gt;：在命令行中，使用&lt;code&gt;pyside6-uic&lt;/code&gt;工具将&lt;code&gt;.ui&lt;/code&gt;文件转换为Python代码。命令如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pyside6-uic your_file.ui -o your_file.py
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个命令会生成一个名为&lt;code&gt;your_file.py&lt;/code&gt;的Python文件，其中包含了UI界面的代码。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;使用生成的Python代码&lt;/strong&gt;：在你的应用程序中导入并使用这个生成的Python文件。通常，你需要创建一个继承自&lt;code&gt;QMainWindow&lt;/code&gt;或其他适当父类的窗口，并在这个类中加载UI。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;下面是一个示例，展示了如何在一个PySide6应用程序中使用转换后的UI代码：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import sys
from PySide6.QtWidgets import QApplication
from your_file import Ui_MainWindow  # 导入转换后的UI代码

class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)  # 初始化UI界面

def main():
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())

if __name__ == &apos;__main__&apos;:
    main()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在这个示例中，&lt;code&gt;your_file.py&lt;/code&gt;是使用&lt;code&gt;pyside6-uic&lt;/code&gt;工具从&lt;code&gt;.ui&lt;/code&gt;文件转换得到的。&lt;code&gt;MainWindow&lt;/code&gt;类继承了&lt;code&gt;QMainWindow&lt;/code&gt;和&lt;code&gt;Ui_MainWindow&lt;/code&gt;，其中&lt;code&gt;Ui_MainWindow&lt;/code&gt;是转换后的UI类。在&lt;code&gt;MainWindow&lt;/code&gt;的构造函数中，我们调用了&lt;code&gt;setupUi&lt;/code&gt;方法来初始化UI界面。&lt;/p&gt;
</content:encoded></item><item><title>jupyter 中内联Madagascar绘图</title><link>https://tuoyuangui.github.io/website/posts/typora/python/jupyter-%E4%B8%AD%E5%86%85%E8%81%94madagascar%E7%BB%98%E5%9B%BE/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/python/jupyter-%E4%B8%AD%E5%86%85%E8%81%94madagascar%E7%BB%98%E5%9B%BE/</guid><pubDate>Sat, 12 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;jupyter 中内联Madagascar绘图&lt;/h1&gt;
&lt;h2&gt;1、 配置修改&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# $RSFROOT/include/Makefile
SConstruct.jupyter: *.scons
    echo &quot;from rsf.proj import *&quot; &amp;gt; $@
    cat $^ &amp;gt;&amp;gt; $@
    echo &quot;&quot; &amp;gt;&amp;gt; $@
    echo &quot;End()&quot; &amp;gt;&amp;gt; $@

## *.vpl-&amp;gt;*.eps-&amp;gt;*.png
%.png: SConstruct.jupyter
    -rm $@
    scons -Qkf SConstruct.jupyter  $@ || ( \
    scons -Qf SConstruct.jupyter Fig/$*.vpl &amp;amp;&amp;amp; \
    vpconvert color=y  Fig/$*.vpl Fig/$*.eps &amp;amp;&amp;amp; \
    convert  -background white -flatten Fig/$*.eps $@ )

#%.png: SConstruct.jupyter
#	-rm $@
#	scons -Qf SConstruct.jupyter  $@ || ( \
#	scons -Qf SConstruct.jupyter Fig/$*.vpl &amp;amp;&amp;amp; \
#	vpconvert pen=gd fat=3 serifs=n bgcolor=w Fig/$*.vpl $@ )
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# /etc/ImageMagick-6/policy.xml
&amp;lt;!--  disable ghostscript format types  --&amp;gt;
&amp;lt;policy xmlns=&quot;&quot; domain=&quot;coder&quot; rights=&quot;read|write&quot; pattern=&quot;PS&quot;/&amp;gt;
&amp;lt;policy xmlns=&quot;&quot; domain=&quot;coder&quot; rights=&quot;read|write&quot; pattern=&quot;PS2&quot;/&amp;gt;
&amp;lt;policy xmlns=&quot;&quot; domain=&quot;coder&quot; rights=&quot;read|write&quot; pattern=&quot;PS3&quot;/&amp;gt;
&amp;lt;policy xmlns=&quot;&quot; domain=&quot;coder&quot; rights=&quot;read|write&quot; pattern=&quot;EPS&quot;/&amp;gt;
&amp;lt;policy xmlns=&quot;&quot; domain=&quot;coder&quot; rights=&quot;read|write&quot; pattern=&quot;PDF&quot;/&amp;gt;
&amp;lt;policy xmlns=&quot;&quot; domain=&quot;coder&quot; rights=&quot;read|write&quot; pattern=&quot;XPS&quot;/&amp;gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;2、绘图&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;%%file plot2d.scons
Result(&apos;vvvv&apos;,&apos;test&apos;,&apos;grey color=j scalebar=y  label1=Depth label2=Distance unit1=m unit2=m title=&quot; &quot; screenratio=0.5&apos;)
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;view(&apos;vvvv&apos;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;./jupyter%20%E4%B8%AD%E5%86%85%E8%81%94Madagascar%E7%BB%98%E5%9B%BE.assets/image-20241119125809911.png&quot; alt=&quot;image-20241119125809911&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>CUDA和C/C++混编</title><link>https://tuoyuangui.github.io/website/posts/typora/cuda/cuda%E6%B7%B7%E7%BC%96/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/cuda/cuda%E6%B7%B7%E7%BC%96/</guid><pubDate>Fri, 04 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;CUDA和C/C++混编&lt;/h1&gt;
&lt;h2&gt;1、编译方式&lt;/h2&gt;
&lt;p&gt;项目中用到cuda编程，写了kernel函数，需要nvcc编译器来编译。.c/.cpp的文件，假定用gcc编译。&lt;/p&gt;
&lt;p&gt;如何混合编译它们，整体思路是：.cu文件编译出的东西，作为最终编译出的可执行程序的链接依赖。&lt;/p&gt;
&lt;p&gt;具体说起来又可以有这几种情况：&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;分别编译各个文件，最后链接&lt;/li&gt;
&lt;li&gt;将CUDA程序编译为静态库&lt;/li&gt;
&lt;li&gt;将CUDA程序弄成动态库&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;其中后两种方式更工程化，基于makefile或CMake会更加方便。&lt;/p&gt;
&lt;p&gt;假设手头上的文件为：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;test1.cu&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;test2.c&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;则具体编译指令、编译脚本如下：&lt;/p&gt;
&lt;p&gt;**方法1：**分别编译各个文件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ nvcc -c test1.cu
$ gcc -c test2.c
$ gcc -o testc test1.o  test2.o -lcudart -L/usr/local/cuda/lib64
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;**方法2:**将&lt;code&gt;cuda&lt;/code&gt;程序编译为静态库&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ nvcc -lib test1.cu -o  libtestcu.a
$ gcc test2.c -ltestcu  -L. -lcudart -L/usr/local/cuda/lib64
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;**方法3:**将&lt;code&gt;cuda&lt;/code&gt;程序编译为动态库  &lt;strong&gt;以makefile为例&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ all: c
$ c:  libtestcu.so
$ gcc test2.c -ltestcu  -L. -lcudart -L/usr/local/cuda/lib64 -o testc
$ libtestcu.so:  test.cu
$ nvcc -o libtestcu.so  -shared -Xcompiler -fPIC test1.cu
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】 &lt;a href=&quot;https://www.cnblogs.com/zjutzz/p/10272424.html&quot;&gt;https://www.cnblogs.com/zjutzz/p/10272424.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;【2】&lt;a href=&quot;https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html&quot;&gt;NVIDIA CUDA Compiler Driver&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>CUDA编程入门</title><link>https://tuoyuangui.github.io/website/posts/typora/cuda/cuda%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/cuda/cuda%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/</guid><pubDate>Sat, 20 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;1、什么是CUDA？&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;CUDA是NVIDIA建立在GPU上的一个通用并行计算平台和编程模型，基于CUDA编程可以利用GPUs的并行计算引擎来更加高效地解决比较复杂的计算难题。

GPU包括更多的运算核心，其特别适合数据并行的计算密集型任务；

CPU的运算核心较少，但是其可以实现复杂的逻辑运算。
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2、编程基础&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;用host指代CPU及其内存，而用device指代GPU及其内存，CUDA程序中既包含host程序，又包含device程序，它们分别在CPU和GPU上运行。同时，host与device之间可以进行通信，这样它们之间可以进行数据拷贝。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;典型的CUDA程序的执行流程如下：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;分配host内存，并进行数据初始化；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;分配device内存，并从host将数据拷贝到device上；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;调用CUDA的&lt;strong&gt;核函数&lt;/strong&gt;在device上完成指定的运算；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;将device上的运算结果拷贝到host上；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;释放device和host上分配的内存。&lt;/p&gt;
&lt;p&gt;上面流程中最重要的一个过程是调用&lt;strong&gt;CUDA的核函数&lt;/strong&gt;来执行并行计算，&lt;a href=&quot;https://link.zhihu.com/?target=http%3A//docs.nvidia.com/cuda/cuda-c-programming-guide/index.html%23kernels&quot;&gt;kernel&lt;/a&gt;是CUDA中一个重要的概念，kernel是在device上线程中并行执行的函数，核函数用&lt;code&gt;__global__&lt;/code&gt;符号声明（告诉编译器，在GPU上运行），在调用时需要用&lt;code&gt;&amp;lt;&amp;lt;&amp;lt;grid, block&amp;gt;&amp;gt;&amp;gt;&lt;/code&gt;来指定kernel要执行的线程数量，在CUDA中，每一个线程都要执行核函数，并且每个线程会分配一个唯一的线程号thread ID，这个ID值可以通过核函数的内置变量&lt;code&gt;threadIdx&lt;/code&gt;来获得。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;./CUDA%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8.assets/image-20240528172155532-1716888118482-1.png&quot; alt=&quot;image-20240528172155532&quot; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;由于GPU实际上是异构模型，所以需要区分host和device上的代码，在CUDA中是通过函数类型限定词开区别host和device上的函数，主要的三个函数类型限定词如下
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;__global__&lt;/code&gt;：在device上执行，从host中调用（一些特定的GPU也可以从device上调用），返回类型必须是&lt;code&gt;void&lt;/code&gt;，不支持可变参数参数，不能成为类成员函数。注意用&lt;code&gt;__global__&lt;/code&gt;定义的kernel是&lt;strong&gt;异步&lt;/strong&gt;的，这意味着host不会等待kernel执行完就执行下一步。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;__device__&lt;/code&gt;：在device上执行，单仅可以从device中调用，不可以和&lt;code&gt;__global__&lt;/code&gt;同时用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;__host__&lt;/code&gt;：在host上执行，仅可以从host上调用，一般省略不写，不可以和&lt;code&gt;__global__&lt;/code&gt;同时用，但可和&lt;code&gt;__device__&lt;/code&gt;，此时函数会在device和host都编译。&lt;/p&gt;
&lt;p&gt;必须要对kernel的线程层次结构有一个清晰的认识。首先GPU上很多并行化的轻量级线程。kernel在device上执行时实际上是启动很多线程，一个kernel所启动的所有线程称为一个&lt;strong&gt;网格&lt;/strong&gt;（grid），同一个网格上的线程共享相同的全局内存空间，grid是线程结构的第一层次，而网格又可以分为很多&lt;strong&gt;线程块&lt;/strong&gt;（block），一个线程块里面包含很多线程，这是第二个层次。线程两层组织结构如下图所示，这是一个gird和block均为2-dim的线程组织。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;./CUDA%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8.assets/image-20240528172222595.png&quot; alt=&quot;image-20240528172222595&quot; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dim3 grid(3, 2);
dim3 block(5, 3);
kernel_fun&amp;lt;&amp;lt;&amp;lt; grid, block &amp;gt;&amp;gt;&amp;gt;(prams...);
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;一个线程需要两个内置的坐标变量（blockIdx，threadIdx）来唯一标识，它们都是`dim3`类型变量，其中blockIdx指明线程所在grid中的位置，而threaIdx指明线程所在block中的位置，如图中的Thread (1,1)满足：
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;threadIdx.x = 1
threadIdx.y = 1
blockIdx.x = 1
blockIdx.y = 1
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;一个线程块上的线程是放在同一个流式多处理器（SM)上的，但是单个SM的资源有限，这导致线程块中的线程数是有限制的，现代GPUs的线程块可支持的线程数可达1024个。有时候，我们要知道一个线程在blcok中的全局ID，此时就必须还要知道block的组织结构，这是通过线程的内置变量blockDim来获得。它获取线程块各个维度的大小。对于一个2-dim的block $(D_{x},D_{y})$，线程$(x,y)$  的ID值为$(x+y*D_{x})$  ，如果是3-dim的block$ (D_{x},D_{y},D_{z})$  ，线程 $(x,y,z)$ 的ID值为$(x+y*D_{x}+z*D_{x}*D_{y})$  。另外线程还有内置变量gridDim，用于获得网格块各个维度的大小。

kernel的这种线程组织结构天然适合vector,matrix等运算，如我们将利用上图dim结构实现两个矩阵的加法，每个线程负责处理每个位置的两个元素相加，代码如下所示。线程块大小为(16, 16)，然后将N*N大小的矩阵均分为不同的线程块来执行加法运算.
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;// Kernel定义
__global__ void MatAdd(float A[N][N], float B[N][N], float C[N][N])
{
    int i = blockIdx.x * blockDim.x + threadIdx.x;
    int j = blockIdx.y * blockDim.y + threadIdx.y;
    if (i &amp;lt; N &amp;amp;&amp;amp; j &amp;lt; N)
        C[i][j] = A[i][j] + B[i][j];
}
int main()
{
    ...
    // Kernel 线程配置
    dim3 threadsPerBlock(16, 16);
    dim3 numBlocks(N / threadsPerBlock.x, N / threadsPerBlock.y);
    // kernel调用
    MatAdd&amp;lt;&amp;lt;&amp;lt;numBlocks, threadsPerBlock&amp;gt;&amp;gt;&amp;gt;(A, B, C);
    ...
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;由于SM的基本执行单元是包含32个线程的线程束，所以block大小一般要设置为32的倍数.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;配置检查：&lt;/strong&gt;（在进行CUDA编程前，可以先检查一下自己的GPU的硬件配置）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  int dev = 0;
    cudaDeviceProp devProp;
    CHECK(cudaGetDeviceProperties(&amp;amp;devProp, dev));
    std::cout &amp;lt;&amp;lt; &quot;使用GPU device &quot; &amp;lt;&amp;lt; dev &amp;lt;&amp;lt; &quot;: &quot; &amp;lt;&amp;lt; devProp.name &amp;lt;&amp;lt; std::endl;
    std::cout &amp;lt;&amp;lt; &quot;SM的数量：&quot; &amp;lt;&amp;lt; devProp.multiProcessorCount &amp;lt;&amp;lt; std::endl;
    std::cout &amp;lt;&amp;lt; &quot;每个线程块的共享内存大小：&quot; &amp;lt;&amp;lt; devProp.sharedMemPerBlock / 1024.0 &amp;lt;&amp;lt; &quot; KB&quot; &amp;lt;&amp;lt; std::endl;
    std::cout &amp;lt;&amp;lt; &quot;每个线程块的最大线程数：&quot; &amp;lt;&amp;lt; devProp.maxThreadsPerBlock &amp;lt;&amp;lt; std::endl;
    std::cout &amp;lt;&amp;lt; &quot;每个EM的最大线程数：&quot; &amp;lt;&amp;lt; devProp.maxThreadsPerMultiProcessor &amp;lt;&amp;lt; std::endl;
    std::cout &amp;lt;&amp;lt; &quot;每个SM的最大线程束数：&quot; &amp;lt;&amp;lt; devProp.maxThreadsPerMultiProcessor / 32 &amp;lt;&amp;lt; std::endl;

    // 输出如下
    使用GPU device 0: GeForce GT 730
    SM的数量：2
    每个线程块的共享内存大小：48 KB
    每个线程块的最大线程数：1024
    每个EM的最大线程数：2048
    每个EM的最大线程束数：64
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3、一些示例&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;CUDA编程中内存管理API。首先是在device上分配内存的**cudaMalloc函数**，这个函数和C语言中的malloc类似，但是在device上申请一定字节大小的显存。其中devPtr是指向所分配内存的指针。同时要释放分配的内存使用**cudaFree函数**，这和C语言中的free函数对应。
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;cudaError_t cudaMalloc(void** devPtr, size_t size);
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;重要的函数是负责host和device之间数据通信的**cudaMemcpy函数**：
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;cudaError_t cudaMemcpy(void* dst, const void* src, size_t count, cudaMemcpyKind kind)
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;其中src指向数据源，而dst是目标区域，count是复制的字节数，其中kind控制复制的方向：cudaMemcpyHostToHost, cudaMemcpyHostToDevice, cudaMemcpyDeviceToHost及cudaMemcpyDeviceToDevice，如cudaMemcpyHostToDevice将host上数据拷贝到device上。
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;向量加法&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;定义kernel：
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;// 两个向量加法kernel，grid和block均为一维
__global__ void add(float* x, float * y, float* z, int n)
{
    // 获取全局索引
    int index = threadIdx.x + blockIdx.x * blockDim.x;
    // 步长
    int stride = blockDim.x * gridDim.x;
    for (int i = index; i &amp;lt; n; i += stride)
    {
        z[i] = x[i] + y[i];
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;stride是整个grid的线程数，有时候向量的元素数很多，这时候可以将在每个线程实现多个元素（元素总数/线程总数）的加法，相当于使用了多个grid来处理，这是一种[grid-stride loop](https://link.zhihu.com/?target=https%3A//devblogs.nvidia.com/cuda-pro-tip-write-flexible-kernels-grid-stride-loops/)方式，不过下面的例子一个线程只处理一个元素，所以kernel里面的循环是不执行的。下面我们具体实现向量加法：
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;int main()
{
    int N = 1 &amp;lt;&amp;lt; 20;    // 二进制编码左移20
    int nBytes = N * sizeof(float);
    // 申请host内存
    float *x, *y, *z;
    x = (float*)malloc(nBytes);
    y = (float*)malloc(nBytes);
    z = (float*)malloc(nBytes);

    // 初始化数据
    for (int i = 0; i &amp;lt; N; ++i)
    {
        x[i] = 10.0;
        y[i] = 20.0;
    }

    // 申请device内存
    float *d_x, *d_y, *d_z;
    cudaMalloc((void**)&amp;amp;d_x, nBytes);
    cudaMalloc((void**)&amp;amp;d_y, nBytes);
    cudaMalloc((void**)&amp;amp;d_z, nBytes);

    // 将host数据拷贝到device
    cudaMemcpy((void*)d_x, (void*)x, nBytes, cudaMemcpyHostToDevice);
    cudaMemcpy((void*)d_y, (void*)y, nBytes, cudaMemcpyHostToDevice);
    // 定义kernel的执行配置
    dim3 blockSize(256);
    dim3 gridSize((N + blockSize.x - 1) / blockSize.x);
    // 执行kernel
    add &amp;lt;&amp;lt; &amp;lt; gridSize, blockSize &amp;gt;&amp;gt; &amp;gt;(d_x, d_y, d_z, N);

    // 将device得到的结果拷贝到host
    cudaMemcpy((void*)z, (void*)d_z, nBytes, cudaMemcpyDeviceToHost);

    // 检查执行结果
    float maxError = 0.0;
    for (int i = 0; i &amp;lt; N; i++)
        maxError = fmax(maxError, fabs(z[i] - 30.0));
    std::cout &amp;lt;&amp;lt; &quot;最大误差: &quot; &amp;lt;&amp;lt; maxError &amp;lt;&amp;lt; std::endl;

    // 释放device内存
    cudaFree(d_x);
    cudaFree(d_y);
    cudaFree(d_z);
    // 释放host内存
    free(x);
    free(y);
    free(z);

    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;这里我们的向量大小为1&amp;lt;&amp;lt;20，而block大小为256，那么grid大小是4096，kernel的线程层级结构如下图所示：
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;./CUDA%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8.assets/image-20240528172242065.png&quot; alt=&quot;image-20240528172242065&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>常用脚本</title><link>https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/bash-%E6%8A%80%E5%B7%A7/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/bash-%E6%8A%80%E5%B7%A7/</guid><pubDate>Thu, 27 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;常用脚本&lt;/h1&gt;
&lt;p&gt;从脚本文件中获取名称并处理&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mapfile -t files &amp;lt; &quot;SUFILE_2-55.txt&quot;
for f in &quot;${files[@]}:&quot;; do
    echo &quot;processing: $f&quot;
    sfsuwrite&amp;lt;cspshot/splict_shot_data/$f tfile=cspshot/splict_hdr_data/$f endian=0 &amp;gt;${f}su
    cat ${f}su &amp;gt;&amp;gt;total.su
done

bash run.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;介绍 $0、$1、$2、$#、$@、$*、$? 的含义&lt;/h1&gt;
&lt;p&gt;在编写 Linux bash shell 脚本时，经常会用到 &lt;code&gt;$0、$1、$2、$#、$@、$*、$?&lt;/code&gt; 等参数。下面具体说明这些参数的含义。&lt;/p&gt;
&lt;p&gt;假设执行 &lt;code&gt;./test.sh a b c&lt;/code&gt; 这样一个命令，则可以使用下面的参数来获取一些值：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$0&lt;/code&gt;
对应 &lt;em&gt;./test.sh&lt;/em&gt; 这个值。如果执行的是 &lt;code&gt;./work/test.sh&lt;/code&gt;， 则对应 &lt;em&gt;./work/test.sh&lt;/em&gt; 这个值，而不是只返回文件名本身的部分。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$1&lt;/code&gt;
会获取到 a，即 &lt;code&gt;$1&lt;/code&gt; 对应传给脚本的第一个参数。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$2&lt;/code&gt;
会获取到 b，即 &lt;code&gt;$2&lt;/code&gt; 对应传给脚本的第二个参数。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$3&lt;/code&gt;
会获取到 c，即 &lt;code&gt;$3&lt;/code&gt; 对应传给脚本的第三个参数。&lt;code&gt;$4&lt;/code&gt;、&lt;code&gt;$5&lt;/code&gt; 等参数的含义依此类推。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$#&lt;/code&gt;
会获取到 3，对应传入脚本的参数个数，统计的参数不包括 &lt;code&gt;$0&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$@&lt;/code&gt;
会获取到 &quot;a&quot; &quot;b&quot; &quot;c&quot;，也就是所有参数的列表，不包括 &lt;code&gt;$0&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$*&lt;/code&gt;
也会获取到 &quot;a&quot; &quot;b&quot; &quot;c&quot;， 其值和 &lt;code&gt;$@&lt;/code&gt; 相同。但 &lt;code&gt;&quot;$*&quot;&lt;/code&gt; 和 &lt;code&gt;&quot;$@&quot;&lt;/code&gt; 有所不同。
&lt;code&gt;&quot;$*&quot;&lt;/code&gt; 把所有参数合并成一个字符串，而 &lt;code&gt;&quot;$@&quot;&lt;/code&gt; 会得到一个字符串参数数组。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$?&lt;/code&gt;
可以获取到执行 &lt;code&gt;./test.sh a b c&lt;/code&gt; 命令后的返回值。
在执行一个前台命令后，可以立即用 &lt;code&gt;$?&lt;/code&gt; 获取到该命令的返回值。
该命令可以是系统自身的命令，可以是 shell 脚本，也可以是自定义的 bash 函数。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当执行系统自身的命令时，&lt;code&gt;$?&lt;/code&gt; 对应这个命令的返回值。
当执行 shell 脚本时，&lt;code&gt;$?&lt;/code&gt; 对应该脚本调用 &lt;code&gt;exit&lt;/code&gt; 命令返回的值。如果没有主动调用 &lt;code&gt;exit&lt;/code&gt; 命令，默认返回为 0。
当执行自定义的 bash 函数时，&lt;code&gt;$?&lt;/code&gt; 对应该函数调用 &lt;code&gt;return&lt;/code&gt; 命令返回的值。如果没有主动调用 &lt;code&gt;return&lt;/code&gt; 命令，默认返回为 0。&lt;/p&gt;
&lt;p&gt;下面举例说明 &lt;code&gt;&quot;$*&quot;&lt;/code&gt; 和 &lt;code&gt;&quot;$@&quot;&lt;/code&gt; 的差异。假设有一个 &lt;code&gt;testparams.sh&lt;/code&gt; 脚本，内容如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/bash

for arg in &quot;$*&quot;; do
    echo &quot;****:&quot; $arg
done
echo --------------
for arg in &quot;$@&quot;; do
    echo &quot;@@@@:&quot; $arg
done
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个脚本分别遍历 &lt;code&gt;&quot;$*&quot;&lt;/code&gt; 和 &lt;code&gt;&quot;$@&quot;&lt;/code&gt; 扩展后的内容，并打印出来。&lt;/p&gt;
&lt;p&gt;执行 &lt;code&gt;./testparams.sh&lt;/code&gt; 脚本，结果如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ ./testparams.sh This is a test
****: This is a test
--------------
@@@@: This
@@@@: is
@@@@: a
@@@@: test
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以看到，&lt;code&gt;&quot;$*&quot;&lt;/code&gt; 只产生一个字符串，for 循环只遍历一次。
而 &lt;code&gt;&quot;$@&quot;&lt;/code&gt; 产生了多个字符串，for 循环遍历多次，是一个字符串参数数组。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：如果传入的参数多于 9 个，则不能使用 &lt;code&gt;$10&lt;/code&gt; 来引用第 10 个参数，而是要用 &lt;code&gt;${10}&lt;/code&gt; 来引用。&lt;/p&gt;
&lt;p&gt;即，需要用大括号&lt;code&gt;{}&lt;/code&gt;把大于 9 的数字括起来。
例如，&lt;code&gt;${10}&lt;/code&gt; 表示获取第 10 个参数的值，写为 &lt;code&gt;$10&lt;/code&gt; 获取不到第 10 个参数的值。
实际上，&lt;code&gt;$10&lt;/code&gt; 相当于 &lt;code&gt;${1}0&lt;/code&gt;，也就是先获取 &lt;code&gt;$1&lt;/code&gt; 的值，后面再跟上 0。
如果 &lt;code&gt;$1&lt;/code&gt; 的值是 &quot;first&quot;，则 &lt;code&gt;$10&lt;/code&gt; 的值是 &quot;first0&quot;。&lt;/p&gt;
&lt;p&gt;查看 man bash 里面对位置参数（positional parameters）的说明如下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Positional Parameters&lt;/strong&gt;
A positional parameter is a parameter denoted by one or more digits, other than the single digit 0.Positional parameters are assigned from the shell&apos;s arguments when it is invoked, and may be reassigned using the set builtin command.
Positional parameters may not be assigned to with assignment statements.
The positional parameters are temporarily replaced when a shell function is executed.&lt;/p&gt;
&lt;p&gt;When a positional parameter consisting of more than a single digit is expanded, it must be enclosed in braces.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;即，最后一句提到，当位置参数由多位数字组成时，需要用大括号&lt;code&gt;{}&lt;/code&gt;把多位数字括起来。&lt;/p&gt;
&lt;h2&gt;获取位置参数的个数&lt;/h2&gt;
&lt;p&gt;在 bash 中，可以使用 &lt;code&gt;$#&lt;/code&gt; 来获取传入的命令行或者传入函数的参数个数。
要注意的是，&lt;code&gt;$#&lt;/code&gt; 统计的参数个数不包括脚本自身名称或者函数名称。
例如，执行 &lt;code&gt;./a.sh a b&lt;/code&gt;，则 &lt;code&gt;$#&lt;/code&gt; 是 2，而不是 3。&lt;/p&gt;
&lt;p&gt;查看 man bash 的说明如下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Special Parameters&lt;/strong&gt;
&lt;strong&gt;#&lt;/strong&gt; Expands to the number of positional parameters in decimal.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;可以看到，&lt;code&gt;$#&lt;/code&gt; 实际上是扩展为位置参数（positional parameters）的个数，统计的参数不包括 &lt;code&gt;$0&lt;/code&gt;。&lt;/p&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】 https://segmentfault.com/a/1190000021435389&lt;/p&gt;
</content:encoded></item><item><title>输入输出流重定向</title><link>https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E6%B5%81%E9%87%8D%E5%AE%9A%E5%90%91/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E6%B5%81%E9%87%8D%E5%AE%9A%E5%90%91/</guid><pubDate>Thu, 20 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;输入输出流重定向&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;常见用法：
    command &amp;gt; file 2&amp;gt;&amp;amp;1
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;基础使用&lt;/h2&gt;
&lt;p&gt;一般情况下，每个 Unix/Linux 命令运行时都会打开三个文件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;标准输入文件(stdin)：stdin的文件描述符为0，Unix程序默认从stdin读取数据。&lt;/li&gt;
&lt;li&gt;标准输出文件(stdout)：stdout 的文件描述符为1，Unix程序默认向stdout输出数据。&lt;/li&gt;
&lt;li&gt;标准错误文件(stderr)：stderr的文件描述符为2，Unix程序会向stderr流中写入错误信息。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;默认情况下，command &amp;gt; file 将 stdout 重定向到 file，command &amp;lt; file 将stdin 重定向到 file。&lt;/p&gt;
&lt;p&gt;如果希望 &lt;strong&gt;stderr 重定向到 file&lt;/strong&gt;，可以这样写：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ command 2&amp;gt;file
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果希望 &lt;strong&gt;stderr 追加到 file 文件末尾&lt;/strong&gt;，可以这样写：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ command 2&amp;gt;&amp;gt;file
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2&lt;/strong&gt; 表示标准错误文件(stderr)。&lt;/p&gt;
&lt;p&gt;如果希望将 &lt;strong&gt;stdout 和 stderr 合并后重定向到 file&lt;/strong&gt;，可以这样写：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ command &amp;gt; file 2&amp;gt;&amp;amp;1
$ command &amp;gt;&amp;gt; file 2&amp;gt;&amp;amp;1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果希望对 &lt;strong&gt;stdin 和 stdout 都重定向&lt;/strong&gt;，可以这样写：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ command &amp;lt; file1 &amp;gt;file2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;command 命令将 stdin 重定向到 file1，将 stdout 重定向到 file2。&lt;/p&gt;
&lt;h2&gt;标准I/O流介绍&lt;/h2&gt;
&lt;p&gt;​		通常情况下每个程序加载后都会有3个流被&lt;code&gt;fopen——stdin、stdout、stder&lt;/code&gt;r，它们是标准C中的FILE*指针。在unix环境对应的文件描述符为0、1、2（宏定义为&lt;code&gt;STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO&lt;/code&gt;）。当然，程序退出的时候它们也会被fclose。&lt;/p&gt;
&lt;p&gt;​		不要简单地把stdin视作键盘缓冲区，stdout视作屏幕缓冲区，尽管多数时候确实像这么回事。关键在于unix中的IO重定向，这三个流都可以被重定向到任意的文件或设备中，一切皆文件嘛。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;int main(int argc, char* argv[])
 {
   int a, b;
   scanf(&quot;%d %d&quot;, &amp;amp;a, &amp;amp;b);
   printf(&quot;%d + %d = %d\n&quot;, a, b, a+b);
   return 0;
 }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;上述代码中的执行过程看似是先在命令行下输入两个数字，然后打印出两数之和，但只要动点手脚...&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ echo &quot;1 2&quot; &amp;gt; input.txt
$ cc main.c
# 将stdin重定向到input.txt，将stdout重定向到output.txt
$ ./a.out 0&amp;lt;input.txt 1&amp;gt;output.txt
$ cat output.txt
1 + 2 = 3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以看到，程序瞬间执行完且并无任何打印，相应的输入输出内容已存放在input.txt和output.txt中。所以：&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;stdin可以是数据、键盘、鼠标、触摸板、终端等任何一种“文件”&lt;/li&gt;
&lt;li&gt;stdout可以是数据、键盘、鼠标、触摸板、终端等任何一种“文件”&lt;/li&gt;
&lt;li&gt;stderr可以是数据、键盘、鼠标、触摸板、终端等任何一种“文件”&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;理解标准IO流的好处能够提升某些应用场景下软件的开发效率，例如我们需要从某个终端输入一些内容，然后将处理结果显示到另一个终端，再把错误日志存储到某个文件，如果能用好标准IO流，不仅可以省去日志管理的开发，还能提高程序的灵活性。&lt;/p&gt;
&lt;h2&gt;Reference：&lt;/h2&gt;
&lt;p&gt;【1】https://www.runoob.com/linux/linux-shell-io-redirections.html&lt;/p&gt;
&lt;p&gt;【2】https://zhuanlan.zhihu.com/p/437797951&lt;/p&gt;
</content:encoded></item><item><title>什么是深度学习？（从函数逼近论的角度来理解）</title><link>https://tuoyuangui.github.io/website/posts/typora/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/</guid><pubDate>Wed, 12 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Title: 什么是深度学习？（从函数逼近论的角度来理解）&lt;/p&gt;
&lt;p&gt;URL Source: http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.html&lt;/p&gt;
&lt;p&gt;Markdown Content:
&lt;strong&gt;什么是深度学习？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt; &lt;strong&gt;45****分钟理解深度神经网络和深度学习&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://staff.ustc.edu.cn/~lgliu&quot;&gt;刘利刚&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gcl.ustc.edu.cn/&quot;&gt;中国科学技术大学图形与几何计算实验室&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://staff.ustc.edu.cn/~lgliu&quot;&gt;http://staff.ustc.edu.cn/~lgliu&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;【绪言】&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;近年来，人工智能（Artificial Intelligence, AI）和深度学习（Deep Learning, DL）非常火爆，在各个领域得到了广泛的应用。在笔者所从事的&lt;a href=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/CG/What_is_CG.htm&quot;&gt;计算机图形学&lt;/a&gt;领域，也出现了越来越多的使用深度学习方法来解决各种问题的研究工作。2018年7月初，笔者首次在第七届&lt;a href=&quot;http://staff.ustc.edu.cn/~lgliu/Courses/SummerSchool/USTC-summer-school.html&quot;&gt;中国科学技术大学《计算机图形学前沿》暑期课程&lt;/a&gt;上讲授和分享了笔者从数学（函数逼近论）的角度来对基于深度神经网络（Deep Neural Network, DNN）的深度学习的进行理解。之后，不断有学生来向笔者进一步询问和交流有关资料和问题。为了使学生们能够更好、更快理解和使用深度神经网络和深度学习，特撰写此文。&lt;/p&gt;
&lt;p&gt;本文的目的是帮助非人工智能领域的学生（主要是计算机图形学领域的学生及笔者的学生）来搞懂深度学习（这里指狭义的深度学习，即基于DNN的深度学习）的基本概念和方法。笔者尝试用通俗的语言，从函数逼近论的角度来阐释深度神经网络的本质。由于笔者的主要研究领域为&lt;a href=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/CG/What_is_CG.htm&quot;&gt;计算机图形学&lt;/a&gt;，而非人工智能领域，因此本文仅仅为笔者从外行的角度对基于DNN的深度学习的粗浅理解，而非人工智能领域对DNN和深度学习的权威解释。因而，笔者对其中的有些内容的理解是有限的，甚至是有误的。如有不当之处，还请读者指正！&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一、&lt;/strong&gt;   &lt;strong&gt;从数据拟合说起&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在大学的《数学分析》、《微积分》或者《数值分析》中，大家都已学习并熟悉数据拟合问题及求解拟合问题的最小二乘法。&lt;/p&gt;
&lt;p&gt;1.1.            数据拟合问题&lt;/p&gt;
&lt;p&gt;在科学技术的各领域中，我们所研究的事件一般都是有规律（因果关系）的，即自变量集合&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image001.png&quot; alt=&quot;Image 1&quot; /&gt;与应变量集合&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image002.png&quot; alt=&quot;Image 2&quot; /&gt;之间存在的对应关系通常用映射来描述&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image003.png&quot; alt=&quot;Image 3&quot; /&gt;（特殊情况：实数集合&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image004.png&quot; alt=&quot;Image 4&quot; /&gt;到实数集合&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image004.png&quot; alt=&quot;Image 5&quot; /&gt;之间的映射称为函数）。这样能根据映射（函数）规律作出预测并用于实际应用。&lt;/p&gt;
&lt;p&gt;有些函数关系可由理论分析推导得出，不仅为进一步的分析研究工作提供理论基础，也可以方便的解决实际工程问题。比如，适合于宏观低速物体的牛顿第二运动定律&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image005.png&quot; alt=&quot;Image 6&quot; /&gt;就是在实际观察和归纳中得出的普适性力学定律。&lt;/p&gt;
&lt;p&gt;但是，很多工程问题难以直接推导出变量之间的函数表达式；或者即使能得出表达式，公式也十分复杂，不利于进一步的分析与计算。这时可以通过诸如采样、实验等方法获得若干离散的数据（称为样本数据点），然后根据这些数据，希望能得到这些变量之间的函数关系，这个过程称为数据拟合（Data fitting），在数理统计中也称为回归分析（Regression analysis）。&lt;/p&gt;
&lt;p&gt;这里值得提一下，在实际应用中，还有一类问题是输出的结果&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image002.png&quot; alt=&quot;Image 7&quot; /&gt;是离散型的（比如识别图片里是人、猫、狗等标签的一种），此时问题称为分类（Classification）。&lt;/p&gt;
&lt;p&gt;1.2.            数据拟合类型&lt;/p&gt;
&lt;p&gt;我们先考虑最简单的情形，即实数到实数的一元函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image006.png&quot; alt=&quot;Image 8&quot; /&gt;。假设通过实验获得了&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image007.png&quot; alt=&quot;Image 9&quot; /&gt;个样本点&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image008.png&quot; alt=&quot;Image 10&quot; /&gt;。我们希望求得反映这些样本点规律的一个函数关系&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image009.png&quot; alt=&quot;Image 11&quot; /&gt;，如图1所示。&lt;/p&gt;
&lt;p&gt;如果要求函数严格通过每个样本点，即&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image010.png&quot; alt=&quot;&quot; /&gt; ， (1.1)&lt;/p&gt;
&lt;p&gt;则求解函数的问题称为插值问题（Interpolation）。&lt;/p&gt;
&lt;p&gt;一般地，由于实验数据带有观测误差，因此在大部分情况下，我们只要求函数反映这些样本点的趋势，即函数靠近样本点且误差在某种度量意义下最小，称为逼近问题（Approximation）。若记在某点的误差为&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image011.png&quot; alt=&quot;&quot; /&gt; (1.2)&lt;/p&gt;
&lt;p&gt;且记误差向量为&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image012.png&quot; alt=&quot;Image 14&quot; /&gt;。逼近问题就是要求向量&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image013.png&quot; alt=&quot;Image 15&quot; /&gt;的某种范数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image014.png&quot; alt=&quot;Image 16&quot; /&gt;最小。一般采用欧氏范数（&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image015.png&quot; alt=&quot;Image 17&quot; /&gt;范数）作为误差度量的标准（比较容易计算），即求如下极小化问题：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image016.png&quot; alt=&quot;&quot; /&gt;. (1.3)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image017.jpg&quot; alt=&quot;Image 19&quot; /&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image018.jpg&quot; alt=&quot;Image 20&quot; /&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image019.jpg&quot; alt=&quot;Image 21&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图1. 数据拟合。左：输入的样本点；中：插值函数；右：逼近函数。&lt;/p&gt;
&lt;p&gt;无论是插值问题还是逼近问题，一个首要的问题就是函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image020.png&quot; alt=&quot;Image 22&quot; /&gt;的类型的选择和表示问题，这是《函数逼近论》中的一个比较“纠结”的问题。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;二、&lt;/strong&gt;   &lt;strong&gt;函数逼近论简介&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;函数的表示是函数逼近论中的基本问题。在数学的理论研究和实际应用中经常遇到下类问题：在选定的一类函数中寻找某个函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image020.png&quot; alt=&quot;Image 23&quot; /&gt;，使它与已知函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image021.png&quot; alt=&quot;Image 24&quot; /&gt;（或观测数据）在一定意义下为最佳近似表示，并求出用&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image020.png&quot; alt=&quot;Image 25&quot; /&gt;近似表示&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image021.png&quot; alt=&quot;Image 26&quot; /&gt;而产生的误差。这就是函数逼近问题。&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image020.png&quot; alt=&quot;Image 27&quot; /&gt;称为逼近函数或拟合函数。&lt;/p&gt;
&lt;p&gt;在函数逼近问题中，逼近函数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image020.png&quot; alt=&quot;Image 28&quot; /&gt;的函数类可以有不同的选择；即使函数类选定了，在该类函数中确定&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image020.png&quot; alt=&quot;Image 29&quot; /&gt;的方式仍然是各式各样的；&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image020.png&quot; alt=&quot;Image 30&quot; /&gt;对&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image021.png&quot; alt=&quot;Image 31&quot; /&gt;的近似程度（误差）也可以有各种不同的定义。我们分别对这些问题进行理解和讨论。&lt;/p&gt;
&lt;p&gt;2.1.             逼近函数类&lt;/p&gt;
&lt;p&gt;在实际问题中，首先要确定函数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image020.png&quot; alt=&quot;Image 32&quot; /&gt;的具体形式。这不单纯是数学问题，还与所研究问题的运动规律及观测数据有关，也与用户的经验有关。一般地，我们在某个较简单的函数类中去寻找我们所需要的函数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image020.png&quot; alt=&quot;Image 33&quot; /&gt;。这种函数类叫做逼近函数类。&lt;/p&gt;
&lt;p&gt;逼近函数类可以有多种选择，一般可以在不同的函数空间（比如由一些基函数通过线性组合所张成的函数空间）中进行选择。如下是一些常用的函数类。&lt;/p&gt;
&lt;p&gt;(1)   多项式函数类&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image022.png&quot; alt=&quot;Image 34&quot; /&gt;次代数多项式，即由次数不大于&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image022.png&quot; alt=&quot;Image 35&quot; /&gt;的幂基&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image023.png&quot; alt=&quot;Image 36&quot; /&gt;的线性组合的多项式函数：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image024.png&quot; alt=&quot;&quot; /&gt;, (2.1)&lt;/p&gt;
&lt;p&gt;其中&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image025.png&quot; alt=&quot;Image 38&quot; /&gt;为实系数。&lt;/p&gt;
&lt;p&gt;更常用的是由&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image022.png&quot; alt=&quot;Image 39&quot; /&gt;次Bernstein基函数来表达的多项式形式（称为Bernstein多项式或Bezier多项式）：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image026.png&quot; alt=&quot;&quot; /&gt;, (2.2)&lt;/p&gt;
&lt;p&gt;其中Bernstein基函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image027.png&quot; alt=&quot;Image 41&quot; /&gt;&lt;/p&gt;
&lt;p&gt;(2)   三角多项式类&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image022.png&quot; alt=&quot;Image 42&quot; /&gt;阶三角多项式，即由阶数不大于&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image022.png&quot; alt=&quot;Image 43&quot; /&gt;的三角函数基的线性组合的三角函数：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image028.png&quot; alt=&quot;&quot; /&gt;, (2.3)&lt;/p&gt;
&lt;p&gt;其中&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image029.png&quot; alt=&quot;Image 45&quot; /&gt;为实系数。&lt;/p&gt;
&lt;p&gt;这些是常用的逼近函数类。在逼近论中，还有许多其他形式的逼近函数类，比如由代数多项式的比构成的有理分式集（有理逼近）；按照一定条件定义的样条函数集（样条逼近）；径向基函数（RBF逼近）；由正交函数系的线性组合构成的（维数固定的）函数集等。&lt;/p&gt;
&lt;p&gt;2.2.            万能逼近定理&lt;/p&gt;
&lt;p&gt;在函数逼近论中，如果一组函数成为一组“基”函数，需要满足一些比较好的性质，比如光滑性、线性无关性、权性（所有基函数和为1）、局部支集、完备性、正性、凸性等。其中， “完备性”是指，该组函数的线性组合是否能够以任意的误差和精度来逼近给定的函数（即万能逼近性质）？&lt;/p&gt;
&lt;p&gt;对于多项式函数类，我们有以下的“万能逼近定理”：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;【定理****2.1&lt;/strong&gt; **（&lt;strong&gt;&lt;strong&gt;Weierstrass&lt;/strong&gt;&lt;/strong&gt;逼近定理）】**对&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image030.png&quot; alt=&quot;Image 46&quot; /&gt;上的任意连续函数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image021.png&quot; alt=&quot;Image 47&quot; /&gt;，及任意给定的&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image031.png&quot; alt=&quot;Image 48&quot; /&gt;，必存在&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image022.png&quot; alt=&quot;Image 49&quot; /&gt;次代数多项式&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image024.png&quot; alt=&quot;Image 50&quot; /&gt;，使得&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image032.png&quot; alt=&quot;&quot; /&gt; (2.4)&lt;/p&gt;
&lt;p&gt;Weierstrass逼近定理表明，只要次数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image022.png&quot; alt=&quot;Image 52&quot; /&gt;足够高，&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image022.png&quot; alt=&quot;Image 53&quot; /&gt;次多项式就能以任何精度逼近给定的函数。具体的构造方法有Bernstein多项式或Chebyshev多项式等，这里不详细展开。&lt;/p&gt;
&lt;p&gt;类似地，由Fourier分析理论（或Weierstrass第二逼近定理），只要阶数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image022.png&quot; alt=&quot;Image 54&quot; /&gt;足够高，&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image022.png&quot; alt=&quot;Image 55&quot; /&gt;阶三角函数就能以任何精度逼近给定的周期函数。这些理论表明，多项式函数类和三角函数类在函数空间是“稠密”的，这就保障了用这些函数类来作为逼近函数是“合理”的。&lt;/p&gt;
&lt;p&gt;2.3.            逼近函数类选择的“纠结”&lt;/p&gt;
&lt;p&gt;在一个逼近问题中选择什么样的函数类作逼近函数类，这要取决于被逼近函数本身的特点，也和逼近问题的条件、要求等因素有关。&lt;/p&gt;
&lt;p&gt;在实际应用中，这里其实存在着两个非常“纠结”的问题。&lt;/p&gt;
&lt;p&gt;第一，选择什么样的逼近函数类？一般地，需要用户对被逼近对象或样本数据有一些“先验知识”来决定选择具体的逼近函数类。比如，如果被逼近的函数具有周期性，将三角函数作为逼近函数是个合理的选择；如果被逼近的函数具有奇点，将有理函数作为逼近函数更为合理，等等。&lt;/p&gt;
&lt;p&gt;第二，即使确定了逼近函数类，选择多高的次数或阶数？比如，如果选择了多项式函数类，根据Lagrange插值定理，一定能找到一个&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image033.png&quot; alt=&quot;Image 56&quot; /&gt;次多项式来插值给定的&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image022.png&quot; alt=&quot;Image 57&quot; /&gt;个样本点。但如果&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image022.png&quot; alt=&quot;Image 58&quot; /&gt;较大，则这样得到的高次多项式很容易造成“过拟合”（Overfitting）。而如果选择的&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image022.png&quot; alt=&quot;Image 59&quot; /&gt;过小，则得到的多项式容易造成“欠拟合”（Underfitting）。如图2所示。过拟合或欠拟合函数在实际应用中是没有用的，因为它们的预测能力非常差！&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image034.jpg&quot; alt=&quot;Image 60&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图2. 用不同次数的多项式拟合样本点（蓝色点）。&lt;/p&gt;
&lt;p&gt;左：欠拟合；中：合适的拟合；右：过拟合。&lt;/p&gt;
&lt;p&gt;这里有个概念需要提及一下。一个逼近函数“表达能力”体现在该函数的未知参数（即公式(2.1)-(2.3)中的系数）与样本点个数的差，也称为“自由度”。如果逼近函数的未知参数越多，则表达能力越强。然而，在实际的拟合问题中，逼近函数的拟合能力并非越强越好。因为如果只关注样本点处的拟合误差的话，非常强的表达能力会使得样本点之外的函数值远远偏离期望的目标，反而降低拟合函数的预测性能，产生过拟合，如图2 (右)所示。&lt;/p&gt;
&lt;p&gt;人们发展出各种方法来减缓（不能完全避免）过拟合。比如，剔除样本点中的噪声（数据去噪）、增加样本点数据量（数据增广）、简化预测模型、获取额外数据进行交叉验证、或对目标函数进行适当的正则化等。在此不详细叙述。&lt;/p&gt;
&lt;p&gt;在实际应用中，如何选择拟合函数的数学模型（合适的逼近函数类及其阶数），并不是一开始就能选好，往往须通过分析确定若干模型后，再经过实际计算、比较和调整才能选到较好的模型。需要不断的试验和调试（称为“调参”过程），是个需要丰富经验的“技术活”。&lt;/p&gt;
&lt;p&gt;2.4.            最小二乘法（Least Squares Method）&lt;/p&gt;
&lt;p&gt;假设通过分析我们已经确定了逼近函数类及其次数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image022.png&quot; alt=&quot;Image 61&quot; /&gt;。记基函数（一般线性无关）为&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image035.png&quot; alt=&quot;Image 62&quot; /&gt;。记&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image036.png&quot; alt=&quot;Image 63&quot; /&gt;为这些基函数所张成的线性空间（函数空间）。则逼近函数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image020.png&quot; alt=&quot;Image 64&quot; /&gt;可记为&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image037.png&quot; alt=&quot;&quot; /&gt;, (2.5)&lt;/p&gt;
&lt;p&gt;其中&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image038.png&quot; alt=&quot;Image 66&quot; /&gt;为待定权系数。&lt;/p&gt;
&lt;p&gt;关于最小二乘法的一般提法是：对给定的一组样本点数据&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image039.png&quot; alt=&quot;Image 67&quot; /&gt;，要求在函数类&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image040.png&quot; alt=&quot;Image 68&quot; /&gt;中找一个函数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image020.png&quot; alt=&quot;Image 69&quot; /&gt;，使误差的&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image015.png&quot; alt=&quot;Image 70&quot; /&gt;模的平方&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image041.png&quot; alt=&quot;Image 71&quot; /&gt;，即式(1.3)，达到最小。&lt;/p&gt;
&lt;p&gt;对于分析极小化误差(1.3)，可得关于系数向量&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image042.png&quot; alt=&quot;Image 72&quot; /&gt;的法方程&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image043.png&quot; alt=&quot;&quot; /&gt;, (2.6)&lt;/p&gt;
&lt;p&gt;从而可求得&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image044.png&quot; alt=&quot;&quot; /&gt;. (2.7)&lt;/p&gt;
&lt;p&gt;由于法方程是一个线性方程组，因此基于最小二乘法的函数求解也称为线性回归。&lt;/p&gt;
&lt;p&gt;另外，我们可在误差项中加个权，表示不同点处的数据比重不同，此时称为加权最小二乘方法（Weighted least squares, WLS）。另外，还有移动最小二乘法（Moving least squares, MLS）等其他最小二乘法的改进方法。此处不详细叙述。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;三、&lt;/strong&gt;   &lt;strong&gt;稀疏表达和稀疏学习&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在实际应用中， 2.3节中所述的两个“纠结”问题时有发生。人们发展出不同的方法来尝试解决。&lt;/p&gt;
&lt;p&gt;3.1.            岭回归（Ridge Regression）&lt;/p&gt;
&lt;p&gt;当数据量较少的情况下，最小二乘法（线性回归）容易出现过拟合的现象，法方程的系数矩阵&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image045.png&quot; alt=&quot;Image 75&quot; /&gt;会出现奇异（非满秩），此时回归系数会变得很大，无法求解。&lt;/p&gt;
&lt;p&gt;这时在最小二乘法的结果（式(2.7)）中加一个小扰动&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image046.png&quot; alt=&quot;Image 76&quot; /&gt;，使原先无法求广义逆的情况变成可以求出其广义逆，使得问题稳定并得以求解，即&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image047.png&quot; alt=&quot;&quot; /&gt;. (3.1)&lt;/p&gt;
&lt;p&gt;事实上，这个解对应于如下极小化问题的解：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image048.png&quot; alt=&quot;&quot; /&gt;. (3.2)&lt;/p&gt;
&lt;p&gt;其中&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image049.png&quot; alt=&quot;Image 79&quot; /&gt;，参数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image050.png&quot; alt=&quot;Image 80&quot; /&gt;称为正则化参数（岭参数）。上述回归模型称为岭回归，其与最小二乘法的区别在于多了关于参数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image051.png&quot; alt=&quot;Image 81&quot; /&gt;的&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image015.png&quot; alt=&quot;Image 82&quot; /&gt;范数正则项。这一项是对&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image051.png&quot; alt=&quot;Image 83&quot; /&gt;的各个元素的总体的平衡程度，即限制这些权稀疏的方差不能太大。&lt;/p&gt;
&lt;p&gt;实际应用中，如果岭参数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image050.png&quot; alt=&quot;Image 84&quot; /&gt;选取过大，会把所有系数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image051.png&quot; alt=&quot;Image 85&quot; /&gt;均最小化（趋向于0），造成欠拟合；如果岭参数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image050.png&quot; alt=&quot;Image 86&quot; /&gt;选取过小，会导致对过拟合问题解决不当。因此岭参数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image050.png&quot; alt=&quot;Image 87&quot; /&gt;的选取也是一个技术活，需要不断调参。对于某些情形，也可以通过分析选择一个最佳的岭参数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image050.png&quot; alt=&quot;Image 88&quot; /&gt;来保证回归的效果，在此不详细叙述。&lt;/p&gt;
&lt;p&gt;3.2.            Lasso回归（Least Absolute Shrinkage and Selection Operator）&lt;/p&gt;
&lt;p&gt;Lasso回归的极小化问题为：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image052.png&quot; alt=&quot;&quot; /&gt;, (3.3)&lt;/p&gt;
&lt;p&gt;其中&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image053.png&quot; alt=&quot;Image 90&quot; /&gt;，正则项为&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image054.png&quot; alt=&quot;Image 91&quot; /&gt;范数正则项。Lasso回归能够使得系数向量&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image051.png&quot; alt=&quot;Image 92&quot; /&gt;的一些元素变为0（稀疏），因此得到的拟合函数为部分基函数的线性组合。&lt;/p&gt;
&lt;p&gt;3.3.            稀疏表达与稀疏学习&lt;/p&gt;
&lt;p&gt;根据Lasso回归的分析，我们可通过对回归变量施加&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image055.png&quot; alt=&quot;Image 93&quot; /&gt;范数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image056.png&quot; alt=&quot;Image 94&quot; /&gt;（&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image055.png&quot; alt=&quot;Image 95&quot; /&gt;范数为元素中非0元素的个数，在很多时候可以用&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image054.png&quot; alt=&quot;Image 96&quot; /&gt;范数近似）的正则项，以达到对回归变量进行稀疏化，即大部分回归变量为0（少数回归变量非0）。这种优化称为稀疏优化。也就是说，对回归变量施加&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image054.png&quot; alt=&quot;Image 97&quot; /&gt;范数能够“自动”对基函数进行选择，值为0的系数所对应的基函数对最后的逼近无贡献。这些非0的基函数反映了的样本点集合的“特征”，因此也称为特征选择。&lt;/p&gt;
&lt;p&gt;通过这种方法，为了保证防止丢失一些基函数（特征），我们往往可以多选取一些基函数（甚至可以是线性相关的），使得基函数的个数比输入向量的维数还要大，称为“超完备”基（Over-complete basis）或过冗余基，在稀疏学习中亦称为“字典”。然后通过对基函数的系数进行稀疏优化，选择出合适（非0系数）的基函数的组合来表达逼近函数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image020.png&quot; alt=&quot;Image 98&quot; /&gt;。&lt;/p&gt;
&lt;p&gt;这在一定程度上克服了2.3节中所提出的两个“纠结”的问题。因为，这时可以选取较多的基函数及较高的次数，通过稀疏优化来选择（“学习”）合适的基元函数，也称为稀疏学习。另外，基函数（字典）和稀疏系数也可以同时通过优化学习得到，称为字典学习。&lt;/p&gt;
&lt;p&gt;对于矩阵形式（比如多元函数或图像），矩阵的稀疏表现为矩阵的低秩（近似为核模很小），则对应着矩阵低秩求解问题。在此不详细叙述。&lt;/p&gt;
&lt;p&gt;稀疏学习与最近十年来流行的压缩感知（Compressive sensing）理论与方法非常相关，也是机器学习领域的一种重要方法。其深厚的理论基础由华裔数学家陶哲轩（2006年国际数学家大会菲尔兹奖得主）、斯坦福大学统计学教授David Donoho（2018年国际数学家大会高斯奖得主）等人所建立，已成功用于信号处理、图像与视频处理、语音处理等领域。在此不详细展开介绍。&lt;/p&gt;
&lt;p&gt;近年来，笔者及其团队成功地将稀疏学习的理论和方法推广用于三维几何建模与处理中，在计算机图形学领域已发表十余篇相关论文（包括在顶级期刊ACM Transactions on Graphics上发表了4篇论文）。有兴趣的读者可详细查看&lt;a href=&quot;http://staff.ustc.edu.cn/~lgliu/&quot;&gt;笔者的相关论文&lt;/a&gt;：&lt;/p&gt;
&lt;p&gt;[3-1] Xu et al. Survey on Sparsity in Geometry Modeling and Processing. Graphical Models, 82, 160-180, 2015. （三维几何处理的稀疏优化方法的综述论文）&lt;/p&gt;
&lt;p&gt;[3-2] Wang et al. Construction of Manifolds via Compatible Sparse Representations. ACM Transactions on Graphics, 35(2), Article 14: 1-10, 2016. （基于基函数稀疏选择的曲面生成）&lt;/p&gt;
&lt;p&gt;[3-3] Xiong et al. Robust Surface Reconstruction via Dictionary Learning. ACM Transactions on Graphics (Proc. Siggraph Asia), 33(6), Article 1: 1-12, 2014. （基于字典学习的曲面重建）&lt;/p&gt;
&lt;p&gt;[3-4] Zhang et al. Local Barycentric Coordinates. ACM Transactions on Graphics (Proc. Siggraph Asia), 33(6), Article 1: 1-12, 2014. （基于稀疏优化的局部重心坐标）&lt;/p&gt;
&lt;p&gt;[3-5] Hu et al. Co-Segmentation of 3D Shapes via Subspace Clustering. Computer Graphics Forum (Proc. Symposium on Geometry Processing), 31(5): 1703-1713, 2012. （基于特征稀疏选择的三维形状共同分割）&lt;/p&gt;
&lt;p&gt;[3-6] Jin et al. Unsupervised Upright Orientation of Man-Made Models. Graphical Models (Proc. GMP), 74(4): 99-108, 2012. （基于矩阵低秩优化的三维形状正向计算）&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image057.jpg&quot; alt=&quot;Image 99&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图3. 稀疏学习方法用于三维几何的建模与处理（笔者的工作）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;四、&lt;/strong&gt;   &lt;strong&gt;高维的逼近函数&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;上面讨论了映射&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image003.png&quot; alt=&quot;Image 100&quot; /&gt;为一元函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image006.png&quot; alt=&quot;Image 101&quot; /&gt;的情形。上述的有关概念和方法同样可以推广至多元函数（&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image058.png&quot; alt=&quot;Image 102&quot; /&gt;）及向量值函数（&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image059.png&quot; alt=&quot;Image 103&quot; /&gt;）的情形（如图4）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image060.jpg&quot; alt=&quot;Image 104&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图4. 不同情形（维数）的逼近函数。&lt;/p&gt;
&lt;p&gt;左上：一元函数；右上：多元函数；左下：一元向量值函数；右下：多元向量值函数。&lt;/p&gt;
&lt;p&gt;4.1.            多元函数&lt;/p&gt;
&lt;p&gt;假设有多元函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image061.png&quot; alt=&quot;Image 105&quot; /&gt;，即&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image062.png&quot; alt=&quot;Image 106&quot; /&gt;，的一组测量样本数据&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image063.png&quot; alt=&quot;Image 107&quot; /&gt;。设&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image064.png&quot; alt=&quot;Image 108&quot; /&gt;中的一组基函数为&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image065.png&quot; alt=&quot;Image 109&quot; /&gt;。要求函数&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image066.png&quot; alt=&quot;&quot; /&gt;, (4.1)&lt;/p&gt;
&lt;p&gt;使得误差&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image067.png&quot; alt=&quot;&quot; /&gt; (4.2)&lt;/p&gt;
&lt;p&gt;的平方和最小。这与式(1.3)和2.4节的极值问题完全一样。系数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image068.png&quot; alt=&quot;Image 112&quot; /&gt;, 同样通过求解法方程得到。上述过程称为多元函数的最小二乘拟合。&lt;/p&gt;
&lt;p&gt;在函数论中，高维空间&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image064.png&quot; alt=&quot;Image 113&quot; /&gt;中的基函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image065.png&quot; alt=&quot;Image 114&quot; /&gt;的构造也有许多方法。为了简便，在许多时候我们采用张量积形式的基函数，即每个基函数是各个维数的一元基函数的乘积形式。在计算机图形学和计算机辅助几何设计（CG&amp;amp;CAGD）领域经常采用。&lt;/p&gt;
&lt;p&gt;4.2.            向量值函数&lt;/p&gt;
&lt;p&gt;如果因变量有多个，即&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image059.png&quot; alt=&quot;Image 115&quot; /&gt;，称为向量值函数。比如空间螺旋线的参数方程&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image069.png&quot; alt=&quot;&quot; /&gt; (4.3)&lt;/p&gt;
&lt;p&gt;就是一个从一维到三维的向量值函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image070.png&quot; alt=&quot;Image 117&quot; /&gt;。如果自变量的维数比应变量的维数低，则自变量可看作为应变量的参数。在式(4.3)中，变量&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image071.png&quot; alt=&quot;Image 118&quot; /&gt;可看作为该螺旋线的参数。&lt;/p&gt;
&lt;p&gt;对于向量值函数，可以看成是多个一元函数或多元函数（一般共享基函数）即可，所有处理方法（包括最小二乘法）都是对每个函数分别操作的，与前面单个函数的处理方法完全一样。如果用数学方式来表达，前面的很多符号由向量变为矩阵的形式而已。详细可查看《数学分析》。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;五、&lt;/strong&gt;   &lt;strong&gt;参数曲线曲面拟合&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;前面讨论的函数所能表达的曲线比较简单，无法表达封闭和多值的曲线。因此，在计算机图形学和计算机辅助几何设计中常用参数曲线曲面（本质是向量值函数，见4.2节）来表达几何形状，用于几何造型。另外，在计算机图形学中还有一种利用隐函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image072.png&quot; alt=&quot;Image 119&quot; /&gt;来表达曲线的方式，也常用于造型中，这里不展开介绍。&lt;/p&gt;
&lt;p&gt;5.1.            二维参数曲线&lt;/p&gt;
&lt;p&gt;从数学来看，一条曲线的本征维度是一维的，不论是从哪个维度的空间来看。从直观来看，该曲线能被“拉”成为一条直线或线段；即，一条有端点的曲线能和一条线段建立1-1对应，如图5（左）所示。因此，嵌入到二维空间中的曲线可由单个参数来表达，即有如下形式的参数形式：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image073.png&quot; alt=&quot;&quot; /&gt; (5.1)&lt;/p&gt;
&lt;p&gt;其中&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image071.png&quot; alt=&quot;Image 121&quot; /&gt;为该曲线的参数，&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image074.png&quot; alt=&quot;Image 122&quot; /&gt;, &lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image075.png&quot; alt=&quot;Image 123&quot; /&gt;均为&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image071.png&quot; alt=&quot;Image 124&quot; /&gt;的函数，分别表示曲线上对应于参数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image071.png&quot; alt=&quot;Image 125&quot; /&gt;的点的两个坐标分量。一般参数曲线表达为&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image076.png&quot; alt=&quot;Image 126&quot; /&gt;。本质上，这是一个从&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image004.png&quot; alt=&quot;Image 127&quot; /&gt;到&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image077.png&quot; alt=&quot;Image 128&quot; /&gt;的向量值函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image078.png&quot; alt=&quot;Image 129&quot; /&gt;。&lt;/p&gt;
&lt;p&gt;5.2.            三维参数曲面&lt;/p&gt;
&lt;p&gt;类似地，一张二维流形曲面的本征维度是二维的。一张曲面能与平面上的一块区域建立1-1对应，如图5（右）所示。因此，嵌入到三维空间中的曲面可由两个参数来表达，即有如下形式的参数形式：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image079.png&quot; alt=&quot;&quot; /&gt; (5.2)&lt;/p&gt;
&lt;p&gt;其中&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image080.png&quot; alt=&quot;Image 131&quot; /&gt;为该曲面的参数，&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image081.png&quot; alt=&quot;Image 132&quot; /&gt;, &lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image082.png&quot; alt=&quot;Image 133&quot; /&gt;均为&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image080.png&quot; alt=&quot;Image 134&quot; /&gt;的二元函数，分别表示曲面上对应于参数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image080.png&quot; alt=&quot;Image 135&quot; /&gt;的点的三个坐标分量。一般参数曲面表达为&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image083.png&quot; alt=&quot;Image 136&quot; /&gt;。本质上，这是一个从&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image077.png&quot; alt=&quot;Image 137&quot; /&gt;到&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image084.png&quot; alt=&quot;Image 138&quot; /&gt;的向量值函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image085.png&quot; alt=&quot;Image 139&quot; /&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image086.jpg&quot; alt=&quot;Image 140&quot; /&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image087.jpg&quot; alt=&quot;Image 141&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图5. 参数曲线曲面。左：单参数曲线；右：双参数曲面。&lt;/p&gt;
&lt;p&gt;5.3.            参数曲线曲面拟合&lt;/p&gt;
&lt;p&gt;下面我们介绍如何使用参数曲线来拟合2D平面上的一组有序样本点。&lt;/p&gt;
&lt;p&gt;参数曲线拟合的问题描述如下：给定平面上一组有序样本点&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image088.png&quot; alt=&quot;Image 142&quot; /&gt;，我们希望寻求一条拟合这些点的参数曲线关系&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image076.png&quot; alt=&quot;Image 143&quot; /&gt;。&lt;/p&gt;
&lt;p&gt;如需决定一条拟合曲线，首先需要确定每个样本点&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image089.png&quot; alt=&quot;Image 144&quot; /&gt;所对应的参数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image090.png&quot; alt=&quot;Image 145&quot; /&gt;。对于一组有序的样本点，所确定的一种参数分割，称之为这组样本点的参数化。参数化的本质就是找一组恰当的参数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image090.png&quot; alt=&quot;Image 146&quot; /&gt;来匹配这一组样本点，以便使这条拟合出来的曲线美观、合理。&lt;/p&gt;
&lt;p&gt;在参数曲线拟合中，样本点的参数化是个非常基本而重要的问题。不同的参数化，对拟合曲线的形状会产生很大的影响。图6显示了三种参数化（均匀参数化、弦长参数化和中心参数化）对拟合曲线形状的影响。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image091.jpg&quot; alt=&quot;Image 147&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图6. 不同的参数化导致不同的参数曲线拟合结果。&lt;/p&gt;
&lt;p&gt;类似地，如果利用参数曲面来拟合&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image084.png&quot; alt=&quot;Image 148&quot; /&gt;空间中给定的一组样本点，首先也需要确定这些样本点在&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image077.png&quot; alt=&quot;Image 149&quot; /&gt;平面上的参数化，如图7所示。在曲面参数化中，不仅需要建立样本点及其参数的一一对应，我们还希望参数区域的网格保持原始网格的一些重要的几何特性，比如角度、边长等。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image092.jpg&quot; alt=&quot;Image 150&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图7. 三维曲面的参数化。&lt;/p&gt;
&lt;p&gt;曲面参数化是计算机图形学中非常基础且重要的一个研究课题，也一直是研究热点之一。笔者及所在的课题组也在这个课题方面作了大量的工作，有兴趣的读者可详细查看&lt;a href=&quot;http://staff.ustc.edu.cn/~lgliu/&quot;&gt;笔者的相关论文&lt;/a&gt;：&lt;/p&gt;
&lt;p&gt;（平面参数化）&lt;/p&gt;
&lt;p&gt;[5-1] Ligang Liu, Lei Zhang, Yin Xu, Craig Gotsman, Steven J. Gortler.  A Local/Global Approach to Mesh Parameterization. Computer Graphics Forum (Proc. Eurographics Symposium on Geometry Processing (SGP)), 27(5), 1495-1504, 2008.&lt;/p&gt;
&lt;p&gt;[5-2] Ligang Liu, Chunyang Ye, Ruiqi Ni, Xiao-Ming Fu. Progressive Parameterizations.  ACM Transactions on Graphics (Proc. Siggraph), 37(4), Article 41: 1-12, 2018.&lt;/p&gt;
&lt;p&gt;（球面参数化）&lt;/p&gt;
&lt;p&gt;[5-3] Xin Hu, Xiao-Ming Fu, Ligang Liu. Advanced Hierarchical Spherical Parameterizations. IEEE Transactions on Visualization and Computer Graphics, to appear, 2018.&lt;/p&gt;
&lt;p&gt;[5-4] Chunxue Wang, Xin Hu, Xiaoming Fu, Ligang Liu. Bijective Spherical Parametrization with Low Distortion. Computers&amp;amp;Graphics (Proc. SMI), 58: 161-171, 2016.&lt;/p&gt;
&lt;p&gt;[5-5] Chunxue Wang, Zheng Liu, Ligang Liu. As-Rigid-As-Possible Spherical Parameterization. Graphical Models (Proc. GMP), 76(5): 457-467, 2014.&lt;/p&gt;
&lt;p&gt;（流形参数化）&lt;/p&gt;
&lt;p&gt;[5-6] Lei Zhang, Ligang Liu, Zhongping Ji, Guojin Wang. Manifold Parameterization. Lecture Notes in Computer Science (Proc. Computer Graphics International), 4035, 160-171, 2006.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;六、&lt;/strong&gt;   &lt;strong&gt;从人工神经网络的观点来看拟合函数&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;为了讲清楚人工神经网络（Artificial Neural Network，ANN），下面我们先从神经网络的观点来看传统的拟合函数和曲线曲面。&lt;/p&gt;
&lt;p&gt;6.1.            一元函数&lt;/p&gt;
&lt;p&gt;对于一元的逼近函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image006.png&quot; alt=&quot;Image 151&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image037.png&quot; alt=&quot;&quot; /&gt;. (6.1)&lt;/p&gt;
&lt;p&gt;可以看成为如图8的三层神经网络，其中只有一个隐层。隐层上有&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image022.png&quot; alt=&quot;Image 153&quot; /&gt;个节点，激活函数分别为基函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image093.png&quot; alt=&quot;Image 154&quot; /&gt;（从这里我们将基函数称为“激活函数”）。输入层到隐层的权设为常值1（图8左），也可以看成为将输入层的值“直接代入”（不做任何变换，用虚线表示）到激活函数（图8右）。隐层到输出层的权为基函数的组合系数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image094.png&quot; alt=&quot;Image 155&quot; /&gt;。&lt;/p&gt;
&lt;p&gt;中间隐层的输出节点所形成的向量&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image095.png&quot; alt=&quot;Image 156&quot; /&gt;可看作为输入量的“特征”。&lt;/p&gt;
&lt;p&gt;现在我们开始用机器学习的语言来描述数据拟合的过程。整个神经网络就是由中间节点的激活函数及权系数所决定的一个函数(6.1)。我们称样本点&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image008.png&quot; alt=&quot;Image 157&quot; /&gt;, 为训练数据（Training set），称函数在训练数据上的误差度量为损失函数（Loss function）。通过训练数据来极小化损失函数得到权系数的过程称为“训练”或“学习”。如果损失函数取为(1.3)的形式，则网络的训练过程本质上就是前面所讲的最小二乘法（2.4节）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image096.jpg&quot; alt=&quot;Image 158&quot; /&gt;     &lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image097.jpg&quot; alt=&quot;Image 159&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图8. 一元逼近函数的神经网络。左：输入层到隐层的权系数均为常值1；&lt;/p&gt;
&lt;p&gt;右：输入层到隐层看成为“直接代入”（用虚线表示）。&lt;/p&gt;
&lt;p&gt;6.2.            多元函数和向量值函数&lt;/p&gt;
&lt;p&gt;考虑一般的逼近函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image098.png&quot; alt=&quot;Image 160&quot; /&gt;。设&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image064.png&quot; alt=&quot;Image 161&quot; /&gt;中的一组基函数为&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image065.png&quot; alt=&quot;Image 162&quot; /&gt;。则函数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image020.png&quot; alt=&quot;Image 163&quot; /&gt;可看成为如下图的一个三层的神经网络。注意这里隐层的激活函数都是&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image007.png&quot; alt=&quot;Image 164&quot; /&gt;维函数，从输入层到隐层也是直接代入。输出层的各个分量&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image099.png&quot; alt=&quot;Image 165&quot; /&gt;共享隐层的激活函数。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image100.jpg&quot; alt=&quot;Image 166&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图9. 多元函数和向量值函数的神经网络。从输入层到隐层是变量直接代入到激活函数。&lt;/p&gt;
&lt;p&gt;6.3.            拟合曲线曲面&lt;/p&gt;
&lt;p&gt;拟合曲线可以看作为一个多层的神经网络，如下图所示。输入层（样本点）到参数化是一个变换，可看成为一个神经网络；参数化到输出层是一个变换（单变量基函数组合），也是一个神经网络。输出层的两个分量共享基函数。&lt;/p&gt;
&lt;p&gt;隐层1的激活函数为双变量基函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image101.png&quot; alt=&quot;Image 167&quot; /&gt;；隐层3的激活函数为单变量基函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image102.png&quot; alt=&quot;Image 168&quot; /&gt;。中间隐层（隐层1、2、3）的输出节点所形成的向量均可分别看作为输入量在不同维数空间的“特征”。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image103.jpg&quot; alt=&quot;Image 169&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图10. 拟合曲线的神经网络。输入层（样本点）到参数化是一个神经网络变换；&lt;/p&gt;
&lt;p&gt;参数化到输出层是一个神经网络变换。&lt;/p&gt;
&lt;p&gt;类似地，拟合曲面也可以看作为一个如下图的多层神经网络。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image104.jpg&quot; alt=&quot;Image 170&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图11. 拟合曲面的神经网络。&lt;/p&gt;
&lt;p&gt;从曲线曲面拟合的过程及神经网络结构来看，如果将整个网络进行优化，则拟合的过程是寻求样本点的参数化以及表达函数的基函数，使得拟合误差极小化。在这里，我们是知道给定样本点的“本征维数”，因此，人为设置了第一个隐层的维数为1（曲线）或2（曲面）。然而，在实际应用中，我们并不知道数据的本征维数，此时需要利用其他方法（比如流形学习或降维方法）来“检测”或“猜测”隐层的维数，或者直接根据经验来不断调参和测试。&lt;/p&gt;
&lt;p&gt;需要提及的是，在计算机图形学中，传统的大部分方法是将参数化的问题和曲线曲面拟合问题分为两个问题来解决。有些工作专门做参数化，有些工作专门研究拟合问题。其中参数化的工作更为重要，直接决定了拟合曲线曲面的质量。此处不详述。&lt;/p&gt;
&lt;p&gt;需要注意的是，本节只是从神经网络的观点来看曲线曲面的参数化和拟合的问题。在计算机图形学中，我们不是简单的通过上述网络来求参数化（单个样本点），而是要考虑更多的样本点一起来求解参数化。这个后面还会详细介绍。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;七、&lt;/strong&gt;   &lt;strong&gt;通用人工神经网络&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;有了上述的理解，我们现在来理解人工神经网络就非常容易了。&lt;/p&gt;
&lt;p&gt;7.1.            函数拟合回顾&lt;/p&gt;
&lt;p&gt;回顾前面所述的函数逼近论中的函数拟合问题，始终是存在着两个“纠结”。一是选择什么样的逼近函数类，即选择什么类型的基函数？二是选择多高的次数或阶数？&lt;/p&gt;
&lt;p&gt;另一方面，如果从图8或图9的神经网络的观点来看，网络的结构设置都存在着如下两个“纠结”：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;pre&gt;&lt;code&gt; 隐层中的节点中使用什么样的激活函数（基函数）？
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;pre&gt;&lt;code&gt; 隐层中设置多少个节点（基函数的次数）？
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在传统逼近论中，上述两个问题就没有好方法来解决（第一个问题针对具体问题可预先设定），是通过不断试错来看结果的好坏来决定的。这是因为，虽然有些基函数的性质很好，但是次数或阶数过高（比如多项式基或三角函数基），就会产生震荡，也容易产生过拟合，使得拟合函数的性态不好。因此，一般不会采用次数或结束太高的基函数。为此，人们发展了分段拟合方法，即将数据分为若干段，每段分别拟合，各段的拟合函数保证一定的光滑性，称为样条函数。在逼近论和计算机图形学领域，人们发展出了很多漂亮的样条的理论与方法。&lt;/p&gt;
&lt;p&gt;对于参数类型的高维曲线曲面，还存在着参数化的问题，这时还存在另一个纠结，就是要设置多少个隐层（图10和图11）？&lt;/p&gt;
&lt;p&gt;7.2.            使用简单元函数作为激活函数&lt;/p&gt;
&lt;p&gt;为了克服上述两个纠结的问题，是否可以通过其他形式来生成“基函数”？注意到，对于任意一个非常值的一元函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image105.png&quot; alt=&quot;Image 171&quot; /&gt;，这里我们称为元函数，其沿着&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image106.png&quot; alt=&quot;Image 172&quot; /&gt;方向的平移函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image107.png&quot; alt=&quot;Image 173&quot; /&gt;以及沿着&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image106.png&quot; alt=&quot;Image 174&quot; /&gt;方向的伸缩函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image108.png&quot; alt=&quot;Image 175&quot; /&gt;都与原函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image109.png&quot; alt=&quot;Image 176&quot; /&gt;线性无关。也就是说，如果能有足够多的变换所生成的函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image110.png&quot; alt=&quot;Image 177&quot; /&gt;，其线性组合所张成的函数空间就能有充分的表达能力。那么这些函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image111.png&quot; alt=&quot;Image 178&quot; /&gt;（可能都线性无关）是否能构成逼近一般函数的“基函数”呢？&lt;/p&gt;
&lt;p&gt;一个自然的想法就是，我们能否以这个&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image105.png&quot; alt=&quot;Image 179&quot; /&gt;作为激活函数，让网络自动地去学习这些激活函数的变换&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image112.png&quot; alt=&quot;Image 180&quot; /&gt;，或者说去学习一些“基函数”，来表达所需要的拟合函数呢？这就是图12所示的神经元。变量&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image106.png&quot; alt=&quot;Image 181&quot; /&gt;乘以一个伸缩，加上一个平移（称为偏置“bias”），即变量的仿射变换，成为神经元的输入&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image113.png&quot; alt=&quot;Image 182&quot; /&gt;；然后通过激活函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image114.png&quot; alt=&quot;Image 183&quot; /&gt;复合后成为该神经元的输出&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image115.png&quot; alt=&quot;Image 184&quot; /&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image116.jpg&quot; alt=&quot;Image 185&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图12. 一元（单变量）函数的神经元结构。&lt;/p&gt;
&lt;p&gt;对于多变量的情形（多元函数），神经元的结构如图13所示。变量&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image117.png&quot; alt=&quot;Image 186&quot; /&gt;的线性组合，加上一个平移（称为偏置“bias”），即变量的仿射变换，成为神经元的输入&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image118.png&quot; alt=&quot;Image 187&quot; /&gt;；然后通过激活函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image114.png&quot; alt=&quot;Image 188&quot; /&gt;复合后成为该神经元的输出&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image115.png&quot; alt=&quot;Image 189&quot; /&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image119.jpg&quot; alt=&quot;Image 190&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图13. 多元（多变量）函数的神经元结构。&lt;/p&gt;
&lt;p&gt;不失一般性，我们下面就直接以多元函数的形式来介绍一般神经网络的结构。对于向量值函数（&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image120.png&quot; alt=&quot;Image 191&quot; /&gt;是多维的），则分别将&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image120.png&quot; alt=&quot;Image 192&quot; /&gt;的各个维数分别看作一个多元函数处理而已，这些函数共享节点（基函数）即可。&lt;/p&gt;
&lt;p&gt;7.3.            单隐层神经网络&lt;/p&gt;
&lt;p&gt;一个多元函数的神经网络的结构如图14所示，有一个输入层，一个隐层及一个输出层。输入层除了变量&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image117.png&quot; alt=&quot;Image 193&quot; /&gt;外，还有一个常数节点1；隐层包含多个节点，每个节点的激活函数都是&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image114.png&quot; alt=&quot;Image 194&quot; /&gt;，隐层的输出就是输入层节点的线性组合加偏置（即仿射变换）&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image121.png&quot; alt=&quot;Image 195&quot; /&gt;代入到激活函数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image114.png&quot; alt=&quot;Image 196&quot; /&gt;的复合函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image122.png&quot; alt=&quot;Image 197&quot; /&gt;；输出层是这些复合函数的组合&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image123.png&quot; alt=&quot;Image 198&quot; /&gt;。&lt;/p&gt;
&lt;p&gt;这个网络的所有权系数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image124.png&quot; alt=&quot;Image 199&quot; /&gt;，&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image125.png&quot; alt=&quot;Image 200&quot; /&gt;（输入层与隐层之间的权及偏置项）及&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image126.png&quot; alt=&quot;Image 201&quot; /&gt;（隐层与输出层之间的权，此层一般不用偏置项）作为这个神经网络的参数变量，需要通过极小化损失函数来求解的。这个过程称为“训练”或“学习”。&lt;/p&gt;
&lt;p&gt;与前面所述的逼近论中的拟合函数类似，网络的隐层的节点数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image022.png&quot; alt=&quot;Image 202&quot; /&gt;是需要通过不断调试和尝试来确定的。隐层的节点输出&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image127.png&quot; alt=&quot;Image 203&quot; /&gt;称为输入数据&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image128.png&quot; alt=&quot;Image 204&quot; /&gt;)的“特征”。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image129.jpg&quot; alt=&quot;Image 205&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图14. 多元（多变量）函数的单隐层神经网络结构。&lt;/p&gt;
&lt;p&gt;整个网络的学习过程本质上就是在学习所有的系数参数。最后得到的拟合函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image123.png&quot; alt=&quot;Image 206&quot; /&gt;为一些函数的线性组合表达。这些组合函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image130.png&quot; alt=&quot;Image 207&quot; /&gt;实质上就是表达函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image131.png&quot; alt=&quot;Image 208&quot; /&gt;的“基函数”！&lt;/p&gt;
&lt;p&gt;从函数逼近论的角度，我们可以这样来理解神经网络：神经网络的学习过程本质上是在学习基函数！这些基函数是通过激活函数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image114.png&quot; alt=&quot;Image 209&quot; /&gt;通过平移和伸缩（变量的仿射变换）来得到的！&lt;/p&gt;
&lt;p&gt;当然，天下没有免费的午餐。以前函数逼近论无法解决的两个“纠结”这里仍然存在：&lt;/p&gt;
&lt;p&gt;第一个纠结是如何选取基函数？这里使用激活函数，然后学习其变换来得到。&lt;/p&gt;
&lt;p&gt;第二个纠结是选择多少个基函数？这里为隐层的神经元个数。&lt;/p&gt;
&lt;p&gt;从这个观点来看，神经网络本质上就是传统的逼近论中的逼近函数的一种推广。它不是通过指定的理论完备的基函数来表达函数的，而是通过简单的基元函数（激活函数）的不断变换得到的“基函数”来表达函数的。实质上是二层复合函数。&lt;/p&gt;
&lt;p&gt;此时，我们当然要问个问题：将函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image105.png&quot; alt=&quot;Image 210&quot; /&gt;经过充分多的平移和伸缩（包括它们的组合&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image132.png&quot; alt=&quot;Image 211&quot; /&gt;）所线性张成的函数空间，其表达能力有多强？这个函数空间是否在所有函数空间是稠密的？如果问题是正确的，那么就是说，对于任何一个给定的函数，总能找到函数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image105.png&quot; alt=&quot;Image 212&quot; /&gt;的多次平移和缩放的函数，其线性组合能够逼近给定的这个函数；也就是说，图14中的神经网络只要隐层的节点数足够多，该网络所表达的函数就能逼近任意的函数。&lt;/p&gt;
&lt;p&gt;幸运的是，上述猜想在很多情况下是成立的！有以下的万能逼近定理所保证。&lt;/p&gt;
&lt;p&gt;7.4.            万能逼近定理&lt;/p&gt;
&lt;p&gt;记&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image133.png&quot; alt=&quot;Image 213&quot; /&gt;为&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image064.png&quot; alt=&quot;Image 214&quot; /&gt;空间中的单位立方体，我们在这个定义域中来描述万能逼近定理。记&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image134.png&quot; alt=&quot;Image 215&quot; /&gt;为&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image135.png&quot; alt=&quot;Image 216&quot; /&gt;上的连续函数空间，&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image136.png&quot; alt=&quot;Image 217&quot; /&gt;为&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image135.png&quot; alt=&quot;Image 218&quot; /&gt;上的可测函数空间，&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image137.png&quot; alt=&quot;Image 219&quot; /&gt;为&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image135.png&quot; alt=&quot;Image 220&quot; /&gt;上相对测度&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image138.png&quot; alt=&quot;Image 221&quot; /&gt;的可积函数空间（即&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image139.png&quot; alt=&quot;Image 222&quot; /&gt;）。&lt;/p&gt;
&lt;p&gt;设给定一元激活函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image140.png&quot; alt=&quot;Image 223&quot; /&gt;，首先给出如下定义。&lt;/p&gt;
&lt;p&gt;【定义7.1】称函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image141.png&quot; alt=&quot;Image 224&quot; /&gt;为压缩函数，如果&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image141.png&quot; alt=&quot;Image 225&quot; /&gt;单调不减，且满足&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image142.png&quot; alt=&quot;Image 226&quot; /&gt;, &lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image143.png&quot; alt=&quot;Image 227&quot; /&gt; .&lt;/p&gt;
&lt;p&gt;【定义7.2】称函数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image141.png&quot; alt=&quot;Image 228&quot; /&gt;为可分辨的，若对于有限测度&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image138.png&quot; alt=&quot;Image 229&quot; /&gt;，由&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image144.png&quot; alt=&quot;Image 230&quot; /&gt;,&lt;/p&gt;
&lt;p&gt;可得到&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image145.png&quot; alt=&quot;Image 231&quot; /&gt;&lt;/p&gt;
&lt;p&gt;【定义7.3】记&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image146.png&quot; alt=&quot;Image 232&quot; /&gt;&lt;/p&gt;
&lt;p&gt;为所有由激活函数变换及线性累加所构成的&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image007.png&quot; alt=&quot;Image 233&quot; /&gt;维函数空间（即具有&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image022.png&quot; alt=&quot;Image 234&quot; /&gt;个节点的单隐层神经网络所表达的&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image007.png&quot; alt=&quot;Image 235&quot; /&gt;维函数）。&lt;/p&gt;
&lt;p&gt;【定理7.1】若&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image147.png&quot; alt=&quot;Image 236&quot; /&gt;是压缩函数，则&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image148.png&quot; alt=&quot;Image 237&quot; /&gt;在&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image134.png&quot; alt=&quot;Image 238&quot; /&gt;中一致稠密，在&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image136.png&quot; alt=&quot;Image 239&quot; /&gt;中按如下距离&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image149.png&quot; alt=&quot;Image 240&quot; /&gt;下稠密：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image150.png&quot; alt=&quot;Image 241&quot; /&gt;.&lt;/p&gt;
&lt;p&gt;【定理7.2】若&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image147.png&quot; alt=&quot;Image 242&quot; /&gt;是可分辨的，则&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image148.png&quot; alt=&quot;Image 243&quot; /&gt;在&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image134.png&quot; alt=&quot;Image 244&quot; /&gt;中按连续函数距离下稠密。&lt;/p&gt;
&lt;p&gt;【定理7.3】若&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image147.png&quot; alt=&quot;Image 245&quot; /&gt;是连续有界的非常值函数，则&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image148.png&quot; alt=&quot;Image 246&quot; /&gt;在&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image134.png&quot; alt=&quot;Image 247&quot; /&gt;中稠密。&lt;/p&gt;
&lt;p&gt;【定理7.4】若&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image147.png&quot; alt=&quot;Image 248&quot; /&gt;是无界的非常值函数，则&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image148.png&quot; alt=&quot;Image 249&quot; /&gt;在&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image137.png&quot; alt=&quot;Image 250&quot; /&gt;中稠密。&lt;/p&gt;
&lt;p&gt;上述定理这里就不详细解释，稍微有些实分析和泛函分析的基础就能看懂。用通俗的话来说，就是：对任意给定的一个&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image064.png&quot; alt=&quot;Image 251&quot; /&gt;中的函数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image021.png&quot; alt=&quot;Image 252&quot; /&gt;，只要项数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image022.png&quot; alt=&quot;Image 253&quot; /&gt;足够多，&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image148.png&quot; alt=&quot;Image 254&quot; /&gt;中就存在一个函数&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image020.png&quot; alt=&quot;Image 255&quot; /&gt;，使得&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image020.png&quot; alt=&quot;Image 256&quot; /&gt;在一定精度下逼近&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image021.png&quot; alt=&quot;Image 257&quot; /&gt;。也就是说，图14所表达的单隐层的神经网络所表达的&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image007.png&quot; alt=&quot;Image 258&quot; /&gt;维函数能够逼近&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image064.png&quot; alt=&quot;Image 259&quot; /&gt;中的任意一个函数。&lt;/p&gt;
&lt;p&gt;根据上述定理可知，函数&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image147.png&quot; alt=&quot;Image 260&quot; /&gt;只要满足一定条件即可作为一个合适的激活函数。但还是存在着一个巨大的“纠结”，就是隐层中的节点数量该取多大，仍是未知的。在实际中，这个是要不断通过测试和调试来决定的，这个过程称为“调参”。&lt;/p&gt;
&lt;p&gt;定理7.1-7.4的详细证明可见以下论文。&lt;/p&gt;
&lt;p&gt;[7-1] K. Hornik, et al. Multilayer feedforward networks are universal approximations. Neural Networks, 2: 359-366, 1989.&lt;/p&gt;
&lt;p&gt;[7-2] G. Cybenko. Approximation by superpositions of a sigmoidal function. Math. Control Signals System, 2: 303-314, 1989.&lt;/p&gt;
&lt;p&gt;[7-3] K. Hornik. Approximation capabilities of multilayer feedforward networks. Neural Networks, 4: 251-257, 1991.&lt;/p&gt;
&lt;p&gt;7.5.            深度神经网络：多隐层神经网络&lt;/p&gt;
&lt;p&gt;将上述的神经网络的隐层进一步推广到多层，即可得到多隐层的神经网络，即深度神经网络（深度的意思就是多层）。其网络结构如图15所示。&lt;/p&gt;
&lt;p&gt;由于每相邻的两层的节点都是全部连接的，因此在机器学习领域，也叫做全连接神经网络或多层感知机（Multi-Layer Perceptron, MLP）。&lt;/p&gt;
&lt;p&gt;图15只是显示了&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image151.png&quot; alt=&quot;Image 261&quot; /&gt;的函数的神经网络的结构。对于一般的&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image152.png&quot; alt=&quot;Image 262&quot; /&gt;的向量值函数，只要将最后输出层多几个节点即可，即，每个维度分量都是一个&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image151.png&quot; alt=&quot;Image 263&quot; /&gt;的函数，共享了前面的所有网络层结构。&lt;/p&gt;
&lt;p&gt;每个隐层的输出&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image153.png&quot; alt=&quot;Image 264&quot; /&gt; 都可以看成输入数据&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image154.png&quot; alt=&quot;Image 265&quot; /&gt;在不同维数空间&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image155.png&quot; alt=&quot;Image 266&quot; /&gt;下的 “特征”。&lt;/p&gt;
&lt;p&gt;注意不要在输出层使用激活函数。因为最后的输出就是那些基函数的线性组合表达即可。&lt;/p&gt;
&lt;p&gt;从数学形式上看，深度神经网络就是一个多层复合函数。可以证明（Kolmogorov–Arnold表示定理），任意一个多元函数可以表示成若干个单变量函数的复合（事实上，只需要三层网络即可）。这为使用深度神经网络用来逼近任意高维函数提供了理论基础。但遗憾的是，该定理只证明了复合函数逼近任意函数的存在性，但具体使用什么样的函数未可知。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image156.jpg&quot; alt=&quot;Image 267&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图15. 多元（多变量）函数的深度神经网络结构。&lt;/p&gt;
&lt;p&gt;因此，深度神经网络也能很强地表达&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image064.png&quot; alt=&quot;Image 268&quot; /&gt;中的任意的函数。但在具体应用中，选用多少个隐层，每一隐层选用多少节点，这些都是需要根据损失函数的进行不断调试的。这个过程也称为“调参”。另外，从这个观点可以容易理解各种深度神经网络的工作机制，包括一般深度神经网络、卷积神经网络（CNN）、RBF神经网络、ELM等。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;八、&lt;/strong&gt;   &lt;strong&gt;深入理解深度神经网络&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;8.1.            激活函数&lt;/p&gt;
&lt;p&gt;由7.4节中的万能逼近定理可知，激活函数的选择可以很多种。常用的激活函数如图16所示。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image157.jpg&quot; alt=&quot;Image 269&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图16. 常用的激活函数。&lt;/p&gt;
&lt;p&gt;在早期，Sigmoid函数和tanh函数是人们经常使用的激活函数。近年来，随着神经网络的隐层不断增加后，人们偏向于使用ReLU函数作为激活函数，这是因为ReLU函数的在x轴正向的导数是1，不容易产生梯度消失问题（见8.3节）。这里值得一提的是，如果使用ReLU函数作为激活函数，则最后生成的拟合函数为分片线性函数。&lt;/p&gt;
&lt;p&gt;关于激活函数的理解和讨论，机器学习领域及互联网上有很多文章进行过解释，都是解释为“激活函数的主要作用是提供网络的非线性建模能力，提供了分层的非线性映射学习能力”等等。我们从逼近论的角度，将非线性激活函数理解为拟合函数的“基函数”生成器（如果激活函数为线性的，则无法生成表达非线性函数的基！），训练神经网络就是在学习这些基函数，这是一种全新的观点，也是非常容易理解的。&lt;/p&gt;
&lt;p&gt;8.2.            反向传播算法（BP优化算法）&lt;/p&gt;
&lt;p&gt;从数学上看，深度神经网络就是一个多层复合函数。在机器学习中，这个复合函数的好坏依赖于对目标函数最大化或者最小化的过程，我们常常把最小化的目标函数称为损失函数（Loss function），它主要用于衡量机器学习模型（此处为深度神经网络）的预测能力。常见的损失函数有均方误差（L2误差）、平均绝对误差（L1误差）、分位数损失、交叉熵、对比损失等。损失函数的选取依赖于参数的数量、异常值、机器学习算法、梯度下降的效率、导数求取的难易和预测的置信度等若干方面。这里就不展开讨论。&lt;/p&gt;
&lt;p&gt;给定了一批训练数据，计算神经网络的问题就是通过极小化损失函数来找到网络中的所有权值参数（包括偏置参数）。这个过程本质上就是利用这个神经网络函数来拟合这些数据，这个过程也称为“训练”或“学习”。&lt;/p&gt;
&lt;p&gt;误差反向传播算法（Error Back Propagation，BP）是神经网络训练时采用的一种通用方法。本质是随机梯度下降法。最早见于如下论文：&lt;/p&gt;
&lt;p&gt;[8-1] David E. Rumelhart, Geoffrey E. Hinton, and Ronald J. Williams. Learning internal representations by back-propagating errors. Nature, 323(99): 533-536, 1986.&lt;/p&gt;
&lt;p&gt;由于整个网络是一个复合函数，因此，训练的过程就是不断地应用“复合函数求导”（链式法则）及“梯度下降法”。反向传播算法从神经网络的输出层开始，利用递推公式根据后一层的误差计算本层的误差，通过误差计算本层参数的梯度值，然后将差项传播到前一层。然后根据这些误差来更新这些系数参数。&lt;/p&gt;
&lt;p&gt;值得一提的是，梯度下降法并不是唯一的优化方法。也有不少人使用其他优化方法，比如ADMM方法，来作为优化器优化深度神经网络的求解。&lt;/p&gt;
&lt;p&gt;8.3.            什么是好的激活函数？&lt;/p&gt;
&lt;p&gt;由万能逼近定理可知，只要网络规模设计得当，使用非线性函数作为激活函数（比如8.1节中常用的激活函数）的逼近能力都能够得到保证。&lt;/p&gt;
&lt;p&gt;然后，由上一节的反向传播算法可知，算法过程中计算误差项时每一层都要乘以本层激活函数的导数，因此，会发生很多次的导数连乘。如果激活函数的导数的绝对值小于1，多次连乘之后误差项很快会衰减到接近于0；而参数的梯度值由误差项计算得到，从而导致前面层的权重梯度接近于0，参数不能得到有效更新，这称为“梯度消失”问题。与之相反，如果激活函数导数的绝对值大于1，多次连乘后权重值会趋向于非常大的数，这称为“梯度爆炸”。长期以来，这两个问题一直困扰神经网络层次无法变得很深。&lt;/p&gt;
&lt;p&gt;最近几年，ReLU函数被经常使用作为深度神经网络的激活函数。有两个主要理由：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;pre&gt;&lt;code&gt; 该函数的导数为sgn（忽略在0处不可导的情形），计算简单，在正半轴导数为1，有效的缓解了梯度消失问题；
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;pre&gt;&lt;code&gt; 虽然它是一个分段线性函数，但它具有非线性逼近能力；使用ReLU激活函数的深度网络的本质是用分段（分片）线性函数（超平面）去逼近目标。
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;后来，人们在ReLU的基础上又改进得到各种其他形式的激活函数，包括ELU、PReLU等。&lt;/p&gt;
&lt;p&gt;8.4.            多个隐层的几何意义&lt;/p&gt;
&lt;p&gt;现在我们已经理解了深度神经网络的本质，就是一个复杂的多层复合函数。训练的过程就是在求激活函数变换得到的“基函数”，因此，训练神经网络的本质就是在“学习基函数”。这跟稀疏学习中的“字典学习”非常类似。殊途同归！&lt;/p&gt;
&lt;p&gt;我们来看一下深度神经网络所表达的拟合函数与传统所用的拟合函数（2.1节）的类比与区别：&lt;/p&gt;
&lt;p&gt;(1)   传统的拟合函数是在某一函数类（由某些具有良好性质的基函数所张成的函数空间）中进行选择。基函数是预先给定的，个数也是预先设定的（或者稀疏选择的）。系统的求解变量是基函数组合系数；&lt;/p&gt;
&lt;p&gt;(2)   神经网络所表达的拟合函数是由某一激活函数对变量的平移和伸缩变换而来，个数是预先设定的（神经元个数）。系统的求解变量是基函数的变换，因此可以看成是在学习基函数；&lt;/p&gt;
&lt;p&gt;(3)   传统的拟合函数也是一种神经网络（见第6节），因此也可以拓展成深度网络（复合函数），但问题是次数或阶数经过复合后会变得非常高，更易造成过拟合；&lt;/p&gt;
&lt;p&gt;(4)   多层神经网络中的不同层所用的激活函数也可以使用传统的基函数。因此，还可推广为更一般的深度神经网络。&lt;/p&gt;
&lt;p&gt;那么为何要用多个隐层呢？事实上，通过6.3节的内容就不难理解了。每个隐层就是将前一层的数据作为输入（当然也包括输入层数据）在当前这个维数的空间中的一种映射，本质上就是在做“参数化”！&lt;/p&gt;
&lt;p&gt;如果当前层的维数小于上一层的维数，就相当于将上一层的数据参数化到低维空间中。当然也可以参数化到高维空间，以提高自由度。&lt;/p&gt;
&lt;p&gt;在6.3节中，对于三维曲面，我们已知它是二维流形，因此，我们知道将其映射到二维作为参数域就很自然了。因此有了图11这样的网络结构。&lt;/p&gt;
&lt;p&gt;但对于一般的数据（比如人脸数据），是在背景空间（ambient space）上观测的，可能数据的维数非常高（比如1000x1000的图像按照像素个数的维数达到100万维）。但这些数据并不会充满整个高维空间，会具有低维的结构（称为本征维数），即数据落在一个低维子空间（或低维流形）上，并呈现一定的概率分布。从数据的角度来看，一个嵌入到高维空间的低维流形本质上就是一个参数曲面，参数域是那个低维空间。因此，将高维数据参数化到低维的空间是可行的。&lt;/p&gt;
&lt;p&gt;这里也出现了两个纠结的问题。&lt;/p&gt;
&lt;p&gt;第一，对于一个实际数据拟合问题，应该设置多少个隐层？&lt;/p&gt;
&lt;p&gt;第二，每个隐层应该设置多少个节点（该隐层的维数）？&lt;/p&gt;
&lt;p&gt;在机器学习领域，隐层的层数称为网络的深度，隐层的维数成为网络的宽度。对于基于深度神经网络的学习，到底是越深越好，还是越宽越好？&lt;/p&gt;
&lt;p&gt;从数学上来看，网络越深，表示一个复杂的函数可以经过多次参数化的变换，映射到最终的目标。这个是合理的。举个例子，比如我们想将一个三维网格曲面参数化到一个平面，如果这个输入的曲面比较复杂，开口（参数化边界）很小，则要将曲面一次性展开（&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image084.png&quot; alt=&quot;Image 270&quot; /&gt;到&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image077.png&quot; alt=&quot;Image 271&quot; /&gt;的映射）比较困难。此时，可以多进行几次从&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image084.png&quot; alt=&quot;Image 272&quot; /&gt;到&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image084.png&quot; alt=&quot;Image 273&quot; /&gt;的映射，将曲面先在&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image084.png&quot; alt=&quot;Image 274&quot; /&gt;慢慢张开，每次张开的映射比较容易表达和计算。最后再映射到&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image077.png&quot; alt=&quot;Image 275&quot; /&gt;上就相对容易了，当然还可进行多次从&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image077.png&quot; alt=&quot;Image 276&quot; /&gt;到&lt;img src=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/DL/What_is_DeepLearning.files/image077.png&quot; alt=&quot;Image 277&quot; /&gt;的映射，生成更好的参数化。注意其中任何一个映射都可以是用一个神经网络来表达。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image158.jpg&quot; alt=&quot;Image 278&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图17. 带有特征的曲面的拟合。(a) 原始输入三维数据；(b) 为(a)的简单参数化（Floater参数化）；(c) 为优化过后的参数化；(d) 最后的拟合曲面。&lt;/p&gt;
&lt;p&gt;在计算机图形学中，我们针对曲面展开及拟合问题，在如下的工作中用到了这种思想。&lt;/p&gt;
&lt;p&gt;[8-2] Linlin Xu, Ruimin Wang, Zhouwang Yang, Jiansong Deng, Falai Chen, Ligang Liu. Surface Approximation via Sparse Representation and Parameterization Optimization. Computer-Aided Design (Proc. SPM), 78: 179-187, 2016.&lt;/p&gt;
&lt;p&gt;如图17所示，(a) 为一个带有尖锐特征的输入点云，如果将其简单参数化为(b)，在其上构建的拟合曲面很难表现曲面的尖锐特征。这时我们对(b)中的参数化再做一个映射（优化）为(c)，这时在其上做的拟合曲面则能很好地表现出尖锐特征。注意，这里生成拟合曲面的基函数中我们采用了非光滑基函数（采用非光滑基函数来表现曲面特征的思想首次在我们的如下论文中所采用）。因此，上述工作本质上是一个使用5层神经网络（3个隐层）来优化拟合曲面。&lt;/p&gt;
&lt;p&gt;[8-3] Ruimin Wang, Ligang Liu, Zhouwang Yang, Kang Wang, Wen Shan, Jiansong Deng, Falai Chen.  Construction of Manifolds via Compatible Sparse Representations. ACM Transactions on Graphics, 35(2), Article 14: 1-10, 2016.&lt;/p&gt;
&lt;p&gt;这里顺便提一下，在计算机图形学中，最近一些年有不少工作在做曲面参数化的优化工作（比如满足无翻转、低扭曲等约束）。从机器学习的观点来看，就是在做更多的参数映射的优化计算。当然，这些工作并不能简单地看成一个深度神经网络来做。这是因为，对参数化的问题，我们是知道曲面（所有数据）的整体结构的，而不只是一些离散的采样点。因此，我们在做参数化优化的时候，我们可以充分利用曲面的整体结构来得到一些几何度量来满足各种约束，而这些是神经网络优化所做不到的！&lt;/p&gt;
&lt;p&gt;总之，对于第一个问题，隐层越多，表示网络越深，确实会使得最后的映射带来更好的表现。其数学本质是将输入数据不断在不同的空间中进行参数化映射。最后得到的映射（可能非常复杂的映射）表达为若干个相对简单映射的复合。对于多隐层的解释和讨论，机器学习领域及网上有很多文章进行过解释，大部分都解释为“提取数据的特征”等等。我们从逼近论的角度（结合三维曲面拟合的例子），将多隐层优化看成数据在不同维数空间的参数化，是非常容易直观理解的。&lt;/p&gt;
&lt;p&gt;对第二个问题，每个隐层的具体的节点数或维数，该如何设置呢？对于一般的数据这个就很难直观确定了，一般要根据经验。当然，也有一些办法来进行指导，我们将在下一节中理解。&lt;/p&gt;
&lt;p&gt;8.5.            流形学习（数据降维）简介&lt;/p&gt;
&lt;p&gt;对于一般的数据，我们并不知道其本征维数（即参数域空间），那么映射（参数化）到多少维空间是合适的呢？&lt;/p&gt;
&lt;p&gt;事实上，这个也是个非常纠结的问题！这个问题就是寻求高维数据的本征维数，在机器学习领域称为流形学习（Manifold learning），或降维问题（Dimension reduction）。如图18所示，数据是在三维空间给出的（B），每个点是3个坐标，看起来是三维数据；但其本质上位于三维空间的一张曲面上，即二维流形曲面上（A），其本征维数是2。因此，可以将其一一映射到平面上（C）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image159.jpg&quot; alt=&quot;Image 279&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图18. 流行学习。（图片来自论文[8-5]）&lt;/p&gt;
&lt;p&gt;提到流形学习，不能不提到如下的两篇开山之作（同时发在Science 2000的文章）：&lt;/p&gt;
&lt;p&gt;[8-4] Roweis, Sam T and Saul, Lawrence K. Nonlinear dimensionality reduction by locally linear embedding. Science, 290(5500). 2000: 2323-2326.&lt;/p&gt;
&lt;p&gt;[8-5] Tenenbaum, Joshua B and De Silva, Vin and Langford, John C. A global geometric framework for nonlinear dimensionality reduction. Science, 290(5500). 2000: 2319-2323.&lt;/p&gt;
&lt;p&gt;流形学习在本世纪初的前一个十年是一个研究热点（由上面两篇Science论文带起来的）。至今已发展出了许多方法，从简单的线性方法，比如PCA；到后面的非线性方法，比如局部线性嵌入（LLE），等距映射法（Isomap），Laplace特征映射，局部保投影法（LPP）等。这里不详细介绍。&lt;/p&gt;
&lt;p&gt;需要指出的是，正如第6节所讲的三维曲面参数化的计算，我们计算数据的本征维数的时候，是需要利用所有数据的信息及其几何或拓扑结构一起来分析的，而不能像神经网络训练那样，仅仅将数据灌到神经网络中去更新权系数。&lt;/p&gt;
&lt;p&gt;8.6.            端对端学习（End-to-end learning）&lt;/p&gt;
&lt;p&gt;在传统的机器学习中，很多任务的输入数据的维数都非常大，不易直接处理。往往需要先降到合适的维数，然后再选择合适的预测模型来做拟合。&lt;/p&gt;
&lt;p&gt;传统机器学习的流程一般由两个主要的模块组成。第一个模块称为特征工程，将原始输入数据（高维向量）变换为一个低维向量，即，用这个低维向量来作为表达输入数据的特征（或描述子，feature or descriptor）。不同的人有不同的方法来计算这个低维特征，称为特征抽取（Feature extraction），如图19显示了不同的图像特征抽取方法。各种计算的特征都有一定的实用范围，因此，有人就提出如何选择或组合各种特征得到更好的特征，这是特征工程的另一个子问题，称为特征选择（Feature selection）。针对三维形状分割，我们发现对三维局部块的众多描述子并不是串联起来一起使用更好，而是针对不同的形状的部位使用不同的描述子会更好，于是我们使用稀疏选择的方法来选择形状描述子用于形状分割，详细可见如下论文。&lt;/p&gt;
&lt;p&gt;[8-6] Ruizhen Hu, Lubin Fan, Ligang Liu.  Co-Segmentation of 3D Shapes via Subspace Clustering. Computer Graphics Forum (Proc. Symposium on Geometry Processing), 31(5): 1703-1713, 2012.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image160.jpg&quot; alt=&quot;Image 280: 1365435491_6508.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图19. 图像的各种特征抽取方法。&lt;/p&gt;
&lt;p&gt;由于这种特征是通过人为设计的算法来得到的，因此这种特征称为人工特征（Hand-crafted features）。人工特征的抽取需要人们对输入数据的认知或者领域知识（Domain knowledge），因此在很多情况下会局限于人的经验和认知。&lt;/p&gt;
&lt;p&gt;第二个模块称为预测模型，即选用什么样的预测方法来拟合给定的数据，我们前面所讲的拟合就是指这个过程。预测模型的目标就是希望学习到的模型在预测未知目标时越精确越好。一般要考虑模型的复杂度及精确度等因素。在机器学习领域有非常多的方法，这里不一一介绍。&lt;/p&gt;
&lt;p&gt;上述两个模块中的每个模块都是一个独立的任务，其结果的好坏会影响到下一步骤，从而影响整个训练的结果，这是非端到端的，如图20（上）所示。&lt;/p&gt;
&lt;p&gt;特征提取的好坏异常关键，甚至比预测模型还重要。举个例子，对一系列人的数据分类，分类结果是性别（男或女），如果你提取的特征是头发的颜色，无论分类算法如何，分类效果都不会好；如果你提取的特征是头发的长短，这个特征就会好很多，但是还是会有错误；如果你提取了一个超强特征，比如染色体的数据，那你的分类基本就不会错了。&lt;/p&gt;
&lt;p&gt;这就意味着，特征需要足够的经验去设计，这在数据量越来越大的情况下也越来越困难。于是就出现了端到端的网络，特征可以自己去学习。所以特征提取这一步也就融入到算法当中，不需要人来干预了。即不需要将任务分为多个步骤分步去解决，而是从输入端的数据直接得到输出端的结果。前面介绍的深度神经网络就是一个端到端的学习方法。如图20（下）所示。&lt;/p&gt;
&lt;p&gt;端到端学习的好处在于，使学习模型从原始输入到最终输出，直接让数据“说话”，不需人工设计的模块；给模型更多可以根据数据自动调节的空间，增加模型的整体契合度。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image161.jpg&quot; alt=&quot;Image 281&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图20. 非端到端的学习（上）与端到端的学习（下）。&lt;/p&gt;
&lt;p&gt;但端到端学习也有不足。第一，端到端的深度神经网络需要大量的样本数据才能工作得很好，因此很多公司都在花费大量的人力物力去生成标注数据（一般通过人工标注，催生了很多专门做数据标注的外包公司）；第二，人工设计的特征并不是都不能用的，有些人工特征还是能代表着人类智能的，是可以用来作为合理的特征的，而端到端的学习无法用这些特征。当然，通过适当的改造和结合，也可以集成人工特征到深度神经网络中，这里就不展开讨论。&lt;/p&gt;
&lt;p&gt;8.7.            深度学习成功的原因&lt;/p&gt;
&lt;p&gt;基于深度神经网络的端到端学习在最近几年取得很大的成功，被大量应用与计算机视觉、语音识别、自然语音处理、医学图像处理等领域中。从数学本质上来看，神经网络就是一个映射函数而已，在上世纪50年代就有了感知机，但为什么以前没有火呢？ 主要有以下的两方面的原因。&lt;/p&gt;
&lt;p&gt;第一，之前没有那么大规模的数据量；&lt;/p&gt;
&lt;p&gt;第二，以前的工程技术（先进优化算法及支持大规模并行计算的GPU硬件）无法求解的很深的神经网络。&lt;/p&gt;
&lt;p&gt;因此，在上个世纪90年代，各种浅层模型大行其道，比如只有一层隐层的支撑向量机（Support Vector Machine，SVM）以及没有隐层的逻辑回归方法（Logistic Regression，LR）等。&lt;/p&gt;
&lt;p&gt;直到最近几年，随着各种传感器的大量使用以及移动互联网的广泛应用，能够获取和产生海量（PB级甚至ZB级）的数据（比如文本、图像、语音等）。特别是ImageNet图像数据库的诞生以及基于该数据库的各种竞赛，直接将计算机视觉领域中的深度学习的研究与应用推向了“落地”，催生了大量的计算机视觉的人工智能公司。&lt;/p&gt;
&lt;p&gt;8.8.            过拟合&lt;/p&gt;
&lt;p&gt;自从深度学习火了后，各种深度神经网络（或CNN网络）随之产生了，比如2012年的AlexNet有8层；2014年的VGG-19有19层；2014年的GoogleNet有22层；2015年的ResNet有152层！甚至还出现了上千层的深度神经网络！&lt;/p&gt;
&lt;p&gt;从数学上可知，拟合函数所带的参数的个数与样本数据的个数之间的差代表着这个拟合函数的“自由度”。网络越来越“深”后，拟合模型中的可调整参数的数量就非常大，通常能达到百万计甚至几十亿级。因此，层数很大的深度网络（模型过于复杂）能够表达一个自由度非常大的函数空间，甚至远高于目标函数空间（过完备空间），即自由度远大于0。这样就很容易导致过拟合（Overfitting），如前面所讨论过的图2（右）所示。&lt;/p&gt;
&lt;p&gt;过拟合可以使得拟合模型能够插值所有样本数据（拟合误差为0！）。但拟合误差为0不代表模型就是好的，因为模型只在训练集上表现好；由于模型拟合了训练样本数据中的噪声，使得它在测试集上表现可能不好，泛化性能差。为此，人们采取了不同的方法来缓解过拟合（无法完全避免），比如正则化、数据增广、Dropout、网络剪枝等。&lt;/p&gt;
&lt;p&gt;在使用深度神经网络来做深度学习的应用中，很多工作都是直接使用现有的深度神经网络，或者改造现有的深度神经网络。如果网络设计不够好，大部分结果都可能有过拟合的现象。&lt;/p&gt;
&lt;p&gt;在实际应用中，我们可以挑选样本数据中的一部分作为训练数据集，其他的作为测试数据集。如果网络在训练数据集上表现好（即损失函数很小），而在测试数据集上表现不够好，那么就可能发生了过拟合，此时就适当减少网络的层数或者节点数。这个过程是需要有耐心，可能需要花费很长时间才能调到一个合适的网络。需要靠感觉、经验和运气。因此，有人戏称调试深度神经网络的过程为“炼丹”。&lt;/p&gt;
&lt;p&gt;8.9.            类比神经科学的解释&lt;/p&gt;
&lt;p&gt;我们已从函数逼近论的角度来理解了人工神经网络本质是传统逼近函数的一个推广，由人工选取基函数到自动学习基函数，由人工提取特征到自动计算特征（参数化），能够较容易理解人工神经网络学习是如何工作的。&lt;/p&gt;
&lt;p&gt;在机器学习领域，人们从生物神经网络的角度来解释和理解人工神经网络的工作原理，将人工神经网络看成为一个可以模拟人脑工作行为的函数。&lt;/p&gt;
&lt;p&gt;在生物神经科学（Neuroscience，包括脑科学、认知神经科学等）的研究中，人们发现，人体的神经元通过树突接受信号。这些信息或信号随后被传递到脑细胞或细胞体。在细胞体内部，所有的信息将被加工生成一个输出。当该输出结果达到某一阈值时，神经元就会兴奋，并通过轴突传递信息，然后通过突触传递到其他相连的神经元。神经元间传输的信号量取决于连接的强度。如图21（左）。&lt;/p&gt;
&lt;p&gt;我们来类比人工神经网络：如果把树突想象成人工智能网络中基于突触感知器的被赋予了权重的输入。然后，该输入在人工智能网络的“细胞体”（神经元）中相加。如果得出的输出值大于阈值单元，那么神经元就会“兴奋”（激活），并将输出传递到其它神经元，如图21（右）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image162.jpg&quot; alt=&quot;Image 282&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图21. 左：人脑神经元结构；右：从生物神经网络类比得出的人工神经元结构。&lt;/p&gt;
&lt;p&gt;（图片来自互联网）&lt;/p&gt;
&lt;p&gt;在计算机视觉领域，人们也从视觉神经科学（Visual Neuroscience）中类比来解释了在计算机视觉领域用得最多的卷积神经网络（CNN）的工作机理。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image163.jpg&quot; alt=&quot;Image 283&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图22. 视觉皮层结构。（图片来自互联网）&lt;/p&gt;
&lt;p&gt;由视觉机理的研究发现，动物大脑的视觉皮层具有分层结构。眼睛将看到的景象成像在视网膜上，视网膜把光学信号转换成电信号，传递到大脑的视觉皮层（Visual cortex），视觉皮层是大脑中负责处理视觉信号的部分。1959年，有科学家进行了一次实验，他们在猫的大脑初级视觉皮层内插入电极，在猫的眼前展示各种形状、空间位置、角度的光带，然后测量猫大脑神经元放出的电信号。实验发现，当光带处于某一位置和角度时，电信号最为强烈；不同的神经元对各种空间位置和方向偏好不同。这一成果后来让他们获得了诺贝尔奖。&lt;/p&gt;
&lt;p&gt;目前已经证明，视觉皮层具有层次结构。从视网膜传来的信号首先到达初级视觉皮层（primary visual cortex），即V1皮层。V1皮层简单神经元对一些细节、特定方向的图像信号敏感。V1皮层处理之后，将信号传导到V2皮层。V2皮层将边缘和轮廓信息表示成简单形状，然后由V4皮层中的神经元进行处理，它颜色信息敏感。复杂物体最终在IT皮层（inferior temporal cortex）被表示出来。&lt;/p&gt;
&lt;p&gt;卷积神经网络可以看成是上面这种机制的简单模仿。它由多个卷积层构成，每个卷积层包含多个卷积核，用这些卷积核从左向右、从上往下依次扫描整个图像，得到称为特征图（feature map）的输出数据。网络前面的卷积层捕捉图像局部、细节信息，有小的感受野，即输出图像的每个像素只利用输入图像很小的一个范围。后面的卷积层感受野逐层加大，用于捕获图像更复杂，更抽象的信息。经过多个卷积层的运算，最后得到图像在各个不同尺度的抽象表示（由底层到高层的特征表达），如图23所示。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image164.jpg&quot; alt=&quot;Image 284&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图23. 基于卷积神经网络的深度学习所得到的人脸图像的分层特征。&lt;/p&gt;
&lt;p&gt;（图片来自于Stanford大学的论文）&lt;/p&gt;
&lt;p&gt;笔者认为，利用神经科学的神经元或神经网络来解释深度学习中的人工神经网络，这仅仅是类比而已。从我们的分析可知，深度学习中的人工神经网络并没有真正的认知和学习！如果我们人类对自己的认知系统无法完全了解的话，我们是很难发展出真正的人工智能技术。&lt;/p&gt;
&lt;p&gt;8.10.        深度人工神经网络的局限：保持结构的映射&lt;/p&gt;
&lt;p&gt;我们从数学上理解了深度人工神经网络本质上是表达不同维数空间之间的一个映射（函数）。给了一些样本点后，通过调整网络的参数权系数，不断极小化损失函数，从而达到最好的拟合结果得到了拟合函数。&lt;/p&gt;
&lt;p&gt;这个拟合过程只极小化了逐点的误差或者累积逐点误差，而无法考虑点与周围点之间的其他信息（比如邻域几何结构、局部几何度量、流形的整体拓扑结构等）。如果要考虑点之间的几何与拓扑的结构信息，则深度人工神经网络就无能为力（当然一定要改造也是可以的），这时就需要其他的数学方法了。有点像数学分析中，逐点收敛和一致收敛，逐点连续和一致连续的区别。&lt;/p&gt;
&lt;p&gt;例如，前面介绍的流形学习中，LLE方法保持每个样本点与它相邻的多个点的线性组合（体现了局部线性）来重构低维空间的点的分布，相当于用分段的线性面片近似代替复杂的几何形状，样本投影到低维空间保持这种线性重构关系，如图24（左）所示。Isomap方法希望保持数据在低维空间的映射之后能够保持流形上的测地线距离，即全局的几何结构，如图24（右）所示。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image165.jpg&quot; alt=&quot;Image 285&quot; /&gt;    &lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image166.jpg&quot; alt=&quot;Image 286&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图24. 流形学习。左：保持局部的几何信息（LLE）；右：保持全局的距离信息（Isomap）。&lt;/p&gt;
&lt;p&gt;（图片分别来自于论文[8-4]和[8-5]）&lt;/p&gt;
&lt;p&gt;再如，在计算机图形学和几何处理领域，我们做的很多映射（比如三维网格曲面的参数化），也需要保持曲面上的某些几何性质（保角度、保面积、保形等），也发展出许多不同的求解映射的方法和技巧。例如，以下两个工作是我们做的有关三维曲面参数化到二维平面的工作，第一个工作是曲面参数化工作的经典方法之一，已经被集成到3D System公司的建模软件以及著名的计算几何算法&lt;a href=&quot;https://www.cgal.org/&quot;&gt;CGAL库&lt;/a&gt;（The Computational Geometry Algorithms Library）中。第二个工作是今年我们最新的一个工作，能快速生成无翻转和低扭曲的网格参数化，论文即将在下周的Siggraph 2018会议上汇报。&lt;/p&gt;
&lt;p&gt;[8-7] Ligang Liu, Lei Zhang, Yin Xu, Craig Gotsman, Steven J. Gortler.  A Local/Global Approach to Mesh Parameterization. Computer Graphics Forum (Proc. Eurographics Symposium on Geometry Processing (SGP)), 27(5), 1495-1504, 2008.&lt;/p&gt;
&lt;p&gt;[8-8] Ligang Liu, Chunyang Ye, Ruiqi Ni, Xiao-Ming Fu. Progressive Parameterizations.  ACM Transactions on Graphics (Proc. Siggraph), 37(4), Article 41: 1-12, 2018.&lt;/p&gt;
&lt;p&gt;在计算机图形学中，有时我们也需要将三维空间的二维流形曲面映射到另一个规则二维流形曲面，比如球面上，这时称为球面参数化。如读者有兴趣可阅读我们如下的3篇有关球面参数化的工作。&lt;/p&gt;
&lt;p&gt;[8-9] Xin Hu, Xiao-Ming Fu, Ligang Liu. Advanced Hierarchical Spherical Parameterizations. IEEE Transactions on Visualization and Computer Graphics, to appear, 2018.&lt;/p&gt;
&lt;p&gt;[8-10] Chunxue Wang, Xin Hu, Xiaoming Fu, Ligang Liu. Bijective Spherical Parametrization with Low Distortion. Computers&amp;amp;Graphics (Proc. SMI), 58: 161-171, 2016.&lt;/p&gt;
&lt;p&gt;[8-11] Chunxue Wang, Zheng Liu, Ligang Liu. As-Rigid-As-Possible Spherical Parameterization. Graphical Models (Proc. GMP), 76(5): 457-467, 2014.&lt;/p&gt;
&lt;p&gt;另外，在计算机图形学及计算机辅助几何设计领域，我们还有独特的曲线和函数的构造方法，如通过Bernstein基函数构造的Bezier曲线曲面，通过B样条基构造的B样条曲线曲面（分段Bezier曲线曲面），以及更一般的非均有有理B样条曲线曲面，通过控制顶点就能很直观控制曲线曲面的形状，而且发展出非常完备的理论及设计方法，如图25所示。这些独特的曲线曲面的构造方法也是我们领域独特的，已成为现代工业中产品曲面造型的工业标准（标准数学表达）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image167.jpg&quot; alt=&quot;Image 287&quot; /&gt;  &lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image168.jpg&quot; alt=&quot;Image 288&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图25. NURBS曲线曲面：产品曲面造型的工业标准。（图片来源与互联网）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;九、&lt;/strong&gt;   &lt;strong&gt;实战深度神经网络学习&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;由于本文是面向非机器学习专业介绍深度学习的，因此，笔者在这里只是大致介绍一下各种基于深度神经网络的学习方法的实际技巧，不详细展开讨论，有兴趣的读者可查阅更专业的书籍或论文。&lt;/p&gt;
&lt;p&gt;9.1.            看懂各种深度神经网络结构&lt;/p&gt;
&lt;p&gt;从数学上来看，深度神经网络仅仅是一种函数的表达形式，是复杂的多层复合函数。由于它有大量的可调参数，而且近年来随着大数据、优化算法和并行计算GPU硬件的发展，使得用大规模的神经网络来逼近和拟合大数据成为可能。至今，不同领域的研究工作者及产业界工作者已将深度神经网络应用到各行各业的各个问题，而且提出了各种形式、各种结构的深度网络结构，使人眼花缭乱，似乎难以捉摸。但事实并非如此！&lt;/p&gt;
&lt;p&gt;万变不离其宗，神经网络就是一个多层复合函数。网络结构发生改变，就是说函数的复合形式发生了变化。因此，只要掌握了这条原则，各种复杂的神经网络你就能轻松看懂。亦可参考互联网上的“&lt;a href=&quot;https://blog.csdn.net/qq_35082030/article/details/73368962&quot;&gt;一文看懂25个神经网络模型&lt;/a&gt;”一文。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image169.jpg&quot; alt=&quot;Image 289&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图26. 多层神经网络所表达的函数：可以看成前面的若干层网络所表达的函数（蓝色）与后面若干层网络所表达的函数（红色）的复合。&lt;/p&gt;
&lt;p&gt;简单地说，看懂各种神经网络结构只需看懂如下3个要素（具体解释就不详细展开了）：&lt;/p&gt;
&lt;p&gt;(1)   神经元与激活函数：神经元接收什么数据，通过什么样的激活函数输出数据。人们发明了许多不同种类的神经元，比如，池化神经元和插值神经元（Pooling and interpolating cells）、概率神经元（Mean and standard deviation cells）、循环神经元（Recurrent cells ）、长短期记忆神经元（Long short term memory cells）、门控循环神经元（Gated recurrent cells）等。不管什么样形式和名称的神经元，我们只要搞明白神经元是通过什么样的函数来将接收数据变为输出数据，不同之处就在接收数据和激活函数不同而已，如图21（右）所示。&lt;/p&gt;
&lt;p&gt;(2)   神经网络结构：不同的神经网络就是不同的多层复合形式的函数。比如，卷积神经网络（Convolutional Neural Network，CNN）就是一种限于局部感受野来改造的神经网络（线性组合特殊化为局部区域的卷积操作，且增加了池化(Pooling)层），特别适合于文本、图像及视频类数据的深度学习。再比如，残差神经网络（Residual Neural Network，ResNet）有一种特殊的连接，可以把数据从某一隐层传至后面几层（通常是2到5层）。该网络的目的不是要找输入数据与输出数据之间的映射，而是致力于构建输入数据与输出数据+输入数据之间的映射函数。本质上，ResNet 是在学习映射函数的一阶差分（一阶导数），能够有效抑制优化过程中的梯度消失。类似地， DenseNet (CVPR 2017) 实质上是在学习映射函数的高阶差分，因此也能有效抑制梯度消失现象。同样地，其他的各种神经网络结构也很容易看懂的，比如 AutoEncoder，GAN，Variational GAN等。&lt;/p&gt;
&lt;p&gt;(3)   神经网络的组合：一个多层的神经网络就是一个多次复合的函数。中间的任何一层的输出都可以看成为原始输入数据的一个特征。如图26所示，一个多层神经网络所表达的函数：可以看成前面的若干层网络所表达的函数（蓝色）与后面若干层网络所表达的函数（红色）的复合。因此，在任何的一个中间层，可以修改输出的特征向量、可以插入一个其他的神经网络（将该特征向量作为输入，或与其他网络的特征向量进行叠加、运算等）等等。如果将神经网络看成为积木，整个组合过程就像在“搭积木”。这样就可以发明和产生无穷无尽的网络结构（比如，并行网络、累加网络等等很多网络名称）。在实际应用中，需要根据问题本身的特点来合理设计网络的结构。具体哪种网络结构合理，有无最好，都是组要根据问题本身思考和试验的，主要是要看损失函数的误差以及在应用中的效果来决定的。这个我们在后面还会进一步讨论。&lt;/p&gt;
&lt;p&gt;9.2.            如何调试深度神经网络？&lt;/p&gt;
&lt;p&gt;一个深度神经网络所表达的函数具有成千上万个参数，为了让损失函数在训练数据上达到最小，就需要设计合理的网络来拟合这些数据。在优化的过程中，要保证迭代收敛也是必要的。&lt;/p&gt;
&lt;p&gt;一般地，调试较大的深度神经网络所花费的时间和劳力比调试传统程序要多，而且要有耐心！因为如果最后的结果不好（损失函数很大或者不收敛），如果确认你的代码无bug，那么原因只有一个，就是你所调的网络还不够好(orz)！&lt;/p&gt;
&lt;p&gt;在调试神经网络的过程中，有太多不确定的因素需要你去仔细思考并小心翼翼地去调试，而这些大部分都需要靠直觉、经验和少许运气来调试决定的，比如：&lt;/p&gt;
&lt;p&gt;(1)   需要选取多大的神经网络（也就是选用什么样的拟合函数）？具体地，网络要多少层？每层多少节点？这个只能凭直觉或经验了。简单点的话，就套用现成的网络结构，或者再经过一些修改即可。从函数的自由度来看，网络的参数个数与数据大小不应相差太大。&lt;/p&gt;
&lt;p&gt;(2)   初始化。对于高度非线性的函数的最优化，一个非常重要的因素就是如何挑选一个好的初始化？&lt;/p&gt;
&lt;p&gt;(3)   在优化过程中，如何判断优化过程是否收敛？&lt;/p&gt;
&lt;p&gt;(4)   是否发生了过拟合？&lt;/p&gt;
&lt;p&gt;(5)   … ….&lt;/p&gt;
&lt;p&gt;以下有些简单的小经验分享下：&lt;/p&gt;
&lt;p&gt;(1)   一定要可视化你的结果！这样有助于你在训练过程中发现问题。你应该明确的看到这些数据：损失函数的变化曲线、权重直方图、变量的梯度等。不能只看数值，一定要可视化！&lt;/p&gt;
&lt;p&gt;(2)   网络不是越深越好！不要一上来就用VGG19, ResNet50等标准的大网络，可能你的问题只要几层就能解决问题。&lt;/p&gt;
&lt;p&gt;(3)   先建立一个较小的网络来解决核心问题，然后一步一步扩展到全局问题。&lt;/p&gt;
&lt;p&gt;(4)   先用小样本做训练，有了感觉后，再调试大的训练数据。&lt;/p&gt;
&lt;p&gt;(5)   如果在几百次迭代后，迭代还没开始收敛，那么就要终止迭代，不要傻等了！要考虑修改你的网络了。&lt;/p&gt;
&lt;p&gt;(6)   注意避免梯度消失或梯度爆炸。&lt;/p&gt;
&lt;p&gt;(7)   另外，在互联网上还能找到许多网友们分（tu3）享（cao2）的实用调网络的经验，读者可自行去查找学习。&lt;/p&gt;
&lt;p&gt;值得提醒的是，上述分享的各个经验没有绝对的对与错，须将它们当作经验去学习和使用即可。需要根据你自己的实际问题来设计和调试你的深度神经网络。&lt;/p&gt;
&lt;p&gt;即便对于行家来说，调试较大的神经网络也是一项艰巨的任务。数百万个参数在一起决定的函数，一个微小的变化就能毁掉所有辛勤工作的成果。然而不进行调试以及可视化，一切就只能靠运气，最后可能浪费掉大把的青春岁月。&lt;/p&gt;
&lt;p&gt;正因为这些原因，调试深度神经网络被认为是个不可解释的“黑箱子”，优化网络的过程成为“调参”，也被戏称为“炼丹”，是个需要丰富经验的“技术活”。&lt;/p&gt;
&lt;p&gt;9.3.            深度学习开发工具&lt;/p&gt;
&lt;p&gt;要学习和使用基于深度神经网络的深度学习，门槛并不高。你大不必从头开始自己搭建神经网络系统和实现优化算法。近几年来，很多大公司和科研机构都在研究自己的深度学习框架，且推出了不少深度学习开发平台（如图27），深度学习的开发框架和工具也越来越多，使得应用深度学习的入门门槛越来越低。使用好的开发工具，可让使用者减少底层开发的工作量，而将重点关注于深度学习应用逻辑的开发及模型的优化上，提高开发效率。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image170.jpg&quot; alt=&quot;Image 290&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图27. 基于深度神经网络的深度学习的开发工具。（图片来自互联网）&lt;/p&gt;
&lt;p&gt;这里简单介绍几款大家常用的深度学习开发工具包，基本都是开源的。&lt;/p&gt;
&lt;p&gt;(1)   TensorFlow, 由Google公司发布。支持多CPU及多GPU并行化运行，并支持CNN，RNN等主要的深度学习模型。Github社区人气最火的深度学习开源项目。&lt;/p&gt;
&lt;p&gt;(2)   Caffe，由加拿大Berkeley BVLC实验室发布。使用最广泛的深度学习工具之一，提供C++，Python，Matlab等语言接口。&lt;/p&gt;
&lt;p&gt;(3)   Torch，基于 Lua 脚本语言的工具，支持 iOS、 Android 等嵌入式平台。&lt;/p&gt;
&lt;p&gt;(4)   Theano，基于Python语言开发的深度学习开源仿真平台。&lt;/p&gt;
&lt;p&gt;(5)   Keras，基于Python语言开发的，底层库使用Theano或TensorFlow。其模块化特性非常适合刚入门的初学者快速实验并测试深度学习网络的性能，同时也开放提供对底层的修改。&lt;/p&gt;
&lt;p&gt;关于这些开发工具包的使用，互联网上（包括Github）有非常丰富的教材和使用文档，读者有兴趣可以自行查阅学习。&lt;/p&gt;
&lt;p&gt;9.4.            深度神经网络专用芯片&lt;/p&gt;
&lt;p&gt;深度神经网络专用芯片（使用GPU+DNN的专用芯片）是一种特殊用途的处理器，它能够使得深度神经网络的训练更快，具有更高的性能和更低的功耗。DNN 专用芯片在性能和能源消耗方面的好处是显著的，DNN专用芯片的广泛使用还需要神经网络体系结构的标准化和对不同DNN框架的支持。国外的一些公司，包括Google、Nvidia、Intel等公司，已经开发和部署了DNN专用芯片，为基于DNN的应用程序提供了极高的性能。国内也有不少公司（如寒武纪、阿里巴巴等）在从事DNN专用芯片的研发，也已经达到国际前沿水平。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;十、&lt;/strong&gt;   &lt;strong&gt;深度神经网络的能力与局限&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;深度学习真有智能吗？遗憾的是，没有！&lt;/p&gt;
&lt;p&gt;10.1.        基于深度神经网络的深度学习的本质再回顾&lt;/p&gt;
&lt;p&gt;在本文，笔者从函数逼近论的角度已详细剖析了基于深度神经网络的深度学习，归纳为以下4个基本点：&lt;/p&gt;
&lt;p&gt;(1)   深度神经网络（DNN）是一个复合函数。对于任何单变量函数，只要神经元足够多，神经网络函数就能任意逼近它；对于任何多变量函数，一定可以被多个单变量函数的复合来逼近，因此就能被深度神经网络函数进行逼近；上述两点为神经网络函数的表达能力提供了理论基础；&lt;/p&gt;
&lt;p&gt;(2)   基于DNN的深度学习是个数据拟合（最小二乘回归）的过程；&lt;/p&gt;
&lt;p&gt;(3)   拟合过程是在学习基函数；&lt;/p&gt;
&lt;p&gt;(4)   多层映射是在做多次变换（或参数化）。&lt;/p&gt;
&lt;p&gt;因此，基于DNN的深度学习是可以很清楚被理解的！具体的应用过程中，选多少层、选多少基的问题在逼近论中就是没有很好的解决方案，这是逼近论中就存在的问题，并不是深度网络带来的问题！&lt;/p&gt;
&lt;p&gt;从数学本质来看，深度学习是在做最小二乘回归；其他的机器学习方法也是基于最小二乘回归的其他回归方法或者统计方法。&lt;/p&gt;
&lt;p&gt;从应用性来看，还有以下一些对基于深度神经网络的深度学习的本质的说明：&lt;/p&gt;
&lt;p&gt;(1)   基于DNN的深度学习实际上在做拟合和统计，网络结构设计需要靠直觉、技巧和经验以及运气；&lt;/p&gt;
&lt;p&gt;(2)   激活函数和损失函数的选择也很重要；&lt;/p&gt;
&lt;p&gt;(3)   DNN的层数、各层的神经元个数决定了该函数的参数；一般的DNN都具有非常多的参数；&lt;/p&gt;
&lt;p&gt;(4)   DNN适合拟合大规模数据；对小规模数据，不建议用DNN；&lt;/p&gt;
&lt;p&gt;(5)   任何一个中间隐层的输出向量都可以作为输入数据的特征（在该维数上的），也是输入数据的参数化；&lt;/p&gt;
&lt;p&gt;(6)   DNN可以任意拼装、组合成各种复杂的网络结构；&lt;/p&gt;
&lt;p&gt;(7)   大部分论文中的DNN结果都可能是过拟合；因此，很容易出现误判的情况（输入的轻微变化，比如给图片加少量噪声，结果就相差很大），容易犯大错；&lt;/p&gt;
&lt;p&gt;(8)   DNN是以成败论英雄的，需要在实际应用中好才是真的好，而这个永远不知道。&lt;/p&gt;
&lt;p&gt;需要再提一下的是，本文所讨论的基于DNN的深度学习只是深度学习的一种方法而已。还有其他的深度学习，比如南京大学周志华老师团队所提的深度森林等方法。&lt;/p&gt;
&lt;p&gt;10.2.        深度神经网络具有“智能”吗？&lt;/p&gt;
&lt;p&gt;从上面的剖析来看，基于DNN的深度学习实质上就是对样本数据集的拟合而已！显而易见，它仅仅是一个由数据驱动的产生的拟合器或分类器，根本不是一个“认知系统”！我们并没有看出来它有任何“智能”（即对数据所呈现的规律、知识的理解）的存在！对人工神经网络的研究可能仍然是几十年前的进展，只不过现在网络的规模变大了（数据大了，优化强了）而已！&lt;/p&gt;
&lt;p&gt;从逼近论的角度来看，如果数据足够大，多到足以（稠密）覆盖整个目标函数，那么简单的最近邻查找或者局部线性插值的性能就足够好了。此时，笔者猜测，深度学习的性能与最近邻查找的性能可能相差无几！&lt;/p&gt;
&lt;p&gt;举个例子，市面上出现了许多种类的所谓的“智能机器人”，声称可以与人进行自由对话。建议读者去测试一下这些对话机器人，你们就会发现，这些机器人的问答系统基本没有理解（只有少数有少量简单的理解）。如果对于在其数据库中存在的问题或类似的问题，机器人能够回答得比较合理；如果遇上需要逻辑推理的问题，这些机器人基本就答非所问，或者王顾左右而言他，甚至开始“卖萌”了。有空去逗逗这些对话机器人也是蛮有意思的事。&lt;/p&gt;
&lt;p&gt;对于自动翻译等机器人，只要有足够的两种语言的对应词条或句子（比如有些公司的词库数据库非常庞大，达到亿级），就能“翻译”（拟合）得还不错，达到一定的实用水准。但从本质上来讲，这些翻译算法并没有真正理解语言本身！&lt;/p&gt;
&lt;p&gt;关于深度学习，我们要有清醒的认识：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;pre&gt;&lt;code&gt; 深度学习模型需要大量的训练数据，才能有较好的效果；因为这些学习模型都在做数据拟合或回归，或者是在做统计；
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;pre&gt;&lt;code&gt; 实际问题中，往往会遇到小样本问题，采用传统的简单的机器学习方法，则可以很好地解决了，没必要非得用复杂的深度学习方法；
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;pre&gt;&lt;code&gt; 神经网络看起来来源于人脑神经元的启发，但绝不是人脑的模拟！它只是一个复合函数！举个例子，给一个三四岁的小孩看过几只猫之后，他就能识别其他的猫。也就是说，人类的学习过程往往不需要大规模的训练数据，而现在的深度神经网络的学习方法显然不是对人脑的模拟。
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这几年各种媒体的大量夸张的报道和宣传（即使是战胜人类的围棋算法AlphaGo，也并不是真正的人工智能，而仅仅是机器在一定的游戏规则下的策略计算能力），极度夸大了人工智能的进展，让很多大众误认为“强人工智能”已经来临，甚至产生不必要的恐慌。&lt;/p&gt;
&lt;p&gt;事实上，现在的人工智能的进展仍然很小，正如清华大学人工智能研究院院长张钹院士在2018年全球人工智能与机器人峰会（CCF-GAIR）上的报告上所指出的：“人工智能刚刚起步，离真正的人工智能还很遥远… 我们必须走向具有理解的人工智能，这才是真正的人工智能。”&lt;/p&gt;
&lt;p&gt;10.3.        深度学习在工业界的应用&lt;/p&gt;
&lt;p&gt;虽然近几年发展起来的基于DNN的深度学习并未产生真正的智能。但由于现在有大量的数据，基于数据驱动的深度学习方法可以在很多领域确实得到了落地的应用。特别是在计算机视觉领域，比如人脸识别、图像分割与识别等，该领域做了很多年的一些问题的研究工作，瞬间就被深度学习所击败！深度学习取得了巨大的成功！因此，我们仍能使用深度学习解决不少问题。&lt;/p&gt;
&lt;p&gt;近几年，催生了大量的人工智能公司，分布在安防、医疗、金融、智能机器人、自动驾驶、智能芯片、智能家居等领域；各高校也纷纷构建了人工智能研究院或大数据学院等；各学会成立了人工智能相关的专业委员会；国家也纷纷出台了有关人工智能的政策与文件，包括《新一代人工智能发展规划》，鼓励人工智能方面的人才培养（从娃娃抓起）和产业落地。在科研领域，大量的研究工作者和学生都涌进到人工智能领域，在一些人工智能或计算机视觉领域的会议的投稿量迅速增加，参加会议的人数达到历史新高。&lt;/p&gt;
&lt;p&gt;但残酷的事实是，绝大部分的人工智能公司都是“伪人工智能”，他们或者仅仅在做着数据标注的工作，因为标注数据的多少决定着拟合函数的“智能”！另外，已经有些公司因未能找到合适的盈利模式而倒闭。前几年对深度学习及智能的期望并未达到人们及投资者的预期目标。今年年初，李开复曾指出：“2018年是AI泡沫破裂之年”。&lt;/p&gt;
&lt;p&gt;从两年前人工智能热潮的爆发，到现在热潮逐渐退去，人们也越来越趋于冷静来认识人工智能，对其研究与应用逐渐趋于务实。笔者也希望人工智能能真正快速发展，让人类的生活变得越来越美好！&lt;/p&gt;
&lt;p&gt;10.4.        深度学习与人工智能的关系&lt;/p&gt;
&lt;p&gt;1956年，几个计算机科学家相聚在达特茅斯会议，提出了“人工智能”（Artificial Intelligence， AI）的概念，梦想着用计算机来构造复杂的、拥有与人类智慧同样本质特性的机器。人工智能研究领域范围很广，包括专家系统、机器学习、进化计算、模糊逻辑、计算机视觉、自然语言处理、推荐系统等，如图27 （左）。&lt;/p&gt;
&lt;p&gt;机器学习（Machine Learning, ML）是一种实现人工智能的方法。其基本做法是使用算法来解析数据、从中学习，然后对真实世界中的事件做出决策和预测。与传统的为解决特定任务、硬编码的软件程序不同，机器学习是用大量的数据来“训练”，通过各种算法从数据中学习如何完成任务。传统的机器学习算法包括决策树、聚类、贝叶斯分类、支持向量机、EM、Adaboost等等。从学习方法上来分，机器学习算法可以分为监督学习（如分类问题）、无监督学习（如聚类问题）、半监督学习、集成学习、深度学习和强化学习等。&lt;/p&gt;
&lt;p&gt;深度学习（Deep Learning, DL）是一种实现机器学习的技术，是解决特征表达的一种学习过程。现在常指利用深度神经网络的深度学习。在很早就有人提过，但由于当时训练数据量不足、计算能力落后，因此深度学习的效果不尽如人意；直到近几年，深度学习才较好地实现了各种任务。事实上，除了基于深度神经网络的深度学习，还有其他形式（比如深度森林）的深度学习方法。&lt;/p&gt;
&lt;p&gt;因此，机器学习是一种实现人工智能的方法，深度学习是一种实现机器学习的技术，而深度神经网络是实现深度学习的一种具体的实现工具，如图28（右）所示。简而言之，从范畴来讲，他们的关系如下：&lt;/p&gt;
&lt;p&gt;深度神经网络 &amp;lt; 深度学习 &amp;lt; 机器学习 &amp;lt; 人工智能&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image171.jpg&quot; alt=&quot;Image 291&quot; /&gt;  &lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image172.jpg&quot; alt=&quot;Image 292&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图28. 左：人工智能的研究范畴；右：人工智能、机器学习和深度学习的关系。&lt;/p&gt;
&lt;p&gt;（图片来自互联网）&lt;/p&gt;
&lt;p&gt;但残酷的事实是，近几年流行的基于深度神经网络的深度学习仅仅是一个数据拟合器，并不存在着分析与理解等智能的能力。现有的技术和方法离真正的人工智能还非常遥远！&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;十一、&lt;/strong&gt;        &lt;strong&gt;三维几何数据&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在计算机图形学中，我们研究的对象是三维（3D）形状对象，即虚拟空间中的数字化的物理实体。表达3D对象的3D几何数据是继声音、图像、视频之后的第四代数字可视媒体（如图29），已逐渐具有越来越广泛的应用。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image173.jpg&quot; alt=&quot;Image 293&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图29. 四代可视媒体的发展：声音、图像、视频、3D几何。&lt;/p&gt;
&lt;p&gt;11.1.        3D 数据的重要性&lt;/p&gt;
&lt;p&gt;地球上的人及所有动物都有两只眼睛，每只眼睛类似于一台照相机，看到的是场景在视网膜（成像平面）上的投影图像，如图30（左）。两只眼睛位置不同，就产生对同一场景的视差，从而在大脑生成了场景的立体和3D信息（双目立体视觉原理），如图30（右）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image174.jpg&quot; alt=&quot;Image 294&quot; /&gt;  &lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image175.png&quot; alt=&quot;Image 295&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图30. 左：单眼看到的是图像，为三维世界在成像平面上的投影影像；右：人类及动物的两只眼睛通过双眼的视差产生了对场景物体的立体和三维的信息。（图片来自于互联网）&lt;/p&gt;
&lt;p&gt;因此，人类及动物的视觉感知系统是具有立体的特性。世界是三维的，3D模型提供了世界及所有物体的全方位、全息的表达，能提供比二维图像更丰富、更全面的空间信息（比如猎鹰能在几公里外判断草地上一只兔子的远近和方位，以便做出下一步的飞行行为）。而单眼（如果以前存在的话）动物则因无法分辨物体的远近，而无情地被自然法则所淘汰。&lt;/p&gt;
&lt;p&gt;计算机视觉通过对图像的理解和分析已经能够解决非常多的任务（比如物体检测、分割、识别、检索等）。但在很多实际应用中，如果涉及到空间关系分析以及与3D环境和物体的理解、交互和创造，则光靠2D图像信息是不够的，此时必须依赖场景的3D信息，比如数字城市中的空间关系分析、机器人抓取3D物体、虚拟和增强现实、物联网数据的空间关联等，如图31所示。在这些应用中，仅仅靠图像信息是无法很快完成各项任务的。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image176.jpg&quot; alt=&quot;Image 296&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图31. 三维数据在很多实际应用场景中是必不可少的信息。&lt;/p&gt;
&lt;p&gt;11.2.        3D数据集&lt;/p&gt;
&lt;p&gt;随着3D物体的扫描与采集手段的日益增多（特别是近几年快速发展的深度相机，比如Microsoft Kinect、Intel RealSense、Google Project Tango、Apple Primesense、Asus Xtion等）、未来可采集3D信息的移动终端（去年iPhoneX上已有深度相机）的普及、以及互联网上3D模型的创造与分享，3D数据（包括RGB-D数据）将日益丰富。&lt;/p&gt;
&lt;p&gt;至今，已有许多研究机构构建并公布了一些3D数据集，比如：&lt;/p&gt;
&lt;p&gt;ShapeNet数据集：包含了约300多万个3D模型（3000多类物体），每个模型有语义注释。这是当前最大的一个三维模型数据集；其子集ShapeNetCore具有一些手工的标注；&lt;/p&gt;
&lt;p&gt;ModelNet数据集：包含了12多个3D模型（662类），包含两个子集Model10和ModelNet40；&lt;/p&gt;
&lt;p&gt;ShapeGoogle数据集：包含了近600个非刚性3D模型，用于检索测试；&lt;/p&gt;
&lt;p&gt;SHREC数据集：包含了上千个非刚性3D模型，包括不少人的模型和合成数据集；&lt;/p&gt;
&lt;p&gt;Watch-N-Patch数据集：由Cornell大学和Stanford大学公布，主要是人体3D模型数据。&lt;/p&gt;
&lt;p&gt;还有一些高校和研究机构公开了一些RGB-D数据集，包括Princeton大学（415个室内场景，990万个标记图像），纽约大学（464个室内场景），Cornell大学（24个办公室场景，28个居家室内场景），Washington大学（14个室内场景）等。&lt;/p&gt;
&lt;p&gt;另外，瑞士苏黎世大学发布了一个使用LiDAR（激光3D扫描）扫描的40个办公室场景的高精度3D场景模型数据集。&lt;/p&gt;
&lt;p&gt;11.3.        3D形状描述子&lt;/p&gt;
&lt;p&gt;类似于2D图像，人们也需要对3D模型数据进行分类与识别、分割与建模、匹配与检索等。完成这些任务的关键就是如何定义和计算3D模型的形状描述子（Shape descriptors）或特征（Features）。&lt;/p&gt;
&lt;p&gt;至今，人们已提出了各种基于全局和局部的形状几何属性的空间分布或统计信息的3D形状描述子（如图32所示）。这些形状描述子都是针对某种特定的应用或某些特定的3D模型类型而提出的，同时满足所有应用及所有模型类型的3D形状描述子还没有。在实际应用中，应根据物体类型和具体应用来选择合适的形状描述子（特征选择）。比如，笔者如下论文使用稀疏选择的方法来选择合适的形状描述子用于3D 形状分割。&lt;/p&gt;
&lt;p&gt;[11-1] Ruizhen Hu, Lubin Fan, Ligang Liu.  Co-Segmentation of 3D Shapes via Subspace Clustering. Computer Graphics Forum (Proc. Symposium on Geometry Processing), 31(5): 1703-1713, 2012.&lt;/p&gt;
&lt;p&gt;11.4.        3D几何数据的深度学习的挑战&lt;/p&gt;
&lt;p&gt;随着3D数据（包括单个模型以及场景模型）的日益流行和丰富，如何利用上述丰富的3D数据集来完成分析和处理3D形状数据，已成为研究工作者及产业工作者的关注焦点和研究热点。因此，3D形状的特征提取方法也逐步从上述的人工定义特征方法到基于深度学习的特征学习方法的发展。&lt;/p&gt;
&lt;p&gt;相对于图像与视频处理，3D几何数据的深度学习方法在近几年才开始有了一些工作和进展，但仍面临着一些挑战。&lt;/p&gt;
&lt;p&gt;(1)   3D数据集较小&lt;/p&gt;
&lt;p&gt;相比于ImageNet等千万级数据量的2D图像数据集，现在的3D模型数据集的数量很少，仍未达到“大数据”的规模。另外，3D数据的标注也是较为困难的。&lt;/p&gt;
&lt;p&gt;(2)   3D数据是非结构化的&lt;/p&gt;
&lt;p&gt;图像和视频都是结构化数据，是线性结构的，可以表达为一个向量或矩阵。但3D模型数据是非结构化的（如图33所示），每个顶点的邻域数是非固定的，从拓扑上看是一个图（Graph），无法直接使用深度神经网络。&lt;/p&gt;
&lt;p&gt;(3)   3D数据的复杂性&lt;/p&gt;
&lt;p&gt;相对于图像和视频，3D模型还有其他一些复杂性，包括：&lt;/p&gt;
&lt;p&gt;(a) 正向姿态性：图像基本都是正向拍摄的，但是3D模型的姿态可以是任意的，如何消除姿态的影响仍有挑战。为了方便，一般会预先将数据集中的模型统一正朝向；&lt;/p&gt;
&lt;p&gt;(b) 表达不统一：图像就是一个矩阵结构，表达非常统一；但是3D模型有不同的表达方式，比如点云、网格、体素、隐函数、CSG树等（如图34），使得需要对不同表达的数据进行不同的处理；&lt;/p&gt;
&lt;p&gt;(c) 数据不完整：由于采集设备的精度问题，有些3D数据（比如RGBD数据）中存在着大量的噪声和游离点；由于遮挡关系，有些3D数据不够完全，存在着空洞；还有些3D数据的采样密度不均匀，造成不同部位的信息不对称。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image177.jpg&quot; alt=&quot;Image 297&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image178.jpg&quot; alt=&quot;Image 298&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图32. 各种人工3D形状描述子。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image179.jpg&quot; alt=&quot;Image 299&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图33. 二维图像与三维网格的数据结构的区别。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image180.jpg&quot; alt=&quot;Image 300&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图34. 三维几何数据的不同表达。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;十二、&lt;/strong&gt;        &lt;strong&gt;智能图形处理：三维数据的深度学习&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;3D图形作为一种新型的可视媒体数据类型，同样可以利用人工智能和深度学习的方法来进行分析和处理，融合大数据、并行计算及人工智能技术的最新进展以提高计算机图形学算法及系统易用性及效率，称为智能图形处理。&lt;/p&gt;
&lt;p&gt;近几年，已有越来越多的研究工作将机器学习和深度学习的方法应用于3D数据。本节仅就3D形状描述子方面做一个简略的介绍。&lt;/p&gt;
&lt;p&gt;应用深度学习来自动抽取3D形状特征主要有以下3种方法：第一种，基于传统的人工特征（维数一致了）来进行更抽象的形状特征的学习和抽取；这种方法是非端到端的；第二种，将3D数据转化为规整结构数据（欧氏区域），然后再应用深度学习方法抽取形状特征，称为显式方法；第三种，将深度神经网络改造成能够处理非欧氏区域数据，称为隐式方法。下面分别从方法论上进行简单介绍。&lt;/p&gt;
&lt;p&gt;12.1.        基于人工特征的特征学习方法&lt;/p&gt;
&lt;p&gt;由于传统卷积无法直接作用于3D形状，早期的方法避开了直接以3D形状作为输入的训练，而是先从3D模型中提取一些人工特征（称为低级特征，如图32），再把这些特征输入到神经网络中进行学习，获得新的抽象特征（称为高级特征），如图35所示。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image181.jpg&quot; alt=&quot;Image 301&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图35. 基于人工特征的特征学习方法。&lt;/p&gt;
&lt;p&gt;[12-1] Zhige Xie, Kai Xu, Ligang Liu, Yueshan Xiong. 3D Shape Segmentation and Labeling via Extreme Learning Machine. Computer Graphics Forum (Proc. SGP), 33(5): 85-95, 2014.&lt;/p&gt;
&lt;p&gt;[12-2] Kan Guo, Dongqing Zou, and Xiaowu Chen. 3D mesh labeling via deep convolutional neural networks. ACM Transactions on Graphics, 35, 1, 2015.&lt;/p&gt;
&lt;p&gt;[12-3] Zhenyu Shu, Chengwu Qi, Shiqing Xin, Chao Hu, Li Wang, Yu Zhang, Ligang Liu. Unsupervised 3D Shape Segmentation and Co-segmentation via Deep Learning. Computer Aided Geometric Design (Proc. GMP), 43: 39-52, 2016.&lt;/p&gt;
&lt;p&gt;人工定义的特征很大程度上取决于人的经验。因此，基于人工特征的特征学习方法并不是端到端的深度学习方法。另外，各种人工特征向量的排列也会改变特征矩阵及其卷积后的结果，对结果产生如何的影响也不清楚。&lt;/p&gt;
&lt;p&gt;12.2.        非本征方法&lt;/p&gt;
&lt;p&gt;这种方法是将3D数据进行合适的变换，将其变换到一个欧氏空间的规则区域，以便适用于深度神经网络。此类方法改变了3D网格模型的形态，本质上也改变了数据分布空间，是为了适应传统CNN或MLP对拓扑的要求而提出的折衷解决方法，因此成为基于欧氏空间的学习方法或非本征方法，如图36所示。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image182.jpg&quot; alt=&quot;Image 302&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图36. 非本征深度学习方法。&lt;/p&gt;
&lt;p&gt;变换的区域和方法主要有以下几种。&lt;/p&gt;
&lt;p&gt;(1)   图像区域。最简单的方法就是将3D模型数据投影到平面形成图像。&lt;/p&gt;
&lt;p&gt;(a)    多视图图像：将3D模型往多个视角方向投影生成多幅图像，比如[12-4, 12-5]；&lt;/p&gt;
&lt;p&gt;(b)   全景图像：将3D模型往平面投影生成一幅全景图，比如[12-6]；&lt;/p&gt;
&lt;p&gt;(c)    参数化图像：将3D模型的2D参数化看成为一幅图像，比如[12-7, 12-8]。&lt;/p&gt;
&lt;p&gt;(2)   体素区域。&lt;/p&gt;
&lt;p&gt;(a)    类比于图像中的像素，将3D形状看作三维体素网格的0，1分布，比如[12-9, 12-10， 12-11]。由于体素的个数是三次方增长，因此，体素的分辨率无法太大，一般连128x128x128的分辨率做起来都很困难。&lt;/p&gt;
&lt;p&gt;(b)   只将模型表面用体素来表达，而省去内部体素的存储，并且利用八叉树的形式来存储，可以有效地提高体素的分辨率及模型的表达精度，比如[12-12]。&lt;/p&gt;
&lt;p&gt;(3)   基元组合。三维形状还可以表示成一些基本单元的组合，如矩形块、圆柱、圆锥、球等，然后利用网络来学习这些基本体块的参数，比如[12-13, 12-14]。&lt;/p&gt;
&lt;p&gt;(4)   点云。直接将3D数据看成点的集合。将每个点看作一个神经元节点，节点包含点的坐标或法向等信息，然后利用深度神经网络提取点的特征。这里要克服点及点邻域的顺序无关性等。比如[12-14, 12-15, 12-16, 12-18]。&lt;/p&gt;
&lt;p&gt;[12-4] Su, H. and S. Maji, et al. (2015). Multi-view convolutional neural networks for 3D shape recognition. ICCV.&lt;/p&gt;
&lt;p&gt;[12-5] Xie, Z. and K. Xu, et al. (2015). Projective Feature Learning for 3D Shapes with Multi‐View Depth Images. CGF.&lt;/p&gt;
&lt;p&gt;[12-6] Shi, B. and S. Bai, et al. (2015). Deeppano: Deep panoramic representation for 3‐D shape recognition. IEEE Signal Processing Letters.&lt;/p&gt;
&lt;p&gt;[12-7] Sinha, A., Bai, J., Ramani, K., et al. (2016). Deep learning 3D shape surfaces using geometry images. ECCV.&lt;/p&gt;
&lt;p&gt;[12-8] Maron, H. and Galun, M. (2017). Convolutional Neural Networks on Surfaces via Seamless Toric Covers. SIGGRAPH.&lt;/p&gt;
&lt;p&gt;[12-9] Qi, C. R. and H. Su, et al. (2016). Volumetric and multi-view cnns for object classification on 3D data. CVPR.&lt;/p&gt;
&lt;p&gt;[12-10] Brock, A. and T. Lim, et al. (2016). Generative and discriminative voxel modeling with convolutional neural networks. NIPS.&lt;/p&gt;
&lt;p&gt;[12-11] Wu, Z., and Song, S. et al. (2015). 3d shapenets: a deep representation for volumetric shapes. CVPR.&lt;/p&gt;
&lt;p&gt;[12-12] Wang, P. S.  and Liu, Y. et al. (2017). O-cnn: octree-based convolutional neural networks for 3d shape analysis. TOG.&lt;/p&gt;
&lt;p&gt;[12-13] J. Li, K. Xu, et al. Grass: Generative recrusive autoencoders for shape structures. ACM Trans. on Graph., 36(4), 2017.&lt;/p&gt;
&lt;p&gt;[12-14] S. Tulsiani et al. Learning shape abstraction by assembling volumetric primitives. CVPR, 2017.&lt;/p&gt;
&lt;p&gt;[12-15] Garcia-Garcia, A. and Gomez-Donoso, F. et al. (2016). PointNet: A 3D Convolutional Neural Network for real-time object class recognition. IJCNN.&lt;/p&gt;
&lt;p&gt;[12-16] Qi, C. R. and H. Su, et al. (2017). PointNet: Deep learning on point sets for 3D classification and segmentation. CVPR.&lt;/p&gt;
&lt;p&gt;[12-17] Qi, C. R. and Yi, L. et al. (2017). PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space. CVPR.&lt;/p&gt;
&lt;p&gt;[12-18] Yangyan Li, Rui Bu, Mingchao Sun, and Baoquan Chen (2018). PointCNN. arXiv:1801.07791.&lt;/p&gt;
&lt;p&gt;12.3.        本征方法&lt;/p&gt;
&lt;p&gt;本征方法直接将三维形状看成二维流形（Manifold）或由点组成的图（Graph），顶点之间的距离不再是欧氏距离，然后直接将卷积定义在这样的数据结构上，称为非欧氏空间学习的方法或本征方法，如图37。两种典型的网络为测地卷积网络（Geodesic CNN, GCNN）和图卷积网络（Graph-based CNN），如图38，可参考[12-19, 12-20, 12-21, 12-22]。&lt;/p&gt;
&lt;p&gt;[12-19] Masci, J. and Boscaini, D. et al. (2015). Geodesic convolutional neural networks on Riemannian manifolds. ICCV.&lt;/p&gt;
&lt;p&gt;[12-20] Monti, F. and Boscaini, D., Masci. (2016). Geometric deep learning on graphs and manifolds using mixture model CNNs. arXiv preprint arXiv:1611.08402.&lt;/p&gt;
&lt;p&gt;[12-21] Boscaini, D. and Masci, J. et al. (2016). Learning shape correspondence with anisotropic convolutional neural networks. NIPS.&lt;/p&gt;
&lt;p&gt;[12-22] Yi, L. and Su, H. et al. (2017). Syncspeccnn: Synchronized spectral CNN for 3d shape segmentation. CVPR.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image183.jpg&quot; alt=&quot;Image 303&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图37. 本征深度学习方法。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image184.jpg&quot; alt=&quot;Image 304&quot; /&gt;    &lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image185.jpg&quot; alt=&quot;Image 305&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图38. 本征深度学习的具体方法。左：测地卷积；右：图卷积网络。&lt;/p&gt;
&lt;p&gt;12.4.        端到端的生成模型&lt;/p&gt;
&lt;p&gt;在上面的工作中，深度学习用于解决3D形状的识别、分割、匹配和对应等问题。近年来，越来越多的工作致力于3D 模型的构建和生成（大部分都是使用生成-对抗网络GAN）。由于可以自动生成大量的3D模型，对于扩充3D模型数据集具有重要的意义，非常值得大家关注。&lt;/p&gt;
&lt;p&gt;这里简略介绍一下端到端的3D模型生成的一些工作。所谓端到端的生成模型，就是输入是简单易获得的，输出是三维模型，中间无需其他操作。例如，可以从输入的一张照片输出三维体素模型[12-23, 12-24]、点云模型[12-25]、或者网格模型及其参数化[12-26]；[12-27]利用级联的图卷积网络由粗到精逐渐细化网格模型；[12-28]由手绘草图生成参数化的夸张人脸模型。&lt;/p&gt;
&lt;p&gt;[12-23] J. Wu et al. Learning a probabilistic latent space of object shapes via 3D generative-adversarial modeling. Advances in Neural Information Processing Systems, 82-90, 2016.&lt;/p&gt;
&lt;p&gt;[12-24] J. Li et al. Grass: Generative recursive autoencoders for shape structures. Siggraph 2017.&lt;/p&gt;
&lt;p&gt;[12-25] H. Fan et al. A point set generation network for 3D object reconstruction from a single image. CVPR 2017.&lt;/p&gt;
&lt;p&gt;[12-26] T. Groueix et al. AltasNet: A papier approach to learning 3D surface generation. arXiv: 1802.05384, 2018.&lt;/p&gt;
&lt;p&gt;[12-27] N. Wang et al. Pixel2Mesh: Generating 3D mesh models form single RGB iamges. arXiv: 1804.01654.&lt;/p&gt;
&lt;p&gt;[12-28] X. Han et al. DeepSketch2Face: A deep learning based sketching systems for 3D face and caricature modeling. Siggraph 2017.&lt;/p&gt;
&lt;p&gt;【后记】&lt;/p&gt;
&lt;p&gt;此文分享了笔者对基于深度神经网络的深度学习的理解，从逼近论的角度深入浅出地理解了深度学习的原理，了解了整个调试深度网络的“炼丹”过程，是个需要丰富经验的“技术活”。机器学习还有很多其他重要的方法，比如非监督学习和强化学习等，笔者就不一一进行介绍了。&lt;/p&gt;
&lt;p&gt;从本文的分析可知，基于深度神经网络的深度学习背后的运行原理主要基于数据驱动的函数拟合，采用的是“经验主义”的实用方法（比如数学中的最小二乘方法及统计学中的统计回归方法等）；它离真正的人工智能，即能通过图灵测试（Turing Testing）的智能机器还很远。从数学本质上来看，现在基于数据的深度学习方法实质上只有“记忆”能力，并没有对问题的“理解”能力，更没有 人们所期待的“人类智能”。&lt;/p&gt;
&lt;p&gt;从研究的方法论来看，对于要研究的对象（信息或数据），如果在不同的空间（角度）来观察会有对该对象有不同的理解和认知（比如信号处理中，在时域和频域的变换下的Fourier分析），即对象在该空间中所表现的“特征”。因此，&lt;strong&gt;在不同的空间进行变换&lt;/strong&gt;就成为关键的步骤之一。在以往的研究中，需要研究者对对象有深刻的理解来对信息进行特定的变换（即在特定的基函数的变换下）。而深度神经网络实现了端到端的变换，通过多层（深度）复合的变换（多次变换）自动提取了在不同空间的“特征”，即根据数据本身自适应“学习”基函数。这是深度神经网络的巨大优势之一。另外，深度神经网络的另一个巨大优势就是可以通过数量众多的小函数（激活函数）的线性变换及复合来逼近非常复杂的函数，解决了人工设计基函数的困难。因此，基于深度神经网络的深度学习具有非常广泛的实际应用。另外值得一提的是，从Fourier变换到小波变换的发展来看，可以将神经网络中的激活函数变为特殊的局部基函数，使得比现有的全局激活函数适用于更广泛的函数（比如瞬时信号函数），将来再抽时间来详细分析和阐述。&lt;/p&gt;
&lt;p&gt;从计算数学领域来看，&lt;strong&gt;神经网络提供了可以构建任意维度之间的映射和函数&lt;/strong&gt;，这是传统逼近论所无法做到的。这使得人们研究的数据维度和数据类型极大的丰富了，而不只是对1维和2维等低维数据进行分析和处理。这将是一个非常重要的方法论，将对科学领域的研究方法、手段和进展也具有极大的促进和推动作用。有理由相信，深度学习方法（或人工智能方法）将会被当作计算数学、应用科学的计算工具或科研工具，催生新的科研范式，被越来越多地用来解决一些计算数学和其他科学领域中的问题。&lt;/p&gt;
&lt;p&gt;从方法论来看，也可以从&lt;strong&gt;统计学的角度&lt;/strong&gt;来看深度神经网络，将深度神经网络来拟合数据的分布（分布函数），比如生成网络和GAN等，也是近期研究的热点。在本文中对此方法论没有进行展开。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image186.jpg&quot; alt=&quot;Image 306&quot; /&gt;&lt;/p&gt;
&lt;p&gt;图39. Gartner 2018人工智能技术成熟度曲线。（图片来源于互联网）&lt;/p&gt;
&lt;p&gt;五年前（2013年4月），《麻省理工学院技术评论》杂志将深度学习列为2013年十大突破性技术（Breakthrough Technology）之首。经过前几年的高速发展，根据Gartner在7月刚发布的2018人工智能技术成熟度曲线（如图39），深度神经网络及深度学习已从前几年的爬坡阶段到达顶部。未来，相信人们将会更冷静地来看待及发展相关的技术和应用。&lt;/p&gt;
&lt;p&gt;最近，有人提出“可微编程（Differentiable Programming）”的概念，就是将神经网络当成一种语言（而不是一个简单的机器学习的方法），来描述我们客观世界的规律。甚至Yann LeCun曾在Facebook的文章中说道：“Deep Learning Is Dead. Long Live Differentiable Programming!”（深度学习已死，可微编程永生） 这个概念的提出又将神经网络提高了一个层次。&lt;/p&gt;
&lt;p&gt;本文完稿核对时，笔者发现文中有些数学符号（比如&lt;img src=&quot;./%E4%BB%8E%E5%87%BD%E6%95%B0%E9%80%BC%E8%BF%91%E8%AE%BA%E7%9C%8B%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.assets/image187.png&quot; alt=&quot;Image 307&quot; /&gt;等）存在着重复定义与使用，但根据上下文并不影响阅读和理解，因此笔者就不花时间去修正了，在此说明下。&lt;/p&gt;
&lt;p&gt;再次声明下，笔者的主要研究领域为&lt;a href=&quot;http://staff.ustc.edu.cn/~lgliu/Resources/CG/What_is_CG.htm&quot;&gt;计算机图形学&lt;/a&gt;，而非人工智能领域，因此本文仅仅为笔者从外行的角度对基于深度神经网络的深度学习的粗浅理解，而非人工智能领域对深度神经网络和深度学习的权威解释。笔者对其中的有些内容的理解是有限的，甚至是有误的。因此，该文仅供读者参考，不作为专业资料！如有不当之处，还请读者指正！&lt;/p&gt;
&lt;p&gt;【致谢】&lt;/p&gt;
&lt;p&gt;笔者在学习深度神经网络及深度学习的过程中，阅读了许多相关的书籍和论文（比如周志华老师的《机器学习》一书和李宏毅老师的课件等）以及微信订阅号（比如《SigAI》、《人工智能学家》、《深度学习大讲堂》、《老顾谈几何》等），在此表示感谢。也感谢舒振宇、徐凯、韩晓光、沈小勇、胡瑞珍等同行、以及笔者实验室的同事（张举勇、傅孝明、杨周旺等）和学生（陈明佳、方清、杜冬、石磊、欧阳文清、刘中远等），与他们的交流和讨论也让笔者受益匪浅。&lt;/p&gt;
&lt;p&gt;最后，希望您能从本文受益。祝您健康、快乐、成功！&lt;/p&gt;
&lt;p&gt;刘利刚&lt;/p&gt;
&lt;p&gt;中国科学技术大学图形与几何计算实验室(&lt;a href=&quot;http://gcl.ustc.edu.cn/&quot;&gt;http://gcl.ustc.edu.cn&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;个人主页：&lt;a href=&quot;http://staff.ustc.edu.cn/~lgliu&quot;&gt;http://staff.ustc.edu.cn/~lgliu&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;电子邮箱：&lt;a href=&quot;mailto:lgliu@ustc.edu.cn&quot;&gt;lgliu@ustc.edu.cn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2018年8月8日&lt;/p&gt;
</content:encoded></item><item><title>PDF批量操作</title><link>https://tuoyuangui.github.io/website/posts/typora/%E5%85%B6%E4%BB%96%E6%8A%80%E5%B7%A7/pdf%E6%89%B9%E9%87%8F%E6%93%8D%E4%BD%9C/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E5%85%B6%E4%BB%96%E6%8A%80%E5%B7%A7/pdf%E6%89%B9%E9%87%8F%E6%93%8D%E4%BD%9C/</guid><pubDate>Mon, 20 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;PDF批量操作&lt;/h1&gt;
&lt;h2&gt;1、批量转换pdf为jpg&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;    for f in *.pdf; do gs -q -dNOSAFER -r300 -dBATCH -sDEVICE=jpeg -dNOPAUSE -dEPSCrop -sOutputFile=${f%%.*}.jpg $f;  done
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;2、转换pdf为jpg&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;    gs -q -dNOSAFER -r300 -dBATCH -sDEVICE=jpeg -dNOPAUSE -dEPSCrop -sOutputFile=xx.jpg 1.pdf
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;3、批量提取pdf第一页&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;    for f in `ls`; do pdftk touch $f cat 1 output ./dir/$f; done
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;4、打包当前文件夹&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;    zip -r jpg.zip ./
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;5、拼接pdf&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;    pdfunite *.pdf all.pdf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​	当然也可以合并部分，或者按顺序合并&lt;code&gt;pdfunite 1.pdf 2.pdf 3.pdf 4.pdf all-1234.pdf&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;6、压缩（ghostcript）&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;    gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dBATCH -dQUIET -sOutputFile=output.pdf input.pdf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​	即大多数情况使用的压缩方式&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dDownsampleColorImages=true -dColorImageResolution=130 -dNOPAUSE -dBATCH -sOutputFile=output.pdf input.pdf
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;不同的压缩模式
-dPDFSETTINGS=/screen,压缩比最大，输出文件最小，质量最低
-dPDFSETTINGS=/ebook,压缩比稍小，输出文件稍大，质量稍高
-dPDFSETTINGS=/prepress,输出文件信息同Acrobat Distiller &quot;Prepress Optimized&quot;设置
-dPDFSETTINGS=/default,缺省的，
-dColorImageResolution=130可以设置图像DPI大小&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】https://blog.csdn.net/lx_ros/article/details/79887562&lt;/p&gt;
</content:encoded></item><item><title>矩阵运算</title><link>https://tuoyuangui.github.io/website/posts/typora/%E6%95%B0%E5%AD%A6%E6%96%B9%E6%B3%95/%E7%9F%A9%E9%98%B5%E8%BF%90%E7%AE%97/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E6%95%B0%E5%AD%A6%E6%96%B9%E6%B3%95/%E7%9F%A9%E9%98%B5%E8%BF%90%E7%AE%97/</guid><pubDate>Sat, 27 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;矩阵运算&lt;/h1&gt;
&lt;h2&gt;1、矩阵求导公式&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;./%E7%9F%A9%E9%98%B5%E8%BF%90%E7%AE%97.assets/clip_image001.png&quot; alt=&quot;求导代数&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Linux系统</title><link>https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/linux%E7%B3%BB%E7%BB%9F/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/linux%E7%B3%BB%E7%BB%9F/</guid><pubDate>Wed, 17 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Linux系统&lt;/h1&gt;
&lt;h2&gt;1、系统目录&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;bin：存放二进制可执行文件&lt;/p&gt;
&lt;p&gt;boot：存放开机启动程序&lt;/p&gt;
&lt;p&gt;dev：存放设备文件： 字符设备、块设备&lt;/p&gt;
&lt;p&gt;home：存放普通用户&lt;/p&gt;
&lt;p&gt;etc：用户信息和系统配置文件 passwd、group&lt;/p&gt;
&lt;p&gt;lib：库文件：libc.so.6&lt;/p&gt;
&lt;p&gt;root：管理员宿主目录（家目录）&lt;/p&gt;
&lt;p&gt;usr：用户资源管理目录&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;2、文件类型&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Linux系统文件类型： 7/8 种&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;普通文件：-&lt;/p&gt;
&lt;p&gt;目录文件：d&lt;/p&gt;
&lt;p&gt;字符设备文件：c&lt;/p&gt;
&lt;p&gt;块设备文件：b&lt;/p&gt;
&lt;p&gt;软连接：l&lt;/p&gt;
&lt;p&gt;管道文件：p&lt;/p&gt;
&lt;p&gt;套接字：s&lt;/p&gt;
&lt;p&gt;未知文件。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;3、软硬链接&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;软连接：快捷方式&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ln -s file file.hard
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;为保证软连接可以任意搬移， 创建时务必对源文件使用绝对路径。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;硬链接：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ln file file.hard
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;操作系统给每一个文件赋予唯一的 inode，当有相同inode的文件存在时，彼此同步。&lt;/p&gt;
&lt;p&gt;删除时，只将硬链接计数减一。减为0时，inode 被释放。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;4、用户操作&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;创建用户：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo adduser 新用户名        --- useradd

sudo useradd  -m -g siig -d /data1/userlogin/liguolong -s /bin/bash name
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;修改文件所属用户：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo chown 新用户名 待修改文件。

sudo chown wangwu a.c
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;删除用户：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo deluser 用户名
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;创建用户组：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo addgroup 新组名
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;修改文件所属用户组：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo chgrp 新用户组名 待修改文件。

sudo chgrp g88 a.c
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;删除组：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo delgroup 用户组名
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;使用chown 一次修改所有者和所属组：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo chown 所有者：所属组 待操作文件。
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Hilbert 变换</title><link>https://tuoyuangui.github.io/website/posts/typora/%E6%95%B0%E5%AD%A6%E6%96%B9%E6%B3%95/hilbert%E5%8F%98%E6%8D%A2/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E6%95%B0%E5%AD%A6%E6%96%B9%E6%B3%95/hilbert%E5%8F%98%E6%8D%A2/</guid><pubDate>Sat, 13 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Hilbert 变换&lt;/h1&gt;
&lt;h2&gt;1、在GPU实现&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#include&amp;lt;stdio.h&amp;gt;
#include&amp;lt;stdlib.h&amp;gt;
#include&amp;lt;string.h&amp;gt;
#include&amp;lt;cuda_runtime.h&amp;gt;
#include &amp;lt;cufft.h&amp;gt;
extern &quot;C&quot; {
    #include&amp;lt;rsf.h&amp;gt;
}

__global__ void apply_hilbert_phase_shift(cufftComplex* input, cufftComplex* output, int size) {
    int idx = blockIdx.x * blockDim.x + threadIdx.x;
    if (idx &amp;lt; size) {
        // Apply phase shift for the Hilbert transform
        float phaseShift = (idx &amp;gt; size / 2) ? 1.0f : -1.0f;
        float tmp = input[idx].y;
        output[idx].y = input[idx].x*phaseShift;
        output[idx].x = -tmp*phaseShift;
    }
}

__global__ void scale_data(float *data, cufftComplex* output, int n, float scale)
{
    int idx = blockIdx.x * blockDim.x + threadIdx.x;
    if (idx &amp;lt; n) {
       output[idx].x = data[idx] *scale;
       output[idx].y = 0.0f;
    }
}

__global__ void get_data(float *data, cufftComplex* output, int n)
{
    int idx = blockIdx.x * blockDim.x + threadIdx.x;
    if (idx &amp;lt; n) {
        data[idx]= output[idx].x;
    }
}

void  hilbert_freq(float *indata, float *hilb,  int n1, int n2)
{
    cufftHandle plan;
    cufftComplex* inputComplex;
    cufftComplex* outputComplex;
    cufftResult result;
    cufftPlan1d(&amp;amp;plan, n1, CUFFT_C2C, 1);
    cudaMalloc((void**)&amp;amp;inputComplex, n1 * sizeof(cufftComplex));
    cudaMalloc((void**)&amp;amp;outputComplex, n1 * sizeof(cufftComplex));
    int threadsPerBlock = 256;
    int blocksPerGrid = (n1 + threadsPerBlock - 1) / threadsPerBlock;
    for(int i2=0; i2&amp;lt;n2; i2++){
        cudaMemset(outputComplex, 0, n1 * sizeof(cufftComplex));
        cudaMemset(inputComplex,  0, n1 * sizeof(cufftComplex));
        scale_data&amp;lt;&amp;lt;&amp;lt;(n1+255)/256, 256&amp;gt;&amp;gt;&amp;gt;(&amp;amp;indata[i2*n1], inputComplex, n1, 1.0f /n1);
        result = cufftExecC2C(plan, inputComplex, inputComplex,  CUFFT_FORWARD);
        if (result != CUFFT_SUCCESS) {
            fprintf(stderr, &quot;CUFFT error: FFT execution failed, code %d \n&quot;, result);
            exit(1);
        }
        apply_hilbert_phase_shift&amp;lt;&amp;lt;&amp;lt;blocksPerGrid, threadsPerBlock&amp;gt;&amp;gt;&amp;gt;(inputComplex, outputComplex, n1);
        result = cufftExecC2C(plan,  outputComplex, outputComplex,  CUFFT_INVERSE);
        get_data&amp;lt;&amp;lt;&amp;lt;(n1+255)/256, 256&amp;gt;&amp;gt;&amp;gt;(&amp;amp;hilb[i2*n1], outputComplex, n1);
        if (result != CUFFT_SUCCESS) {
            fprintf(stderr, &quot;CUFFT error: FFT execution failed, code %d \n&quot;, result);
            exit(1);
        }
    }
    cufftDestroy(plan);
    cudaFree(inputComplex);
    cudaFree(outputComplex);
}

int main(int argc, char *argv[]){

    int n1,n2;
    float *data, *hilb;
    float *d_data, *d_hilb;
    sf_file in, out;

    sf_init (argc,argv);

    in = sf_input(&quot;in&quot;);
    out = sf_output(&quot;out&quot;);

    if (SF_FLOAT != sf_gettype(in)) sf_error(&quot;Need float input&quot;);
    if (!sf_histint(in,&quot;n1&quot;,&amp;amp;n1)) sf_error(&quot;No n1= in input&quot;);
    n2 = sf_leftsize(in,1);

    data = sf_floatalloc(n1*n2);
    hilb = sf_floatalloc(n1*n2);

    cudaMalloc((float**)&amp;amp;d_data,n1*n2*sizeof(float)); cudaMemset(d_data,0,n1*n2*sizeof(float));
    cudaMalloc((float**)&amp;amp;d_hilb,n1*n2*sizeof(float)); cudaMemset(d_hilb,0,n1*n2*sizeof(float));

    sf_floatread(data,n1*n2,in); cudaMemcpy(d_data,data,n1*n2*sizeof(float),cudaMemcpyHostToDevice);

    hilbert_freq(d_data, d_hilb,  n1, n2);

    cudaMemcpy(hilb, d_hilb, n1*n2*sizeof(float), cudaMemcpyDeviceToHost);

    sf_floatwrite(hilb,n1*n2,out);

    cudaFree(d_data);
    cudaFree(d_hilb);
    exit(0);
}

&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>C 头文件重复定义问题</title><link>https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/%E5%A4%B4%E6%96%87%E4%BB%B6%E9%87%8D%E5%A4%8D%E5%AE%9A%E4%B9%89/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/%E5%A4%B4%E6%96%87%E4%BB%B6%E9%87%8D%E5%A4%8D%E5%AE%9A%E4%B9%89/</guid><pubDate>Sun, 17 Dec 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;C 头文件重复定义问题&lt;/h1&gt;
&lt;p&gt;​	头文件是扩展名为 &lt;strong&gt;.h&lt;/strong&gt; 的文件，包含了 C 函数声明和宏定义，被多个源文件中引用共享。有两种类型的头文件：程序员编写的头文件和编译器自带的头文件。在程序中要使用头文件，需要使用 C 预处理指令 &lt;code&gt;#include &lt;/code&gt;来引用它。前面我们已经看过 &lt;strong&gt;stdio.h&lt;/strong&gt; 头文件，它是编译器自带的头文件。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;引用头文件相当于复制头文件的内容&lt;/strong&gt;，但是我们不会直接在源文件中复制头文件的内容，因为这么做很容易出错，特别在程序是由多个源文件组成的时候。&lt;/p&gt;
&lt;p&gt;A simple practice in C 或 C++ 程序中，建议把所有的常量、宏、系统全局变量和函数原型写在头文件中，在需要的时候随时引用这些头文件。&lt;/p&gt;
&lt;p&gt;使用预处理指令 &lt;strong&gt;#include&lt;/strong&gt; 可以引用用户和系统头文件。它的形式有以下两种：&lt;/p&gt;
&lt;p&gt;这种形式用于引用系统头文件。它在系统目录的标准列表中搜索名为 file 的文件。在编译源代码时，您可以通过&lt;code&gt; -I&lt;/code&gt; 选项把目录前置在该列表前。&lt;/p&gt;
&lt;p&gt;这种形式用于引用用户头文件。它在包含当前文件的目录中搜索名为 file 的文件。在编译源代码时，您可以通过&lt;code&gt; -I&lt;/code&gt; 选项把目录前置在该列表前。&lt;/p&gt;
&lt;h2&gt;1、#ifndef和#pragma once两者的使用方式有何区别？&lt;/h2&gt;
&lt;p&gt;示例代码如下：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方式一：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#ifndef __SOMEFILE_H__
#define  __SOMEFILE_H__
 ... ... // 声明、定义语句
#endif
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;方式二：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#pragma once
 ... ... // 声明、定义语句
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;&lt;strong&gt;两者各有何特点？&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;（1）&lt;code&gt;#ifndef&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;#ifndef&lt;/code&gt;的方式受C/C++语言标准支持。它不仅可以保证同一个文件不会被包含多次，也能保证内容完全相同的两个文件（或者代码片段）不会被不小心同时包含。&lt;/p&gt;
&lt;p&gt;当然，&lt;strong&gt;缺点就是如果不同头文件中的宏名不小心“撞车”，可能就会导致你看到头文件明明存在，但编译器却硬说找不到声明的状况——这种情况有时非常让人郁闷。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;由于编译器每次都需要打开头文件才能判定是否有重复定义，因此在编译大型项目时，&lt;code&gt;ifndef&lt;/code&gt;会使得编译时间相对较长，因此一些编译器逐渐开始支持&lt;code&gt;#pragma once&lt;/code&gt;的方式。&lt;/p&gt;
&lt;p&gt;（2）&lt;code&gt;#pragma once&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;#pragma once&lt;/code&gt; 一般由编译器提供保证：同一个文件不会被包含多次。注意这里所说的“同一个文件”是指物理上的一个文件，而不是指内容相同的两个文件。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;你无法对一个头文件中的一段代码作&lt;code&gt;pragma once&lt;/code&gt;声明，而只能针对文件。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;其好处是，你不必再担心宏名冲突了，当然也就不会出现宏名冲突引发的奇怪问题。大型项目的编译速度也因此提高了一些。&lt;/p&gt;
&lt;p&gt;对应的缺点就是如果某个头文件有多份拷贝，本方法不能保证他们不被重复包含。当然，相比宏名冲突引发的“找不到声明”的问题，这种重复包含很容易被发现并修正。&lt;/p&gt;
&lt;p&gt;另外，这种方式不支持跨平台！&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;两者之间有什么联系？&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt; #pragma once&lt;/code&gt; 方式产生于&lt;code&gt;#ifndef&lt;/code&gt;之后，因此很多人可能甚至没有听说过。目前看来&lt;code&gt;#ifndef&lt;/code&gt;更受到推崇。因为&lt;code&gt;#ifndef&lt;/code&gt;受C/C++语言标准的支持，不受编译器的任何限制；&lt;/p&gt;
&lt;p&gt;而&lt;code&gt;#pragma once&lt;/code&gt;方式却不受一些较老版本的编译器支持，一些支持了的编译器又打算去掉它，所以它的兼容性可能不够好。&lt;/p&gt;
&lt;p&gt;一般而言，当程序员听到这样的话，都会选择&lt;code&gt;#ifndef&lt;/code&gt;方式，为了努力使得自己的代码“存活”时间更久，通常宁愿降低一些编译性能，这是程序员的个性，当然这是题外话啦。&lt;/p&gt;
&lt;p&gt;还看到一种用法是把两者放在一起的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; #pragma once
  #ifndef __SOMEFILE_H__
  #define __SOMEFILE_H__
  ... ... // 声明、定义语句
  #endif
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;总结：&lt;/p&gt;
&lt;p&gt;​    看起来似乎是想兼有两者的优点。不过只要使用了&lt;code&gt;#ifndef&lt;/code&gt;就会有宏名冲突的危险，也无法避免不支持#pragma once的编译器报错，所以混用两种方法似乎不能带来更多的好处，倒是会让一些不熟悉的人感到困惑。&lt;/p&gt;
&lt;p&gt;​    选择哪种方式，应该在了解两种方式的情况下，视具体情况而定。只要有一个合理的约定来避开缺点，我认为哪种方式都是可以接受的。而这个已经不是标准或者编译器的责任了，应当由程序员自己或者小范围内的开发规范来搞定。&lt;/p&gt;
&lt;p&gt;为了避免同一个文件被&lt;code&gt;include&lt;/code&gt;多次&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;1  #ifndef方式
2  #pragma once方式&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;#ifndef&lt;/code&gt;的方式依赖于宏名字不能冲突，这不光可以保证同一个文件不会被包含多次，也能保证内容完全相同的两个文件不会被不小心同时包含。当然，缺点就是如果不同头文件的宏名不小心“撞车”，可能就会导致头文件明明存在，编译器却硬说找不到声明的状况&lt;/p&gt;
&lt;p&gt;`#pragma once`则由编译器提供保证：同一个文件不会被包含多次。注意这里所说的“同一个文件”是指物理上的一个文件，而不是指内容相同的两个文件。带来的好处是，你不必再费劲想个宏名了，当然也就不会出现宏名碰撞引发的奇怪问题。对应的缺点就是如果某个头文件有多份拷贝，本方法不能保证他们不被重复包含。当然，相比宏名碰撞引发的“找不到声明”的问题，重复包含更容易被发现并修正。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方式一由语言支持所以移植性好，方式二 可以避免名字冲突&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;2、 为什么 stdio.h 不会被重定义&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;#include&lt;/code&gt;原则上只能包含头文件，不能包含cpp文件，否则可能出现重复定义的问题。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;stdio.h&lt;/code&gt;等标准库头文件中&lt;strong&gt;已经含有防止重复包含的预编译指令&lt;/strong&gt;，多次包含这些文件也不会出现任何问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】&lt;a href=&quot;https://www.cnblogs.com/zhjblogs/p/14166866.html&quot;&gt;https://www.cnblogs.com/zhjblogs/p/14166866.html&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>CUDA性能分析</title><link>https://tuoyuangui.github.io/website/posts/typora/cuda/cuda%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/cuda/cuda%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90/</guid><pubDate>Sun, 26 Nov 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;CUDA性能分析&lt;/h1&gt;
&lt;h2&gt;命令&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;nsys profile --stats=true
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;示例&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;iguolong@node01:~/SOFTWARE/LGLSOFTWARE/src/2D/fdtd$ nsys profile --stats=true ./gpu2dafdshots  vp=vel.rsf  den=den.rsf geo=geo.txt nbell=2  npml=10 fm=7 freesrf=y log=log.txt int NGPU=2 GPU_lists=0,2
WARNING: CPU IP/backtrace sampling not supported, disabling.
Try the &apos;nsys status --environment&apos; command to learn more.

WARNING: CPU context switch tracing not supported, disabling.
Try the &apos;nsys status --environment&apos; command to learn more.

Generating &apos;/tmp/nsys-report-dd6b.qdstrm&apos;
[1/8] [========================100%] report1.nsys-rep
[2/8] [========================100%] report1.sqlite
[3/8] Executing &apos;nvtxsum&apos; stats report
SKIPPED: /data1/Uers_Login/liguolong/SOFTWARE/LGLSOFTWARE/src/2D/fdtd/report1.sqlite does not contain NV Tools Extension (NVTX) data.

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​    [4/8] Executing &apos;osrtsum&apos; stats report&lt;/p&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;Time (%)  Total Time (ns)  Num Calls    Avg (ns)       Med (ns)      Min (ns)     Max (ns)     StdDev (ns)            Name
 44.3    1,742,654,423         35   49,790,126.4   29,092,600.0        1,565  239,680,504   56,054,598.9  poll
 25.7    1,009,566,364          4  252,391,591.0  160,490,033.0   30,028,539  658,557,759  277,831,157.7  sem_wait
 25.4    1,000,183,939          2  500,091,969.5  500,091,969.5  500,084,193  500,099,746       10,997.6  pthread_cond_timedwait
  3.0      116,840,484      1,197       97,611.1       11,747.0        1,033   15,257,078      792,696.0  ioctl
  1.0       38,133,974         12    3,177,831.2        5,009.0        1,401   38,041,261   10,979,139.6  fgets
  0.4       14,183,720          1   14,183,720.0   14,183,720.0   14,183,720   14,183,720            0.0  dup
  0.1        4,953,654         16      309,603.4        1,861.0        1,141    4,924,647    1,230,678.5  read
  0.1        3,183,639         55       57,884.3       10,100.0        5,280      963,461      177,045.2  mmap64
  0.0          700,807         18       38,933.7       22,897.5       11,785      119,303       36,505.9  sem_timedwait
  0.0          538,426         35       15,383.6        7,186.0        1,550      189,496       32,771.7  mmap
  0.0          489,544          1      489,544.0      489,544.0      489,544      489,544            0.0  popen
  0.0          464,601         96        4,839.6        4,271.5        1,888       11,338        1,812.6  open64
  0.0          424,590          7       60,655.7       63,006.0       39,092       68,901        9,969.2  pthread_create
  0.0          416,040         92        4,522.2        2,548.5        1,117       58,340        7,089.2  fopen
  0.0          262,854         51        5,154.0        3,291.0        1,146       33,709        5,664.8  fread
  0.0          218,350          2      109,175.0      109,175.0        6,742      211,608      144,862.1  send
  0.0          198,363          1      198,363.0      198,363.0      198,363      198,363            0.0  pthread_mutex_lock
  0.0          165,822         10       16,582.2        8,688.0        5,319       76,080       21,510.9  fflush
  0.0          127,939         50        2,558.8        1,705.0        1,003       18,410        2,843.2  fclose
  0.0           86,016          8       10,752.0        3,164.0        1,003       59,719       20,041.5  recvmsg
  0.0           74,485          1       74,485.0       74,485.0       74,485       74,485            0.0  pthread_cond_wait
  0.0           44,252          9        4,916.9        4,474.0        1,885        7,006        1,720.7  munmap
  0.0           28,084          5        5,616.8        4,728.0        2,872       10,850        3,041.8  pthread_cond_broadcast
  0.0           27,774         16        1,735.9        1,601.0        1,097        2,633          533.3  write
  0.0           24,613          6        4,102.2        4,925.0        1,263        6,413        2,100.4  open
  0.0           21,356          5        4,271.2        3,835.0        3,288        6,142        1,179.1  freopen
  0.0           18,862          3        6,287.3        7,239.0        3,818        7,805        2,157.1  socket
  0.0           15,586          3        5,195.3        5,928.0        3,097        6,561        1,844.6  pipe2
  0.0           14,706          4        3,676.5        2,687.0        1,967        7,365        2,514.5  fwrite
  0.0           14,072          1       14,072.0       14,072.0       14,072       14,072            0.0  connect
  0.0           10,824          2        5,412.0        5,412.0        4,800        6,024          865.5  fopen64
  0.0           10,018          6        1,669.7        1,693.0        1,031        2,176          410.2  fcntl
  0.0            6,324          1        6,324.0        6,324.0        6,324        6,324            0.0  putc
  0.0            4,877          2        2,438.5        2,438.5        2,001        2,876          618.7  bind
  0.0            1,009          1        1,009.0        1,009.0        1,009        1,009            0.0  fputs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[5/8] Executing &apos;cudaapisum&apos; stats report&lt;/p&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt; Time (%)  Total Time (ns)  Num Calls  Avg (ns)   Med (ns)   Min (ns)  Max (ns)   StdDev (ns)           Name
  92.6      497,094,802    120,054    4,140.6    4,068.0     3,283    728,164     3,541.6  cudaLaunchKernel
  6.2       33,100,190      2,235   14,809.9    3,638.0     2,852  9,293,949    304,133.2  cudaMemcpyAsync
  0.5        2,602,744         90   28,919.4    5,115.5       245    424,303     82,776.6  cudaFree
  0.3        1,829,814         78   23,459.2    6,066.0     3,972    251,066     49,384.5  cudaMalloc
  0.2        1,332,591          2  666,295.5  666,295.5    19,398  1,313,193    914,851.2  cudaHostAlloc
  0.1          427,207         78    5,477.0    4,941.5     2,507     19,464      2,742.1  cudaMemsetAsync
  0.1          401,078          2  200,539.0  200,539.0    18,862    382,216    256,930.1  cudaFreeHost
  0.0           93,598          2   46,799.0   46,799.0    22,372     71,226     34,545.0  cudaMemset
  0.0           43,855          3   14,618.3    8,381.0     6,087     29,387     12,841.4  cudaStreamCreate
  0.0           42,362          6    7,060.3    6,619.0     4,485     11,430      2,742.8  cudaEventRecord
  0.0           18,465          6    3,077.5    1,425.5       464      8,707      3,401.4  cudaEventCreate
  0.0           17,320          3    5,773.3    6,277.0     4,083      6,960      1,503.2  cudaStreamDestroy
  0.0           10,439          3    3,479.7    3,867.0     1,953      4,619      1,374.6  cudaStreamSynchronize
  0.0            8,055          3    2,685.0    2,640.0     2,544      2,871        168.1  cudaEventSynchronize
  0.0            5,019          6      836.5      696.5       365      1,565        526.0  cudaEventDestroy
  0.0            1,400          1    1,400.0    1,400.0     1,400      1,400          0.0  cuModuleGetLoadingMode
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[6/8] Executing &apos;gpukernsum&apos; stats report&lt;/p&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt; Time (%)  Total Time (ns)  Instances  Avg (ns)  Med (ns)  Min (ns)  Max (ns)  StdDev (ns)     GridXYZ         BlockXYZ               Name
 36.4      163,783,064     30,003   5,458.9   5,728.0     4,864     6,400        378.1    13   25    1    16   16    1  _kernel_Acoustic2d_cpml_t
 32.4      146,070,544     30,003   4,868.5   5,088.0     4,383     5,728        335.5    13   25    1    16   16    1  _kernel_Acoustic2d_cpml_v
 15.9       71,828,147     30,003   2,394.0   2,495.0     2,175     3,135        146.8    24    1    1    16    1    1  _kernel_seis2d_record
 15.2       68,640,277     30,003   2,287.8   2,336.0     2,079     2,944        133.5     5    5    1     1    1    1  _kernel_add2d_bellwlt
  0.0           14,336          6   2,389.3   2,448.0     2,208     2,528        144.1    14   25    1     1   16    1  _kernel_mod2d_pad_z1
  0.0           13,248          6   2,208.0   2,272.0     2,016     2,304        126.4    13   14    1    16    1    1  _kernel_mod2d_pad_x0
  0.0           13,184          6   2,197.3   2,256.0     2,016     2,304        130.6    13   14    1    16    1    1  _kernel_mod2d_pad_x1
  0.0           13,152          6   2,192.0   2,256.0     1,984     2,272        119.3     4   25    1     1   16    1  _kernel_mod2d_pad_z0
  0.0           12,321          3   4,107.0   4,129.0     3,904     4,288        192.9    13   25    1    16   16    1  _kernel_vel_trans2d
  0.0            9,120          3   3,040.0   2,976.0     2,656     3,488        419.7   626    1    1    16    1    1  _kernel_pro_2d_sou_P
  0.0            7,360          3   2,453.3   2,528.0     2,272     2,560        157.9    10   25    1     1   16    1  _kernel_cpml2d_abcz1
  0.0            6,752          3   2,250.7   2,336.0     2,080     2,336        147.8    13   10    1    16    1    1  _kernel_cpml2d_abcx0
  0.0            6,720          3   2,240.0   2,304.0     2,080     2,336        139.5    13   10    1    16    1    1  _kernel_cpml2d_abcx1
  0.0            5,792          3   1,930.7   1,984.0     1,792     2,016        121.2     5    5    1     1    1    1  _kernel_bell2d_coff
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[7/8] Executing &apos;gpumemtimesum&apos; stats report&lt;/p&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;Time (%)  Total Time (ns)  Count   Avg (ns)     Med (ns)    Min (ns)   Max (ns)   StdDev (ns)      Operation
 86.8       22,741,397      3  7,580,465.7  7,258,355.0  7,136,657  8,346,385    666,090.8  [CUDA memcpy DtoH]
 12.3        3,222,238  2,232      1,443.7      1,440.0        864      4,800        174.3  [CUDA memcpy HtoD]
  0.9          236,702     80      2,958.8      2,240.0        831     21,536      4,038.6  [CUDA memset]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[8/8] Executing &apos;gpumemsizesum&apos; stats report&lt;/p&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;Total (MB)  Count  Avg (MB)  Med (MB)  Min (MB)  Max (MB)  StdDev (MB)      Operation
 51.246     80     0.641     0.008     0.000    14.761        2.808  [CUDA memset]
 44.284      3    14.761    14.761    14.761    14.761        0.000  [CUDA memcpy DtoH]
  1.795  2,232     0.001     0.001     0.000     0.040        0.001  [CUDA memcpy HtoD]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Generated:
/data1/Uers_Login/liguolong/SOFTWARE/LGLSOFTWARE/src/2D/fdtd/report1.nsys-rep
/data1/Uers_Login/liguolong/SOFTWARE/LGLSOFTWARE/src/2D/fdtd/report1.sqlite&lt;/p&gt;
</content:encoded></item><item><title>Lapack 数学库动态静态库安装</title><link>https://tuoyuangui.github.io/website/posts/typora/%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85/lapack/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85/lapack/</guid><pubDate>Thu, 23 Nov 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Lapack 数学库动态静态库安装&lt;/h1&gt;
&lt;p&gt;​	&lt;strong&gt;LAPACK（Linear Algebra PACKage）库&lt;/strong&gt;，是用Fortran语言编写的线性代数计算库，包含线性方程组求解（AX=b）、矩阵分解、矩阵求逆、求矩阵特征值、奇异值等。该库用BLAS库做底层运算，许多高层的数学库都用BLAS和LAPACK做底层。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; **BLAS（Basic Linear Algebra Subprograms）库**，是用Fortran语言实现的向量和矩阵运算库,是许多数值计算软件库的核心, 但也有一些其它的包装, 如cblas是C语言, 也有C++的包装, boost/ublas 是C++ template class的实现； 另外还有一些特别的实现, 如intel MKL, AMD core math library blas就是做向量、矩阵的基本运算，如加、减、乘等操作。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​		下载地址：https://netlib.org/lapack/&lt;/p&gt;
&lt;p&gt;​		安装前提：有Cmake， GUN complier， python&lt;/p&gt;
&lt;h2&gt;1、编译&lt;/h2&gt;
&lt;h3&gt;1.1 安装动态Lapack库&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# dy-lib
$ tar -xvzf lapack-*.tar.gz
$ cd lapack-*
$ mkdir build &amp;amp;&amp;amp; cd build
$ cmake .. -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_SHARED_LIBS=ON -DCBLAS=ON   # 编译lapack 和 cblas
$ make -j 20   # 采用20个线程编译
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;1.2 安装静态Lapack库&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt; # static-lib
 $ cd lapack-*
 $ cp make.inc.example make.inc    # 设置头文件
 $ make -j20 blaslib
 $ make -j20 cblaslib
 $ make -j20 lapacklib
 $ make -j20 lapackelib
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;2、设置库和头文件&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt; # static-lib and dy-lib
 $ cd lapack-*
 # lib
 $ cp -r build/lib/ ./lib
 $ cp *.a ./lib
 # include
 $ cp CBLAS/incude/* ./include
 $ cp LAPACKE/incude/* ./include
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;3、配置环境变量&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;./Lapack.assets/%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F.png&quot; alt=&quot;环境&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Python “@” 符号</title><link>https://tuoyuangui.github.io/website/posts/typora/python/python-%E7%AC%A6%E5%8F%B7/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/python/python-%E7%AC%A6%E5%8F%B7/</guid><pubDate>Wed, 08 Nov 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Python “@” 符号&lt;/h1&gt;
&lt;h2&gt;1、 @设置函数属性值&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 比如 @property可以使类方法转化成属性
class Student():
    def __init__(self, name):
        self._name = name
    def sname(self):
        return self._name
stu = Student(&apos;xiaoming&apos;)
print(stu.sname())
#xiaoming

class Student():
    def __init__(self, name):
        self._name = name
    @property
    def sname(self):
        return self._name
stu = Student(&apos;xiaoming&apos;)
print(stu.sname)
#xiaoming
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;2、 @ 作为numpy的运算符（np.dot()）&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;from numpy import array,dot
a=array([[1,2],
        [1,2]])
b=array([[5,6],
        [5,6]])
print(a@b)
print(dot(a,b))

#[[15 18]
# [15 18]]
#[[15 18]
# [15 18]]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;c = np.dot(a,v)&lt;/code&gt; # 向量点积或矩阵乘法，shape不合法时报错   或者 &lt;code&gt;c=a.dot(b)&lt;/code&gt;
&lt;code&gt;d = np.multiply(a,v)&lt;/code&gt; # 先广播后对位相乘，shape无法广播时报错
&lt;code&gt;e = a@v &lt;/code&gt;# 向量点积或矩阵乘法，shape不合法时报错
&lt;code&gt;f = a*v # array&lt;/code&gt;：先广播后对位相乘；matrix：矩阵乘法，shape不合法时报错&lt;/p&gt;
&lt;h1&gt;Reference&lt;/h1&gt;
&lt;p&gt;[1] &lt;a href=&quot;https://zhuanlan.zhihu.com/p/265779360&quot;&gt;python @修饰符用法 - 知乎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[2] &lt;a href=&quot;https://blog.csdn.net/m0_53392188/article/details/118862901&quot;&gt;python:@运算符（numpy库中的运算符）-CSDN博客&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[3] &lt;a href=&quot;https://zhuanlan.zhihu.com/p/480960607&quot;&gt;Python NumPy中 dot() / multiply() / @ / * 之间的区别 - 知乎&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Jupyter工作站配置</title><link>https://tuoyuangui.github.io/website/posts/typora/%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85/jupyter%E5%B7%A5%E4%BD%9C%E7%AB%99/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85/jupyter%E5%B7%A5%E4%BD%9C%E7%AB%99/</guid><pubDate>Sat, 14 Oct 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Jupyter工作站配置&lt;/h1&gt;
&lt;h2&gt;1、安装 jupyter notebook&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;conda install jupyter
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;2、配置Jupyter-config&lt;/h2&gt;
&lt;h3&gt;2.1、生成jupyter配置文件&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;jupyter-notebook --generate-config
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;该命令执行后会生成&lt;code&gt;./jupyter/jupyter_notebook_config.py&lt;/code&gt;的文件&lt;/p&gt;
&lt;h3&gt;2.2 修改Jupyter_notebook_config.py该配置文件&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;c.NotebookApp.ip = &apos;&apos;   # 设置访问IP（工作站静态IP）

c.NotebookApp.open_browser = False  # 默认不自动打开浏览器

c.NotebookApp.password = &apos;&apos;            # 输入刚刚生成的密钥

c.NotebookApp.port = 8888            # 设置端口， 其他端口应该也是可以的

c.NotebookApp.notebook_dir = &apos;&apos;   # 设置Jupyternotebook 打开的根目录
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;上述代码&lt;code&gt;c.NotebookApp.password = &apos;&apos;&lt;/code&gt;的设置，需要你在服务器上依次执行如下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;python
from notebook.auth import passwd
passwd()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;大概如图：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./Jupyter%E5%B7%A5%E4%BD%9C%E7%AB%99.assets/image-20241118203036245.png&quot; alt=&quot;image-20241118203036245&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./Jupyter%E5%B7%A5%E4%BD%9C%E7%AB%99.assets/clip_image001.png&quot; alt=&quot;计算机生成了可选文字: (Imgseg)wuguanghui@node/&amp;gt;python python3．7．7(default,May72929，21：25：33〕 [GCC7．3．G] Anaconda,．On Type&amp;quot;help&amp;quot; &amp;quot;copyright 0r到 &amp;gt;&amp;gt;&amp;gt;fromnotebook.authimportpasswd &amp;gt;&amp;gt;&amp;gt;passwd()&apos; rrermatIOn&quot; /&gt;&lt;/p&gt;
&lt;p&gt;然后运行完passwd()之后会得到一串密码，放入&lt;code&gt;c.NotebookApp.password = &apos;&apos;&lt;/code&gt;里面。&lt;/p&gt;
&lt;p&gt;上述代码&lt;code&gt;c.NotebookApp.notebook_dir = &apos;&apos;&lt;/code&gt;的设置，这里你需要在引号中加入路径即可。&lt;/p&gt;
&lt;p&gt;或者&lt;code&gt;jupyter notebook password&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./Jupyter%E5%B7%A5%E4%BD%9C%E7%AB%99.assets/clip_image002.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Reference：&lt;/h2&gt;
&lt;p&gt;【1】https://blog.csdn.net/W_nihao_123456/article/details/108421145&lt;/p&gt;
</content:encoded></item><item><title>fftw 编译安装教程</title><link>https://tuoyuangui.github.io/website/posts/typora/%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85/fftw/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85/fftw/</guid><pubDate>Tue, 03 Oct 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;fftw 编译安装教程&lt;/h1&gt;
&lt;h2&gt;1、DFT &amp;amp;&amp;amp; FFT-&amp;gt; FFTW&lt;/h2&gt;
&lt;p&gt;DFT（Discrete Fourier Transform），即离散傅里叶变换，是傅里叶变换在时域和频域上都呈离散的形式,将信号的时域采样变换为其DTFT的频域采样。&lt;/p&gt;
&lt;p&gt;FFT（Fast Fourier Transformation），即为快速傅氏变换，是离散傅氏变换（DFT）的快速算法，它是根据离散傅氏变换的奇、偶、虚、实等特性，对离散傅立叶变换的算法进行改进获得的。&lt;/p&gt;
&lt;p&gt;FFTW ( the Faster Fourier Transform in the West)是一个快速计算离散傅里叶变换的标准C语言程序集，其由MIT的M.Frigo和S. Johnson开发。可计算一维或多维实和复数据以及任意规模的DFT。&lt;/p&gt;
&lt;p&gt;官网地址：&lt;a href=&quot;http://www.fftw.org/&quot;&gt;传送门 (opens new window)&lt;/a&gt;，下载地址：&lt;a href=&quot;http://www.fftw.org/download.html&quot;&gt;传送门 (opens new window)&lt;/a&gt;。&lt;/p&gt;
&lt;h2&gt;2 、FFTW库所需的编译环境&lt;/h2&gt;
&lt;p&gt;GNU Compiler + MPI Compiler （如果编译mpi版的fftw）&lt;/p&gt;
&lt;h3&gt;2.1 默认编译&lt;/h3&gt;
&lt;p&gt;​	安装fftw仅需要遵循常见的三步骤即可（configure+make+make install），在这里先介绍一下默认安装，再然着重介绍一些configure的配置选项。&lt;/p&gt;
&lt;p&gt;以fftw-3.3.6-pl2.tar.gz为例，先从官网下载该压缩包。解压缩，并进入源码目录进行编译即可。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ tar zxvf fftw-3.3.6-pl2.tar.gz
$ cd fftw-3.3.6-pl2
$ ./configure
$ make
$ make install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样就可以把fftw库按照默认配置，安装到默认的路径下。 使用的是GNU的编译器，安装到的是/usr/local下面。&lt;/p&gt;
&lt;h3&gt;2.2 优化编译参数介绍&lt;/h3&gt;
&lt;p&gt;但是，我们通常会依据./configure -help得到的信息来添加一些参数来达到优化编译的目录。 接下来我们使用命令查看一些常用配置参数：&lt;/p&gt;
&lt;p&gt;设定安装目录&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Installation directories:
--prefix=PREFIX    install architecture-independent files in PREFIX[/usr/local]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;是否编译动态库&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Optional Features:
--enable-shared[=PKGS]    build shared libraries [default=no]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;是否编译静态库&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;--enable-static[=PKGS]    build static libraries [default=yes]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;是否编译单精度版本&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;--enable-single         compile fftw in single precision
--enable-float          synonym for --enable-single
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;开启针对特定机器架构的优化，这个取决于机器CPU（下面有介绍）。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;--enable-sse            enable SSE optimizations
--enable-sse2           enable SSE/SSE2 optimizations
--enable-avx            enable AVX optimizations
--enable-avx2           enable AVX2 optimizations
--enable-neon           enable ARM NEON optimizations
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;开启积和熔加运算(Fused Multiply-Add/FMA)的优化&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;--enable-fma            enable optimizations for machineswith fused multiply-add
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;是否编译mpi版的fftw库&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;--enable-mpi            compile FFTW MPI library
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;是否使用OpenMP指令进行并行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;--enable-openmp         use OpenMP directives for parallelism
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;是否编译FFTW SMP线程库&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;--enable-threads        compile FFTW SMP threads library
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这部分是指定编译器及编译参数，默认是用GNU的编译器：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Some influential environment variables:
  CC          C compiler command
  CFLAGS      C compiler flags
  CPP         C preprocessor
  MPICC       MPI C compiler command
  F77         Fortran 77 compiler command
  FFLAGS      Fortran 77 compiler flags
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;为了用intel的编译器，我们需要特别指定一下：CC=icc F77=ifort，相关的参数通常保持默认即可。&lt;/p&gt;
&lt;p&gt;备注： 1）如何查看CPU是否支持某个指令集呢？使用如下命令可以列出支持的指令集名称&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat /proc/cpuinfo | grep flags | uniq
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2）SIMD SIMD单指令流多数据流(SingleInstructionMultiple Data,SIMD)是一种采用一个控制器来控制多个处理器，同时对一组数据（又称“数据向量”）中的每一个分别执行相同的操作从而实现空间上的并行性的技术。&lt;/p&gt;
&lt;p&gt;MMX是由英特尔开发的一种SIMD多媒体指令集，SSE（Streaming SIMDExtensions）是MMX的扩充指令集，AVX（Advanced VectorExtensions）是Intel的SSE延伸架构，FMA（Fused MultiplyAccumulate）是Intel的AVX扩充指令集。&lt;/p&gt;
&lt;p&gt;NEON实际上是ARM的SIMD（Single InstructionMultiple Data）技术的延续，它是一个结合64和128 bit的SIMD（Single InstructionMultiple Data 单指令多重数据）指令集。&lt;/p&gt;
&lt;h3&gt;2.3、 优化编译单精度版本&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# sigle
./configure --prefix=/public/home/ac30u77fum/rsfroot/mathlib/fftw-3.3.10 CC=gcc F77=gfortran MPICC=mpicc  --enable-shared --enable-static --enable-float --enable-see --enable-sse2 --enable-avx --enable-avx2 --enable-fma --enable-mpi --enable-threads --enable-openmp

make
make install

# double
./configure --prefix=/public/home/ac30u77fum/rsfroot/mathlib/fftw-3.3.10 CC=gcc F77=gfortran MPICC=mpicc  --enable-shared --enable-static --enable-see --enable-sse2 --enable-avx --enable-avx2 --enable-fma --enable-mpi --enable-threads --enable-openmp
make
make install
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;3、软件&lt;/h2&gt;
&lt;p&gt;通常会用到的是libfftw.a以及一些头文件，在编译或链接的时候，给出它的路径即可。&lt;/p&gt;
&lt;p&gt;比如： gromacs软件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  -DFFTWF_LIBRARY=&quot;$HOME/software/fftw/3.3.6-pl2-icc13&quot;
  -DFFTWF_INCLUDE_DIR=&quot;$HOME/fftw/include/&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里介绍的是官网题的fftw库，我们还可以使用Intel MKL库中的fftw接口。&lt;/p&gt;
&lt;p&gt;环境变量：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./FFTW.assets/image-20240528083721987.png&quot; alt=&quot;image-20240528083721987&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://nscc.mrzhenggang.com/fftw/#%E4%BB%80%E4%B9%88%E6%98%AFdft&quot;&gt;fftw 编译安装教程 | 超算小站 (mrzhenggang.com)&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>malloc与realloc的区别</title><link>https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/malloc%E5%92%8Crealloc%E7%9A%84%E5%8C%BA%E5%88%AB/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/malloc%E5%92%8Crealloc%E7%9A%84%E5%8C%BA%E5%88%AB/</guid><pubDate>Wed, 13 Sep 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;malloc与realloc的区别&lt;/h2&gt;
&lt;p&gt;ANSI C说明了三个用于存储空间动态分配的函数
(1) &lt;code&gt;malloc&lt;/code&gt; 分配指定字节数的存储区。此存储区中的初始值不确定
(2) &lt;code&gt;calloc&lt;/code&gt; 为指定长度的对象，分配能容纳其指定个数的存储空间。该空间中的每一位(bit)都初始化为0
(3) &lt;code&gt;realloc&lt;/code&gt;更改以前分配区的长度(增加或减少)。当增加长度时，可能需将以前分配区的内容移到另一个足够大的区域，而新增区域内的初始值则不确定。
分配函数时再分配 &lt;code&gt;realloc() &lt;/code&gt;，使我们可以增、减以前分配区的长度(最常见的用法是增加该区)。如果先分配一个可容纳长度为512的数组的空间，并在运行时填充它，但又发现空间不够，则可调用&lt;code&gt;realloc&lt;/code&gt;扩充该存储空间。如果在该存储区后有足够的空间可供扩充，则可在原存储区位置上向高地址方向扩充，并返回传送给它的同样的指针值。如果在&lt;strong&gt;原存储区后没有足够的空间&lt;/strong&gt;，则&lt;strong&gt;realloc分配另一个足够大的存储区&lt;/strong&gt;，&lt;strong&gt;将现存的512个元素数组的内容复制到新分配的存储区&lt;/strong&gt;。因为这种存储区可能会移动位置，所以不应当使用任何指针指在该区中。注意，&lt;code&gt;realloc&lt;/code&gt;的最后一个参数是存储区的newsize(新长度)，不是新、旧长度之差。作为一个特例，若ptr是一个空指针，则&lt;code&gt;realloc&lt;/code&gt;的功能与&lt;code&gt;malloc&lt;/code&gt;相同，用于分配一个指定长度newsize的存储区。&lt;/p&gt;
&lt;h4&gt;一.malloc&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;malloc的参数就是所需分配的字节数&lt;/strong&gt;，malloc在c语言中不是关键字而是C函数库中提供的函数。调用malloc时就是在内存池中提取一块连续的空间，并返回这块内存的指针。代码示例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
typedef struct node{
    int data;
    struct node *next;
}node;

node *create(int n)
{
    node *p = NULL, *head;
    head = (node*)malloc(sizeof (node ));
    p = head;	node *s;
    int i = 1;
    if( 0 != n )
    {
        while( i &amp;lt;= n )
        {
            s = (node *)malloc(sizeof (node));
            s-&amp;gt;data = i++;    // 为循环链表初始化，第一个结点为1，第二个结点为2。
            p-&amp;gt;next = s;
            p = s;
        }
        s-&amp;gt;next = head-&amp;gt;next;
    }
    free(head);
    return s-&amp;gt;next ;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;二.realloc&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;void realloc(void *ptr,size_t new_size)&lt;/code&gt;; ptr是指向原来地址的指针，这个函数用于修改一个原先已经分配内存块的大小。&lt;/p&gt;
&lt;p&gt;使用：&lt;/p&gt;
&lt;p&gt;1.可以使一块内存扩大或缩小（原来的内存块可以扩大缩小）&lt;/p&gt;
&lt;p&gt;（1.）如果是扩大一个内存块，则将原来的内存块保留在他的后边新增一块内存块（但是新增的内存块并未初始化）&lt;/p&gt;
&lt;p&gt;（2.）如果是缩小一块内存块，则将该内存块的后半部分直接拿掉，剩余部分内存块及其内容保留。&lt;/p&gt;
&lt;p&gt;2.原来的内存块无法扩大缩小&lt;/p&gt;
&lt;p&gt;如果是着这种情况，realloc会重新开辟一个新的内存空间，并把原来的内存空间的内容拷贝到新的内存空间里。&lt;/p&gt;
&lt;p&gt;注意：再调用完realloc后就不能使用指向就内存的指针，而是用返回的新的指针。&lt;/p&gt;
&lt;p&gt;内存扩展如图所示。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./malloc%E5%92%8Crealloc%E7%9A%84%E5%8C%BA%E5%88%AB.assets/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2tha2FoYW9tYQ==,size_16,color_FFFFFF,t_70.png&quot; alt=&quot;Image 2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;值得一提的是：&lt;strong&gt;如果realloc中的第一个参数如果为空则和malloc一样&lt;/strong&gt;。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include&amp;lt;Windows.h&amp;gt;
#include&amp;lt;stdio.h&amp;gt;
#include&amp;lt;malloc.h&amp;gt;
#include&amp;lt;stdlib.h&amp;gt;
int main()
{
    const int size = 2000;
    int *p = (int *)malloc(20 * sizeof(int));
    int *p1 = (int *)realloc(p, size*sizeof(int));
    printf(&quot;%x\n&quot;, p);
    printf(&quot;%x\n&quot;, p1);
    system(&quot;pause&quot;);
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;./malloc%E5%92%8Crealloc%E7%9A%84%E5%8C%BA%E5%88%AB.assets/20190222120011520.png&quot; alt=&quot;Image 4&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】&lt;a href=&quot;https://blog.csdn.net/u010137839/article/details/78643503&quot;&gt;https://blog.csdn.net/u010137839/article/details/78643503&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Docker 安装 实现docker默认安装目录修改</title><link>https://tuoyuangui.github.io/website/posts/typora/%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85/docker%E5%AE%89%E8%A3%85/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85/docker%E5%AE%89%E8%A3%85/</guid><pubDate>Wed, 06 Sep 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Docker 安装 实现docker默认安装目录修改&lt;/h1&gt;
&lt;h2&gt;一、安装&lt;/h2&gt;
&lt;p&gt;查看 Windows 上安装 Docker Desktop官方安装指南：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://docs.docker.com/desktop/install/windows-install/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;1、提前在D盘新建Program\Docker，使用这行代码安装：&lt;/p&gt;
&lt;p&gt;&quot;Docker Desktop Installer.exe&quot;  install --installation-dir=&quot;PATH&quot;&lt;/p&gt;
&lt;p&gt;2、&quot; &quot; 里面为你的Docker Desktop Installer.exe文件存放目录，PATH替换你想要安装路径：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&quot;D:\Download\Docker Desktop Installer.exe&quot;  install --installation-dir=&quot;D:\Program\Docker&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;./docker%E5%AE%89%E8%A3%85.assets/2900655-20231201122245512-409940175.png&quot; alt=&quot;Image 14&quot; /&gt;&lt;/p&gt;
&lt;p&gt;3、最后显示Installation succeeded代表安装成功。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./docker%E5%AE%89%E8%A3%85.assets/2900655-20231201122329147-1124343577.png&quot; alt=&quot;Image 15&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;二、更改镜像默认保存路径&lt;/h2&gt;
&lt;p&gt;1、运行docker，进入设置页，点击Resources选项，发现镜像默认安装在%UserProfile%\AppData\Local\Docker\wsl目录下&lt;/p&gt;
&lt;p&gt;2、点击Browse按钮，选择自定义的其他盘路径，例如：D:\Program\&lt;/p&gt;
&lt;p&gt;如下图所示：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./docker%E5%AE%89%E8%A3%85.assets/2900655-20231201134518986-2004247954.png&quot; alt=&quot;Image 16&quot; /&gt;&lt;/p&gt;
&lt;p&gt;3、最后点击Apply &amp;amp; restart按钮重启Docker即可生效。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./docker%E5%AE%89%E8%A3%85.assets/2900655-20231201134614499-797892774.png&quot; alt=&quot;Image 17&quot; /&gt;&lt;/p&gt;
&lt;p&gt;4、docker会自动在选定的目录下增加子目录DockerDesktopWSL。&lt;/p&gt;
&lt;p&gt;当然除以上方法还有很多中可以修改docker默认安装路径 及 docker镜像的。&lt;/p&gt;
&lt;p&gt;例如：软链接方法；WSL命令备份、导入方法等等，大家可以自行搜索一下。&lt;/p&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】https://www.cnblogs.com/luzhuangzhi/p/17869210.html&lt;/p&gt;
&lt;p&gt;【2】&lt;a href=&quot;https://docker.easydoc.net/doc/81170005/cCewZWoN/AWOEX9XM&quot;&gt;💻 Docker 快速安装软件 - Docker 快速入门 - 易文档 (easydoc.net)&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>docker 和 podman</title><link>https://tuoyuangui.github.io/website/posts/typora/docker%E5%92%8Cpodman/docker%E5%92%8Cpodman/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/docker%E5%92%8Cpodman/docker%E5%92%8Cpodman/</guid><pubDate>Mon, 14 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;docker 和 podman&lt;/h1&gt;
&lt;p&gt;Docker 和 Podman 都是用于容器化应用程序的开源工具。容器化是一种轻量级、可移植的、自给自足的软件打包技术，它允许开发者将应用程序及其依赖环境打包在一起，从而实现快速、可靠的应用部署。&lt;/p&gt;
&lt;h3&gt;Docker&lt;/h3&gt;
&lt;p&gt;Docker 是最流行的容器化平台之一，它使用 Go 语言编写。Docker 引擎可以在任何操作系统上运行容器，并且提供了用于容器管理的工具和API。&lt;/p&gt;
&lt;h4&gt;Docker的基本用法：&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;安装Docker&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在Linux上，通常可以通过包管理器安装Docker。例如，在Ubuntu上，可以使用&lt;code&gt;sudo apt install docker.io&lt;/code&gt;命令安装。&lt;/li&gt;
&lt;li&gt;在Windows和Mac上，可以使用Docker Desktop。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;运行容器&lt;/strong&gt;:
使用&lt;code&gt;docker run&lt;/code&gt;命令可以启动一个新的容器实例。例如，运行一个Ubuntu容器：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker run -it ubuntu bash
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;查看运行的容器&lt;/strong&gt;:
使用&lt;code&gt;docker ps&lt;/code&gt;命令可以查看正在运行的容器列表。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;停止容器&lt;/strong&gt;:
使用&lt;code&gt;docker stop &amp;lt;容器ID或名称&amp;gt;&lt;/code&gt;命令可以停止运行的容器。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;构建镜像&lt;/strong&gt;:
使用&lt;code&gt;docker build&lt;/code&gt;命令可以从Dockerfile构建一个新的镜像。例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker build -t my-image .
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;管理镜像&lt;/strong&gt;:
使用&lt;code&gt;docker images&lt;/code&gt;查看本地存储的镜像，使用&lt;code&gt;docker pull&lt;/code&gt;来下载远程仓库的镜像。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;网络管理&lt;/strong&gt;:
Docker允许容器通过端口映射与外界通信，使用&lt;code&gt;-p&lt;/code&gt;标志可以实现端口映射。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Podman&lt;/h3&gt;
&lt;p&gt;Podman 是一个无守护进程的容器引擎，用于开发、管理和运行OCI容器和容器镜像。Podman 可以管理和运行单容器，也可以管理通过Podman play命令运行的Pods。Podman 的设计允许普通用户运行容器而不需要root权限。&lt;/p&gt;
&lt;h4&gt;Podman的基本用法：&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;安装Podman&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在Linux上，可以通过包管理器安装Podman。例如，在Fedora上，可以使用&lt;code&gt;sudo dnf install podman&lt;/code&gt;命令安装。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;运行容器&lt;/strong&gt;:
使用&lt;code&gt;podman run&lt;/code&gt;命令启动一个新的容器实例。例如，运行一个Fedora容器：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;podman run -it fedora bash
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;查看运行的容器&lt;/strong&gt;:
使用&lt;code&gt;podman ps&lt;/code&gt;命令查看正在运行的容器列表。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;停止容器&lt;/strong&gt;:
使用&lt;code&gt;podman stop &amp;lt;容器ID或名称&amp;gt;&lt;/code&gt;命令停止运行的容器。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;构建镜像&lt;/strong&gt;:
使用&lt;code&gt;podman build&lt;/code&gt;命令从Dockerfile构建一个新的镜像。例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;podman build -t my-image .
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;管理镜像&lt;/strong&gt;:
使用&lt;code&gt;podman images&lt;/code&gt;查看本地存储的镜像，使用&lt;code&gt;podman pull&lt;/code&gt;来下载远程仓库的镜像。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;网络管理&lt;/strong&gt;:
Podman 支持容器网络，使用&lt;code&gt;--publish&lt;/code&gt;或&lt;code&gt;-p&lt;/code&gt;标志可以映射容器端口到宿主机。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;区别&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;守护进程&lt;/strong&gt;: Docker需要一个守护进程来管理容器，而Podman不需要。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;权限&lt;/strong&gt;: Podman可以在非root用户下运行容器，而Docker需要root权限。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工具集&lt;/strong&gt;: Docker提供了更多的工具和组件，例如Docker Compose和Docker Swarm，而Podman则更注重于简单的容器管理和运行。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;​	选择使用Docker还是Podman取决于个人或组织的具体需求和偏好。Docker由于先发优势和广泛的社区支持，目前更受欢迎和广泛使用。而Podman由于其对非root用户友好的特点，在需要更高安全性的环境中可能更受青睐。&lt;/p&gt;
</content:encoded></item><item><title>中文字体</title><link>https://tuoyuangui.github.io/website/posts/typora/python/%E4%B8%AD%E6%96%87%E5%AD%97%E4%BD%93/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/python/%E4%B8%AD%E6%96%87%E5%AD%97%E4%BD%93/</guid><pubDate>Sun, 13 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;如果本来就没有中文字体，必须先安装并配置字体，保证有中文字体ttf的文件&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;配置：修改****matplotlibrc配置字体&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;1. 首先定位matplotlib的字体库路径（我使用python进行定位）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import matplotlib
matplotlib.matplotlib_fname()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2. 将中文字体文件**.ttf，拷贝到该目录的fonts/ttf下&lt;/p&gt;
&lt;p&gt;3. 删除 matplotlib 缓存&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd ~/.cache/matplotlib
rm * -r
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;4. 修改matplotlibrc文件：修改font.sans-serif 加入中文字体&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;font.sans-serif     : Microsoft YaHei, DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif, ***(刚加的字体名字)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;5. 重启程序或在 jupyter中restart the kernel&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;应用一：用plt.rcParams设置&lt;/strong&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;import matplotlib.pyplot as plt
plt.rcParams[&apos;font.sans-serif&apos;]=[&apos;Microsoft YaHei&apos;]
plt.xlabel(&apos;测试&apos;)
plt.show()
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;&lt;strong&gt;应用二：用FontProperties，并指定字体文件&lt;/strong&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;from matplotlib.font_manager import FontProperties
import matplotlib.pyplot as plt
font = FontProperties(fname=&apos;/mnt/share/code/font/SimHei.ttf&apos;, size=20)
plt.title(&apos;测试&apos;, fontproperties=font)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;参考&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ask.hellobi.com/blog/safa/36673&quot;&gt;https://ask.hellobi.com/blog/safa/36673&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>输出网络参数和网络结构</title><link>https://tuoyuangui.github.io/website/posts/typora/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/%E8%BE%93%E5%87%BA%E4%B8%AD%E9%97%B4%E5%8F%82%E6%95%B0%E5%92%8C%E7%BD%91%E7%BB%9C%E7%BB%93%E6%9E%84/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/%E8%BE%93%E5%87%BA%E4%B8%AD%E9%97%B4%E5%8F%82%E6%95%B0%E5%92%8C%E7%BD%91%E7%BB%9C%E7%BB%93%E6%9E%84/</guid><pubDate>Wed, 09 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;输出网络参数和网络结构&lt;/h1&gt;
&lt;h2&gt;1、 输出网络参数&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;print(&quot;\n\nprint the each layer&apos;s name(GAB)&quot;)
for name in G_AB.state_dict():
  print(name)
print(&quot;\n\nprint the name and the size of layers&quot;)
for name,parameters in G_AB.named_parameters():
  print(name,&quot;;&quot;,parameters.size())
print(&quot;\n\nsave the parameters&quot;)
for layer in [&apos;model.1.freq&apos;,&apos;model.1.theta&apos;,&apos;model.1.sigma&apos;,&apos;model.1.psi&apos;,&apos;model.1.x&apos;,&apos;model.1.y&apos;,&apos;model.1.weight&apos;]:
  print(&quot;\n&quot;,layer)
  print(G_AB.state_dict()[layer])
  G_AB.state_dict()[layer].cpu().detach().numpy().tofile(layer[8:]+&apos;.rsf@&apos;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;2、输出网络结构&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;from torchinfo import summary
summary(G_AB,input_size=(16,1,256,256))
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>podman 创建镜像</title><link>https://tuoyuangui.github.io/website/posts/typora/docker%E5%92%8Cpodman/podman%E5%88%9B%E5%BB%BA%E9%95%9C%E5%83%8F/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/docker%E5%92%8Cpodman/podman%E5%88%9B%E5%BB%BA%E9%95%9C%E5%83%8F/</guid><pubDate>Mon, 31 Jul 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;podman 创建镜像&lt;/h1&gt;
&lt;h2&gt;一、dockerfile 语法&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;FROM&lt;/code&gt;：指定基础镜像。构建过程从此镜像开始。例如：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;FROM ubuntu:18.04
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将使用Ubuntu 18.04版本的镜像作为构建过程的基础。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;LABEL&lt;/code&gt;：添加元数据到镜像，这些元数据可以包含作者、版本等信息。例如：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;LABEL maintainer=&quot;John Doe &amp;lt;john.doe@example.com&amp;gt;&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将添加一个标签，其中包含维护者的信息。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;RUN&lt;/code&gt;：在构建过程中执行命令。这些命令会在镜像的上下文中执行，并创建新的镜像层。例如：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;RUN apt-get update &amp;amp;&amp;amp; apt-get install -y \
    build-essential \
    wget \
    python3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将使用&lt;code&gt;apt-get update&lt;/code&gt;和&lt;code&gt;apt-get install&lt;/code&gt;命令安装一些软件包。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;CMD&lt;/code&gt;：指定容器启动时默认执行的命令。这些命令会被加入到容器启动时的命令中。例如：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;CMD [&quot;python3&quot;, &quot;./app.py&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将使容器在启动时执行&lt;code&gt;python3 ./app.py&lt;/code&gt;命令。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;ENTRYPOINT&lt;/code&gt;：指定容器启动时执行的命令。这些命令会替换掉用户指定的命令。例如：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;ENTRYPOINT [&quot;python3&quot;, &quot;./app.py&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将使容器在启动时执行&lt;code&gt;python3 ./app.py&lt;/code&gt;命令，即使用户指定其他命令，这个命令也会被替换掉。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;EXPOSE&lt;/code&gt;：声明容器监听的端口。这些端口会在启动容器时自动映射到宿主机的端口。例如：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;EXPOSE 8080
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将使容器在启动时监听端口8080。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;VOLUME&lt;/code&gt;：指定容器内的目录作为卷，用于持久化数据。例如：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;VOLUME [&quot;/data&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将使容器内的&lt;code&gt;/data&lt;/code&gt;目录作为卷，用于持久化数据。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;ENV&lt;/code&gt;：设置环境变量。这些环境变量可以在构建过程中使用，也可以在容器运行时使用。例如：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;ENV NAME World
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将设置一个名为&lt;code&gt;NAME&lt;/code&gt;的环境变量，其值为&lt;code&gt;World&lt;/code&gt;。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;USER&lt;/code&gt;：指定构建过程中使用的用户。例如：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;USER root
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将使用&lt;code&gt;root&lt;/code&gt;用户进行构建。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;WORKDIR&lt;/code&gt;：指定构建过程中的工作目录。例如：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt; WORKDIR /app
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;这将设置工作目录为`/app`。
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;COPY&lt;/code&gt;：将文件或目录从宿主机复制到镜像中。例如：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt; COPY . /app
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;这将复制当前目录下的所有内容到镜像中的`/app`目录。
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;ADD&lt;/code&gt;：与&lt;code&gt;COPY&lt;/code&gt;类似，但它可以自动解压压缩文件。例如：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt; ADD ./path/to/source.tar.gz /app/path/to/destination/
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;这将自动解压`./path/to/source.tar.gz`文件到`/app/path/to/destination/`目录。
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;ONBUILD&lt;/code&gt;：指定当构建一个以当前镜像为基础的镜像时应该执行的命令。例如：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt; ONBUILD ADD . /app
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;这将添加当前目录下的所有内容到以当前镜像为基础的镜像中的`/app`目录。
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;STOPSIGNAL&lt;/code&gt;：指定在容器停止时发送的信号。例如：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt; STOPSIGNAL S
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以下是一个简单的Dockerfile示例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;FROM ubuntu:18.04

RUN apt-get update &amp;amp;&amp;amp; apt-get install -y \
 build-essential \
 wget \
 python3

WORKDIR /app

COPY . /app

RUN pip3 install -r requirements.txt

CMD [&quot;python3&quot;, &quot;./app.py&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个Dockerfile构建了一个基于Ubuntu 18.04的基础镜像，安装了构建必需的软件包，复制了应用程序代码，并安装了Python依赖。最后，它指定了容器启动时应该执行的命令。&lt;/p&gt;
&lt;h2&gt;二、podman的语法&lt;/h2&gt;
&lt;p&gt;Podman 是一个开源的容器引擎，用于构建、运行和连接容器。以下是一些基础的 Podman 命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;`podman system migrate`   # repair the podman
`sudo systemctl restart podman`
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;构建镜像&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;podman build -t myimage .
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将使用当前目录中的 Dockerfile 构建一个名为 &lt;code&gt;myimage&lt;/code&gt; 的镜像。&lt;/p&gt;
&lt;h3&gt;运行容器&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;podman run -it --rm myimage /bin/bash    --name xx

podman run --name lglsoft -it --rm --env=DISPLAY=180.201.179.79:0.0 susoft:latest  /bin/bash

podman run -it --device=/dev/dri:/dev/dri --volume=/tmp/.X11-unix:/tmp/.X11-unix:rw --volume=/etc/localtime:/etc/localtime:ro --env=DISPLAY=$DISPLAY dockerfile-su /bin/bash
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将使用名为 &lt;code&gt;myimage&lt;/code&gt; 的镜像创建并运行一个交互式的容器。&lt;/p&gt;
&lt;h3&gt;列出容器&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;podman ps
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将列出当前正在运行的容器。&lt;/p&gt;
&lt;h3&gt;列出镜像&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;podman images
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将列出所有可用的镜像。&lt;/p&gt;
&lt;h3&gt;删除容器&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;podman rm mycontainer
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将删除名为 &lt;code&gt;mycontainer&lt;/code&gt; 的容器。&lt;/p&gt;
&lt;h3&gt;删除镜像&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;podman rmi myimage
podman rmi &amp;lt;image_id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将删除名为 &lt;code&gt;myimage&lt;/code&gt; 的镜像。&lt;/p&gt;
&lt;h3&gt;列出网络&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;podman network list
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将列出所有已创建的网络。&lt;/p&gt;
&lt;h3&gt;删除网络&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;podman network rm mynetwork
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将删除名为 &lt;code&gt;mynetwork&lt;/code&gt; 的网络。&lt;/p&gt;
&lt;h3&gt;导出容器&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;podman export mycontainer &amp;gt; mycontainer.tar
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将导出名为 &lt;code&gt;mycontainer&lt;/code&gt; 的容器为 tar 文件。&lt;/p&gt;
&lt;h3&gt;导入镜像&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;podman import myimage.tar myimage
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将导入名为 &lt;code&gt;myimage.tar&lt;/code&gt; 的 tar 文件为镜像。&lt;/p&gt;
&lt;h3&gt;导出镜像&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;podman save myimage &amp;gt; myimage.tar
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将导出名为 &lt;code&gt;myimage&lt;/code&gt; 的镜像为 tar 文件。&lt;/p&gt;
&lt;h3&gt;导入容器&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;podman import mycontainer.tar mycontainer
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将导入名为 &lt;code&gt;mycontainer.tar&lt;/code&gt; 的 tar 文件为容器。&lt;/p&gt;
&lt;p&gt;这些是一些基础的 Podman 命令，根据您的具体需求，可能还需要使用其他命令。Podman 的命令行选项和功能可能会随着版本更新而变化，因此建议查阅最新的 Podman 文档以获取最准确的信息&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#########################################################################
# This Dockerfile builds a base image to run Seismic UNIX  on generic CPU
# architectures using GCC compilers and OpenMPI.
# WRITER: Guolong Li (1712343961@qq.com)
# TIME: 06.18.2024
#########################################################################

# Base image
FROM ubuntu:22.04 as base

# Verb=NO
ENV DEBIAN_FRONTEND noninteractive
LABEL maintainer=&quot;Guolong Li &amp;lt;1712343961@qq.com&amp;gt;&quot;

# change the aliyun source to download software
RUN sed -i &apos;s/archive.ubuntu.com/mirrors.aliyun.com/g&apos; /etc/apt/sources.list
CMD [&quot;/bin/bash&quot;]
EXPOSE 8888

# cp Seismic Unix (unziped 44R28 and well configured)
RUN mkdir -p /Software/Seismic_Unix
ADD ./seismic_unix.tar.gz /Software/Seismic_Unix/
ENV CWPROOT=/Software/Seismic_Unix
ENV PATH=$PATH:/Software/Seismic_Unix/bin

# Install basic package
RUN apt-get update &amp;amp;&amp;amp; \
 apt-get install -y build-essential mpich\
 git xorg gcc libx11-dev libxt-dev libxext-dev make libmotif-dev libtirpc-dev gfortran libglu1-mesa-dev freeglut3-dev \
 libxmu-dev libxmu-headers libxi-dev  libglu1-mesa-dev freeglut3-dev libxmu-dev libxmu-headers libxi-dev

# set the Basic var
ARG nproc=&quot;10&quot;

# Install Seismic Unix (only support one thread)
RUN cd /Software/Seismic_Unix/src/ &amp;amp;&amp;amp; ls &amp;amp;&amp;amp;    make install
RUN cd /Software/Seismic_Unix/src/ &amp;amp;&amp;amp;    make xtinstall
RUN cd /Software/Seismic_Unix/src/ &amp;amp;&amp;amp;    make finstall

# Install Miniconda
RUN mkdir -p /Software/Miniconda



# # Instal the OpenMPI
# ARG OMPI_BRANCH=&quot;v4.1.4&quot;
# RUN mkdir -p /deps &amp;amp;&amp;amp; mkdir -p /opt/openmpi &amp;amp;&amp;amp; cd /deps &amp;amp;&amp;amp; \
#     git clone --depth 1 --recursive --branch ${OMPI_BRANCH} https://github.com/open-mpi/ompi.git openmpi &amp;amp;&amp;amp; \
#     cd openmpi &amp;amp;&amp;amp; ./autogen.pl &amp;amp;&amp;amp; \
#     mkdir build &amp;amp;&amp;amp;  cd build &amp;amp;&amp;amp; \
#     ../configure --prefix=/opt/openmpi/ \
#                  --enable-mca-no-build=btl-uct --enable-mpi1-compatibility &amp;amp;&amp;amp; \
#     make -j ${nproc} &amp;amp;&amp;amp; \
#     make install &amp;amp;&amp;amp; \
#     rm -rf /deps/openmpi

# # Set OpenMPI path
# ENV PATH=${PATH}:/opt/openmpi/bin
# ENV LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/opt/openmpi/lib
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Conda 和 pip 换源</title><link>https://tuoyuangui.github.io/website/posts/typora/python/conda-pip-%E6%8D%A2%E6%BA%90/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/python/conda-pip-%E6%8D%A2%E6%BA%90/</guid><pubDate>Mon, 24 Jul 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Conda 和 pip 换源&lt;/h1&gt;
&lt;h2&gt;conda&lt;/h2&gt;
&lt;p&gt;中科大源&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/
conda config --set show_channel_urls yes
conda config --remove-key channels        # 换回默认源

conda env remove --name your_env_name   # 删除环境
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;PIP&lt;/h2&gt;
&lt;p&gt;下载某一个文件的时候，临时使用中科大源，加上如下后缀就行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pip install xx -i https://pypi.mirrors.ustc.edu.cn/simple/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;永久&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pip install pip -U

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在Jupyter笔记本中直接运行C语言代码并不直接支持，因为Jupyter是为Python、Julia、R和其他支持Jupyter内核的语言设计的。但是，你可以通过一些方法间接地在Jupyter笔记本中运行C语言代码：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#delete the env
conda remove -n lglc --all -y

# create the envirment for c
conda create -n lglc python==3.11
conda activate lglc

# change the conda source
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/
conda config --set show_channel_urls yes

# change the pip source

pip install pip -U

pip config set global.index-url https://pypi.mirrors.ustc.edu.cn/simple

# insall jupyter notebook

pip install numpy matplotlib jupyter
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;使用&lt;code&gt;!&lt;/code&gt;前缀运行C代码&lt;/h3&gt;
&lt;p&gt;你可以使用Jupyter的shell命令功能来编译和运行C代码。这需要你已经在系统上安装了C编译器（如GCC）。&lt;/p&gt;
&lt;p&gt;以下是如何在Jupyter笔记本中使用&lt;code&gt;!&lt;/code&gt;前缀来编译和运行C代码的步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;首先，编写C代码并保存到文件中。&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;// hello.c
#include &amp;lt;stdio.h&amp;gt;

int main() {
    printf(&quot;Hello, World!\n&quot;);
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;使用&lt;code&gt;!&lt;/code&gt;前缀运行命令来编译C代码。&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;!gcc hello.c -o hello
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;使用&lt;code&gt;!&lt;/code&gt;前缀运行编译后的程序。&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;!./hello
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;使用&lt;code&gt;%%script&lt;/code&gt;魔法命令&lt;/h3&gt;
&lt;p&gt;Jupyter还提供了&lt;code&gt;%%script&lt;/code&gt;魔法命令，允许你在笔记本中运行脚本。这同样需要系统上安装了C编译器。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;%%script bash
gcc hello.c -o hello &amp;amp;&amp;amp; ./hello
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;使用&lt;code&gt;%%writefile&lt;/code&gt;魔法命令&lt;/h3&gt;
&lt;p&gt;你可以使用&lt;code&gt;%%writefile&lt;/code&gt;魔法命令将代码块写入文件，然后编译和运行它。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;%%writefile hello.c
#include &amp;lt;stdio.h&amp;gt;

int main() {
    printf(&quot;Hello, World!\n&quot;);
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;接着编译并运行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;!gcc hello.c -o hello
!./hello
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;使用ctypes或cffi库&lt;/h3&gt;
&lt;p&gt;如果你想在Python代码中调用C函数，你可以使用&lt;code&gt;ctypes&lt;/code&gt;或&lt;code&gt;cffi&lt;/code&gt;库。这需要你创建一个C库，然后从Python中加载它。&lt;/p&gt;
&lt;p&gt;这是一个使用&lt;code&gt;ctypes&lt;/code&gt;的简单例子：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;编写C代码并编译为共享库。&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;// mylib.c
#include &amp;lt;stdio.h&amp;gt;

void say_hello() {
    printf(&quot;Hello from C!\n&quot;);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;编译为共享库：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;!gcc -shared -o mylib.so -fPIC mylib.c
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;使用&lt;code&gt;ctypes&lt;/code&gt;加载并调用C函数。&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;from ctypes import cdll

# 加载共享库
mylib = cdll.LoadLibrary(&apos;./mylib.so&apos;)

# 调用C函数
mylib.say_hello()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以上方法可以帮助你在Jupyter笔记本中运行C语言代码或调用C函数。记住，这些方法需要在你的系统上安装C编译器，并且它们不会在Jupyter笔记本内部执行C代码，而是通过外部命令或库调用。&lt;/p&gt;
</content:encoded></item><item><title>Bash Shell 实现程序并行</title><link>https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/bash-shell-%E5%AE%9E%E7%8E%B0%E7%A8%8B%E5%BA%8F%E5%B9%B6%E8%A1%8C/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/bash-shell-%E5%AE%9E%E7%8E%B0%E7%A8%8B%E5%BA%8F%E5%B9%B6%E8%A1%8C/</guid><pubDate>Thu, 20 Jul 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Bash Shell 实现程序并行&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;(2023.03.21)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;1. &lt;a href=&quot;https://www.w3cschool.cn/bashshell/bashshell-cyzi37i8.html&quot;&gt;Bash 简介_w3cschool&lt;/a&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Bash shell 可以在文本中直接运行Liunx 命令。
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;Bash 是 Bourne Shell 程序“sh”的升级版本，这是一个开源 GNU 项目。它提供了比 Bourne Shell 更好的功能，适用于编程和交互使用。 我们可以这么理解，Bash 是一个命令处理器，通常运行于文本窗口中，可以将用户输入的命令解释并执行相应的操作，这样式的文件被称作脚本。 Bash 是绝大多数 Linux 、MAC 及 OS 默认的 shell 程序，并且 Shell Script 都大致相同。当您学会一种 Shell 后，其它的 Shell 都能够很快上手，而且一种 Shell Script 通常可以在很多 Shell 上使用，因此您不必在学习哪种 Shell 的选择上耗费太多的时间。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;2. Bash 示例&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/bash
# Part 1 注释
# 单行注释

&amp;lt;&amp;lt; BLOCK
1.
2.多行注释（1）
3.
BLOCK

:&apos;
1.
2.多行注释（2）
3.&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3. 并行Bash&lt;/h3&gt;
&lt;p&gt;shell中的命令都是串行执行的，如果想要充分利用服务器的资源，需要一些小技巧&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# do the Jobs
ii=$(((nshots+1)/$Worker))
jj=$(((nshots+1)%$Worker))
for((i=0;i&amp;lt;$ii;i++))
do
    for((j=0;j&amp;lt;$Worker;j++))
    do
    {
        job=$((i*$Worker+j))
        bash ./jobs/lgl_$job.sh
    } &amp;amp;     # 并行$Worker个程序
    done
    wait   # 等待完成 多个
done
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;4. 参考&lt;/h3&gt;
&lt;p&gt;1 &lt;a href=&quot;https://www.w3cschool.cn/bashshell/bashshell-4cv637th.html&quot;&gt;Bash 教程总览_w3cschool&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2 &lt;a href=&quot;https://cloud.tencent.com/developer/article/1863195&quot;&gt;Shell-使用&amp;amp;和wait让你的脚本并行执行 - 腾讯云开发者社区-腾讯云 (tencent.com)&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Ubuntu中一般的软件安装</title><link>https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/%E4%B8%80%E8%88%AC%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%8C%85%E5%92%8C%E5%AE%89%E8%A3%85/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/%E4%B8%80%E8%88%AC%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%8C%85%E5%92%8C%E5%AE%89%E8%A3%85/</guid><pubDate>Mon, 10 Jul 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Ubuntu中一般的软件安装&lt;/h1&gt;
&lt;h2&gt;一、查看已安装软件&lt;/h2&gt;
&lt;p&gt;​	用 apt 命令显示已安装软件包：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt list –installed
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​	用 dpkg 命令显示已安装软件包:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dpkg-query -l
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​	列出系统里 Snap 已安装软件包:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;snap list
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​	列出系统里 Flatpak 已安装软件包:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;flatpak list
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​	展示安装位置：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo  apt-get install aptitude

sudo aptitude show zip
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;二、Ubuntu中软件安装方法&lt;/h2&gt;
&lt;p&gt;​	&lt;strong&gt;1、APT方式&lt;/strong&gt;
​	（1）普通安装：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt-get install softname1 softname2 …;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​	（2）修复安装：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt-get -f install softname1 softname2... ;(-f Atemp to correct broken dependencies)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​	（3）重新安装：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt-get --reinstall install softname1 softname2...;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​	&lt;strong&gt;2、Dpkg方式&lt;/strong&gt;
​	（1）普通安装：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dpkg -i package_name.deb
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​	&lt;strong&gt;3、源码安装（.tar、tar.gz、tar.bz2、tar.Z）&lt;/strong&gt;
​	首先解压缩源码压缩包然后通过tar命令来完成&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    a．解xx.tar.gz：tar zxf xx.tar.gz
    b．解xx.tar.Z：tar zxf xx.tar.Z
    c．解xx.tgz：tar zxf xx.tgz
    d．解xx.bz2：bunzip2 xx.bz2
    e．解xx.tar：tar xf xx.tar
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​	然后进入到解压出的目录中，建议先读一下README之类的说明文件，因为此时不同源代码包或者预编译包可能存在差异，
​	然后建议使用ls -F --color或者ls -F命令（实际上我的只需要 l 命令即可）查看一下可执行文件，可执行文件会以*号的尾部标志。
​	一般依次执行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;./configure
 make
 sudo make install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​	即可完成安装。&lt;/p&gt;
&lt;h2&gt;三、Ubuntu中软件包的卸载方法&lt;/h2&gt;
&lt;p&gt;​	&lt;strong&gt;1、APT方式&lt;/strong&gt;
​	（1）移除式卸载：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt-get remove softname1 softname2 …;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;（移除软件包，当包尾部有+时，意为安装）
（2）清除式卸载 ：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt-get --purge remove softname1 softname2...;(同时清除配置)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​	        清除式卸载：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt-get purge sofname1 softname2...;(同上，也清除配置文件)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​	&lt;strong&gt;2、Dpkg方式&lt;/strong&gt;
​	（1）移除式卸载：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dpkg -r pkg1 pkg2 ...;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​	（2）清除式卸载：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dpkg -P pkg1 pkg2...;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;四、其他&lt;/h2&gt;
&lt;p&gt;​	可以使用以下命令清理系统垃圾&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get autoclean
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​	清理旧版本的软件缓存&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get clean
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​	清理所有软件缓存&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get autoremove
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】 https://zhuanlan.zhihu.com/p/57472336&lt;/p&gt;
&lt;p&gt;【2】https://blog.csdn.net/jasonzhoujx/article/details/80384029&lt;/p&gt;
&lt;p&gt;【3】https://blog.csdn.net/qq_40150691/article/details/83026169&lt;/p&gt;
</content:encoded></item><item><title>windows快捷键</title><link>https://tuoyuangui.github.io/website/posts/typora/windows%E7%B3%BB%E7%BB%9F/windows%E5%BF%AB%E6%8D%B7%E9%94%AE/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/windows%E7%B3%BB%E7%BB%9F/windows%E5%BF%AB%E6%8D%B7%E9%94%AE/</guid><pubDate>Thu, 22 Jun 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;windows快捷键&lt;/h1&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;1、快速切换程序&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Alt+Tab&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2、一键快速锁屏&lt;/td&gt;
&lt;td&gt;Windows键+L键&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3、秒开文件管理&lt;/td&gt;
&lt;td&gt;Windows键+E键&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4、直接显示桌面&lt;/td&gt;
&lt;td&gt;按Windows键+D键&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5、快速关掉页面&lt;/td&gt;
&lt;td&gt;Ctrl+W&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6、恢复被关页面&lt;/td&gt;
&lt;td&gt;Ctrl+Shift+T&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</content:encoded></item><item><title>绘图脚本</title><link>https://tuoyuangui.github.io/website/posts/typora/seismicunix/%E7%BB%98%E5%9B%BE%E8%84%9A%E6%9C%AC/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/seismicunix/%E7%BB%98%E5%9B%BE%E8%84%9A%E6%9C%AC/</guid><pubDate>Thu, 18 May 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;绘图脚本&lt;/h1&gt;
&lt;h2&gt;1、利用Siesmic Unix 中的psimage 进行绘图&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/sh
## Copyright (c) UPC lgl. All rights reserved.
# *************************************************#
# ** Filename:  imagesc.sh                       **#
# ** Author:Guolong Li(lgl)                      **#
# ** Date:2023.02.28                             **#
# ** E-mail:1712343961@qq.com                    **#
# ** Aim: use psimage to plot image              **#
# ** Environment: shell (Linux), Seismic Unix    **#
# *************************************************#

psfile=image.dat    # binaryfile
outname=image.eps
nx=481                # number of samples in 2nd (slow) dimension nx-&amp;gt;n2
nz=234                # number of samples in 1st (fast) dimension nz-&amp;gt;n1
dx=10                 # sampling interval X
dx=$dz
#dz=10                 # sampling interval Z


title=&apos;&apos;     # title of plot
#xlabel=&apos;Distance(m)&apos;  # X轴标签 &apos;Distance(m)&apos; &apos;Distance(km)&apos;
#zlabel=&apos;Depth(m)&apos;     # Z轴标签 &apos;Time(s)&apos; &apos;Time(ms)&apos; &apos;Depth(km)&apos; &apos;Depth(m)&apos;
#legend=1              #  1 显示colorbar 0 不显示
#cchar=&apos;wrgb=1.0,0,0 grgb=1.0,1.0,1.0 brgb=0,0,1.0&apos;
cchar=&apos;wrgb=0.6,0,0 grgb=0,0,0.8 brgb=0.376,0.376,0.376&apos;
#units=&apos;m/s&apos;	      # unit label for legend

width=6.0	         # width in inches of axes box	6.0
height=6.0	         # height in inches of axes box  8.0  图像大小
labelfont=Times-Roman    # font name for axes label Times-Roman Helvetica
labelsize=18	          # font size for axes labels  18
titlefont=Helvetica-Bold #font name for title
titlesize=24		  #font size for title      24
xgrid2=none		 # grid lines on axis 2 - none, dot, dash, or solid
zgrid1=none		 # grid lines on axis 1 - none, dot, dash, or solid	  图 网格
lstyle=vertright	# vertleft vertright 	horibottom             legend 位置
legendfont=times_roman10  # times_roman10    font name for title
bckgr=0.5                 # background gray value   0.5
perc=99                  # percentile used to determine clip 100
lwidth=1.2		 # colorscale (legend) width in inches 1.2
lheight=$height/3     	 # colorscale (legend) height in inches height/3   legend 大小
legendfont=times_roman10    # font name for legend title
lgrid=none	 #  grid lines on legend axis - none, dot, dash, or solid  legend 网格
lx=		 # colorscale (legend) x-position in inches           legend 位置
nxf=0                 # first sample in 2nd dimension
nzf=0                 # first sample in 1st dimension  坐标轴起始绘制
nxs=1.0	      # factor by which to scale d2 before imaging  X
nzs=1.0	      # factor by which to scale d1 before imaging  Z  缩放因子

## laplain 滤波

#suaddhead &amp;lt; $psfile n1=151&amp;gt;xx.su
#sukfrac &amp;lt;xx.su power=2 phasefac=-1 d1=$dz d2=$dx&amp;gt;xx.bin
#sustrip &amp;lt;xx.bin &amp;gt; lap.dat
#psfile=lap.dat
psimage  &amp;lt;  $psfile n1=$nz n2=$nx d2=$dx d1=$dz  width=$width height=$height \
    label1=$zlabel label2=$xlabel labelfont=$labelfont labelsize=$labelsize \
    title=$title titlefont=$titlefont titlesize=$titlesize \legend=$legend\
    lstyle=$lstyle legendfont=$legendfont $cchar  bckgr=$bckgr perc=$perc \
    lwidth=$lwith lheight=$lheight units=$units legendfont=$legendfont \
    grid2=$xgrid2 grid1=$zgrid1 lgrid=$lgrid lx=$lx f2=$nxf  f1=$nzf d1s=$nzs d2s=$nxs  &amp;gt; $outname

#Some example colormap settings:
# red white blue: wrgb=1.0,0,0 grgb=1.0,1.0,1.0 brgb=0,0,1.0
# white red blue: wrgb=1.0,1.0,1.0 grgb=1.0,0.0,0.0 brgb=0,0,1.0
# blue red white: wrgb=0.0,0.0,1.0 grgb=1.0,0.0,0.0 brgb=1.0,1.0,1.0
# red green blue: wrgb=1.0,0,0 grgb=0,1.0,0 brgb=0,0,1.0
# orange light-blue green: wrgb=1.0,.5,0 grgb=0,.7,1.0 brgb=0,1.0,0
# red light-blue dark blue: wrgb=0.0,0,1.0 grgb=0,1.0,1.0 brgb=0,0,1.0



#######
# brgb=0.0,0.0,0.0	 red, green, blue values corresponding to black
# grgb=1.0,1.0,1.0	 red, green, blue values corresponding to grey
# wrgb=1.0,1.0,1.0	 red, green, blue values corresponding to white
# bhls=0.0,0.0,0.0	 hue, lightness, saturation corresponding to black
# ghls=0.0,1.0,0.0	 hue, lightness, saturation corresponding to grey
# whls=0.0,1.0,0.0	 hue, lightness, saturation corresponding to white


#Legal font names are:
# AvantGarde-Book AvantGarde-BookOblique AvantGarde-Demi AvantGarde-DemiOblique
# Bookman-Demi Bookman-DemiItalic Bookman-Light Bookman-LightItalic
# Courier Courier-Bold Courier-BoldOblique Courier-Oblique
# Helvetica Helvetica-Bold Helvetica-BoldOblique Helvetica-Oblique
# Helvetica-Narrow Helvetica-Narrow-Bold Helvetica-Narrow-BoldOblique
# Helvetica-Narrow-Oblique NewCentrySchlbk-Bold NewCenturySchlbk-BoldItalic
# NewCenturySchlbk-Roman Palatino-Bold
# Palatino-BoldItalic Palatino-Italics Palatino-Roman
# SanSerif-Bold SanSerif-BoldItalic SanSerif-Roman
# Symbol Times-Bold Times-BoldItalic
# Times-Roman Times-Italic ZapfChancery-MediumItalic
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>CUDA检查工具-cuda-memcheck</title><link>https://tuoyuangui.github.io/website/posts/typora/cuda/cuda%E6%A3%80%E6%B5%8B%E5%B7%A5%E5%85%B7/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/cuda/cuda%E6%A3%80%E6%B5%8B%E5%B7%A5%E5%85%B7/</guid><pubDate>Mon, 27 Mar 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;CUDA检查工具-cuda-memcheck&lt;/h1&gt;
&lt;p&gt;cuda-memcheck是CUDA工具包中的一个功能正确性检查套件。它包含多个可以执行不同类型检查的工具。这些工具可以精确地检测和归因CUDA应用程序中的越界和未对齐的内存访问错误。具体包括 memcheck、 racecheck、initcheck、 synccheck 共 4 个工具。它们可由可执行文件 cuda-memcheck 调用：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cuda-memcheck --tool memcheck [options] app_name [options]
$ cuda-memcheck --tool racecheck [options] app_name [options]
$ cuda-memcheck --tool initcheck [options] app_name [options]
$ cuda-memcheck --tool synccheck [options] app_name [options]
$ export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;memcheck：用于内存访问错误和泄漏检测
racecheck：共享内存数据访问危险检测工具
initcheck：未初始化的设备全局内存访问检测工具
synccheck：用于线程同步危险检测
具体参数信息可以参考官网：CUDA-MEMCHECK :: CUDA Toolkit Documentation (nvidia.com)&lt;/p&gt;
&lt;p&gt;注意：此工具已在 &lt;code&gt;CUDA 11.6 &lt;/code&gt;中被弃用，并在12.0 及更高版本中被删除。Compute Sanitizer 已取代它的位置，用法差不多，但是提供了额外的功能，如改进的性能和对 Microsoft hardware-accelerated GPU scheduling 的支持，以及对内存检查之外的功能的更广泛支持。&lt;/p&gt;
&lt;h2&gt;简单使用&lt;/h2&gt;
&lt;p&gt;​    如下有问题代码编译后，使用&lt;code&gt; cuda-memcheck ./test.out&lt;/code&gt; 或者&lt;code&gt;compute-sanitizer ./test.ou&lt;/code&gt;t执行后则会得到一大段输出以及&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./CUDA%E6%A3%80%E6%B5%8B%E5%B7%A5%E5%85%B7.assets/image-20240605154949504.png&quot; alt=&quot;image-20240605154949504&quot; /&gt;&lt;/p&gt;
&lt;p&gt;========= ERROR SUMMARY: 2 errors&lt;/p&gt;
&lt;h2&gt;NVIDIA Compute Sanitizer&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Compute Sanitizer&lt;/code&gt; 是一套工具，可以对代码的功能正确性执行不同类型的检查。 主要有四种工具：&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;memcheck&lt;/code&gt;：内存访问错误和泄漏检测。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;racecheck&lt;/code&gt;：共享内存数据访问危险检测工具。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;initcheck&lt;/code&gt;：未初始化设备全局内存访问检测工具。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;synccheck&lt;/code&gt;：线程同步危险检测。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;$ nvcc -o mempool.exe mempool_example.cu -arch=sm_70
$ ./mempool.exe
After populateMemory 1: bucket 0, 1 ..  62: 0 1 .. 62
After populateMemory 2: bucket 0, 1 ..  63: 0 1 .. 63

$compute-sanitizer --tool memcheck ./mempool.exe
========= COMPUTE-SANITIZER
After populateMemory 1: bucket 0, 1 ..  62: 0 1 .. 62
After populateMemory 2: bucket 0, 1 ..  63: 0 1 .. 63
========= ERROR SUMMARY: 0 errors
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Reference:&lt;/h2&gt;
&lt;p&gt;【1】https://blog.csdn.net/qq_33598781/article/details/136136951&lt;/p&gt;
&lt;p&gt;【2】https://blog.csdn.net/kunhe0512/article/details/137119826&lt;/p&gt;
&lt;p&gt;【3】&lt;a href=&quot;https://docs.nvidia.com/cuda/archive/11.4.4/cuda-memcheck/index.html&quot;&gt;CUDA-MEMCHECK :: CUDA Toolkit Documentation (nvidia.com)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;【4】&lt;a href=&quot;https://devblogs.microsoft.com/directx/hardware-accelerated-gpu-scheduling/&quot;&gt;Hardware Accelerated GPU Scheduling - DirectX Developer Blog (microsoft.com)&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>GCC的编译过程</title><link>https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/gcc%E7%9A%84%E7%BC%96%E8%AF%91%E8%BF%87%E7%A8%8B/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/gcc%E7%9A%84%E7%BC%96%E8%AF%91%E8%BF%87%E7%A8%8B/</guid><pubDate>Mon, 27 Mar 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;GCC的编译过程&lt;/h1&gt;
&lt;h2&gt;1、gcc的编译步骤&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;gcc编译：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;4步骤： 预处理、编译、汇编、连接。&lt;/p&gt;
&lt;p&gt;-I：    指定头文件所在目录位置。&lt;/p&gt;
&lt;p&gt;-c：    只做预处理、编译、汇编。得到 二进制 文件！！！&lt;/p&gt;
&lt;p&gt;-g：    编译时添加调试语句。 主要支持 gdb 调试。&lt;/p&gt;
&lt;p&gt;-Wall： 显示所有警告信息。&lt;/p&gt;
&lt;p&gt;-D：    向程序中“动态”注册宏定义。  #define NAME VALUE&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;./gcc%E7%9A%84%E7%BC%96%E8%AF%91%E8%BF%87%E7%A8%8B.assets/clip_image001.png&quot; alt=&quot;gcc编译&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./gcc%E7%9A%84%E7%BC%96%E8%AF%91%E8%BF%87%E7%A8%8B.assets/clip_image002.png&quot; alt=&quot;计算机生成了可选文字: 编译： 4步到： 罨 -Wall: 预处理、编译、拒编、接。 指定头文件所在目录位置。 只做预处理、编译、汇编·得到二进制文件！！！ 编译时添加泅试语句·主要支持gdb调试。 显示所有告信息。 向程序中“动态”注册宏定义。&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;gcc 与 g++ 分别是 gnu 的 c &amp;amp; c++ 编译器 gcc/g++ 在执行编译工作的时候，总共需要4步：&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;1、预处理,生成 .i     的文件[预处理器cpp]&lt;/li&gt;
&lt;li&gt;2、将预处理后的文件转换成汇编语言,     生成文件 .s [编译器egcs]&lt;/li&gt;
&lt;li&gt;3、有汇编变为目标代码(机器代码)生成     .o 的文件[汇编器as]&lt;/li&gt;
&lt;li&gt;4、连接目标代码, 生成可执行程序     [链接器ld]&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2&gt;2、gcc编译参数详解&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;-c&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;只激活预处理,编译,和汇编,也就是他只把程序做成obj文件&lt;/p&gt;
&lt;p&gt;例子用法:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gcc -c hello.c
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;他将生成 .o 的 obj 文件&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;-S&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;只激活预处理和编译，就是指把文件编译成为汇编代码。&lt;/p&gt;
&lt;p&gt;例子用法:&lt;/p&gt;
&lt;p&gt;gcc -S hello.c&lt;/p&gt;
&lt;p&gt;他将生成 .s 的汇编代码，你可以用文本编辑器察看。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;-E&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;只激活预处理,这个不生成文件, 你需要把它重定向到一个输出文件里面。&lt;/p&gt;
&lt;p&gt;例子用法:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gcc -E hello.c &amp;gt; pianoapan.txt
gcc -E hello.c | more
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;-o&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;制定目标名称, 默认的时候, gcc 编译出来的文件是 a.out, 很难听, 如果你和我有同感，改掉它, 哈哈。&lt;/p&gt;
&lt;p&gt;例子用法:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gcc -o hello.exe hello.c
gcc -o hello.asm -S hello.c
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;-pipe&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;使用管道代替编译中临时文件, 在使用非 gnu 汇编工具的时候, 可能有些问题。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gcc -pipe -o hello.exe hello.c
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;-ansi&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;关闭 gnu c中与 ansi c 不兼容的特性, 激活 ansi c 的专有特性（包括禁止一些 asm inline typeof 关键字, 以及 UNIX,vax 等预处理宏）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;-include file&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;包含某个代码,简单来说,就是便以某个文件,需要另一个文件的时候,就可以用它设定,功能就相当于在代码中使用 &lt;strong&gt;&lt;code&gt;#include&amp;lt;filename&amp;gt;&lt;/code&gt;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;例子用法:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gcc hello.c -include /root/pianopan.h
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;-Dmacro&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;相当于 C 语言中的 &lt;strong&gt;#define macro&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;-Dmacro=defn&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;相当于 C 语言中的 &lt;strong&gt;#define macro=defn&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;-Umacro&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;相当于 C 语言中的 &lt;strong&gt;#undef macro&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;-undef&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;取消对任何非标准宏的定义&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;-C&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在预处理的时候, 不删除注释信息, 一般和-E使用, 有时候分析程序，用这个很方便的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;-M&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;生成文件关联的信息。包含目标文件所依赖的所有源代码你可以用 &lt;strong&gt;gcc -M hello.c&lt;/strong&gt; 来测试一下，很简单。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;-g&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;只是编译器，在编译的时候，产生调试信息。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;-static&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;此选项将禁止使用动态库，所以，编译出来的东西，一般都很大，也不需要什么动态连接库，就可以运行。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;-share&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;此选项将尽量使用动态库，所以生成文件比较小，但是需要系统由动态库。&lt;/p&gt;
&lt;p&gt;GCC 是 GNU 的 C 和 C++ 编译器。实际上，GCC 能够编译三种语言：C、C++ 和 Object C（C 语言的一种面向对象扩展）。利用 gcc 命令可同时编译并连接 C 和 C++ 源程序。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;gcc 命令的常用选项&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;选项&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;解释&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;-ansi&lt;/td&gt;
&lt;td&gt;只支持 ANSI 标准的 C  语法。这一选项将禁止 GNU C 的某些特色， 例如 asm 或 typeof 关键词。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-c&lt;/td&gt;
&lt;td&gt;只编译并生成目标文件。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-DMACRO&lt;/td&gt;
&lt;td&gt;以字符串&quot;1&quot;定义  MACRO 宏。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-DMACRO=DEFN&lt;/td&gt;
&lt;td&gt;以字符串&quot;DEFN&quot;定义  MACRO 宏。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-E&lt;/td&gt;
&lt;td&gt;只运行 C 预编译器。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-g&lt;/td&gt;
&lt;td&gt;生成调试信息。GNU 调试器可利用该信息。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-IDIRECTORY&lt;/td&gt;
&lt;td&gt;指定额外的头文件搜索路径DIRECTORY。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-LDIRECTORY&lt;/td&gt;
&lt;td&gt;指定额外的函数库搜索路径DIRECTORY。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-lLIBRARY&lt;/td&gt;
&lt;td&gt;连接时搜索指定的函数库LIBRARY。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-m486&lt;/td&gt;
&lt;td&gt;针对 486 进行代码优化。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-o FILE&lt;/td&gt;
&lt;td&gt;生成指定的输出文件。用在生成可执行文件时。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-O0&lt;/td&gt;
&lt;td&gt;不进行优化处理。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-O 或 -O1&lt;/td&gt;
&lt;td&gt;优化生成代码。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-O2&lt;/td&gt;
&lt;td&gt;进一步优化。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-O3&lt;/td&gt;
&lt;td&gt;比 -O2 更进一步优化，包括  inline 函数。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-shared&lt;/td&gt;
&lt;td&gt;生成共享目标文件。通常用在建立共享库时。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-static&lt;/td&gt;
&lt;td&gt;禁止使用共享连接。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-UMACRO&lt;/td&gt;
&lt;td&gt;取消对 MACRO 宏的定义。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-w&lt;/td&gt;
&lt;td&gt;不生成任何警告信息。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Wall&lt;/td&gt;
&lt;td&gt;生成所有警告信息。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】https://www.runoob.com/w3cnote/gcc-parameter-detail.html&lt;/p&gt;
</content:encoded></item><item><title>CUDA 原子操作</title><link>https://tuoyuangui.github.io/website/posts/typora/cuda/cuda%E5%8E%9F%E5%AD%90%E6%93%8D%E4%BD%9C/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/cuda/cuda%E5%8E%9F%E5%AD%90%E6%93%8D%E4%BD%9C/</guid><pubDate>Sun, 26 Mar 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;CUDA 原子操作&lt;/h1&gt;
&lt;h2&gt;1、实例&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;/* CUDA_compute_write.c */
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;math.h&amp;gt;
#include &amp;lt;cuda_runtime.h&amp;gt;
#define N 12345
#define BLOCK 256
__global__ void cuda_sum_comp(float *d_data, float *d_data_sum, int n)
{
  int i1 = threadIdx.x + blockIdx.x * blockDim.x;
  if(i1&amp;lt;n) d_data_sum[0] += d_data[i1];
}

__global__ void cuda_sum_atom(float *d_data, float *d_data_sum, int n)
{
  int i1 = threadIdx.x + blockIdx.x * blockDim.x;
  if(i1&amp;lt;n) atomicAdd(&amp;amp;d_data_sum[0], d_data[i1]);
}

int main(void)
{
  float *data, *data_sum;
  float *d_data, *d_data_sum;
  data = (float*)malloc(N*sizeof(float)); memset(data,0,N*sizeof(float));
  cudaMalloc(&amp;amp;d_data, N*sizeof(float)); cudaMemset(d_data, 0, N*sizeof(float));
  data_sum = (float*)malloc(sizeof(float)); memset(data_sum,0,sizeof(float));
  cudaMalloc(&amp;amp;d_data_sum, sizeof(float)); cudaMemset(d_data_sum, 0, sizeof(float));
  for(int i=0; i&amp;lt;N; i++) data[i] = i-5432;
  cudaMemcpy(d_data, data, N*sizeof(float), cudaMemcpyHostToDevice);
  cuda_sum_comp&amp;lt;&amp;lt;&amp;lt;(N+BLOCK-1)/BLOCK, BLOCK&amp;gt;&amp;gt;&amp;gt;(d_data, d_data_sum, N);
  cudaMemcpy(data_sum, d_data_sum, sizeof(float), cudaMemcpyDeviceToHost);
  printf(&quot;CUDA_compute:sum = %f\n&quot;, data_sum[0]);
  memset(data_sum,0,sizeof(float));cudaMemset(d_data_sum, 0, sizeof(float));
  cuda_sum_atom&amp;lt;&amp;lt;&amp;lt;(N+BLOCK-1)/BLOCK, BLOCK&amp;gt;&amp;gt;&amp;gt;(d_data, d_data_sum, N);
  cudaMemcpy(data_sum, d_data_sum, sizeof(float), cudaMemcpyDeviceToHost);
  printf(&quot;CUDA_atom:sum = %f\n&quot;, data_sum[0]);
  free(data); free(data_sum);
  cudaFree(d_data); cudaFree(d_data_sum);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;运行结果：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./CUDA%E5%8E%9F%E5%AD%90%E6%93%8D%E4%BD%9C.assets/image-20240528211342732.png&quot; alt=&quot;image-20240528211342732&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;原子操作列表&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;加法：T atomicAdd(T *address, T val); 功能：new = old + val。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;减法：T atomicSub(T *address, T val); 功能：new = old - val。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;交换：T atomicExch(T *address, T val); 功能：new = val。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最小值：T atomicMin(T *address, T val); 功能：new = (old &amp;lt; val) ? old : val。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最大值：T atomicMax(T *address, T val); 功能：new = (old &amp;gt; val) ? old : val。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;自增：T atomicInc(T *address, T val); 功能：new = (old &amp;gt;= val) ? 0 : (old + 1)。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;自减：T atomicDec(T *address, T val); 功能：new = ((old == 0) || (old &amp;gt; val)) ? val : (old - 1)。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;比较-交换（Compare And Swap)：T atomicCAS(T *address, T compare, T val); 功能：new = (old == compare) ? val : old。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;按位与：T atomicAnd(T *address, T val); 功能：new = old &amp;amp; val。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;按位或：T atomicOr(T *address, T val); 功能：new = old | val。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;按位异或：T atomicXor(T *address, T val);&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】https://zhuanlan.zhihu.com/p/641413228&lt;/p&gt;
</content:encoded></item><item><title>C语言中的int main(int argc,char argv[]的含义和用法</title><link>https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/argc%E5%92%8Cargv%E7%9A%84%E4%BD%9C%E7%94%A8/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/argc%E5%92%8Cargv%E7%9A%84%E4%BD%9C%E7%94%A8/</guid><pubDate>Thu, 16 Mar 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;C语言中的int main(int argc,char* argv[]的含义和用法&lt;/h1&gt;
&lt;hr /&gt;
&lt;h4&gt;1、基本概念&lt;/h4&gt;
&lt;p&gt;　　argc,argv 用&lt;a href=&quot;https://baike.baidu.com/item/%E5%91%BD%E4%BB%A4%E8%A1%8C&quot;&gt;命令行&lt;/a&gt;编译程序时有用。&lt;/p&gt;
&lt;p&gt;　　主函数main中变量(int argc,char *argv[ ])的含义，有些&lt;a href=&quot;https://baike.baidu.com/item/%E7%BC%96%E8%AF%91%E5%99%A8&quot;&gt;编译器&lt;/a&gt;允许将main()的返回类型声明为void，这已不再是合法的C++&lt;/p&gt;
&lt;p&gt;　　&lt;code&gt;main(int argc, char *argv[ ], char **env)&lt;/code&gt; 才是&lt;a href=&quot;https://baike.baidu.com/item/UNIX&quot;&gt;UNIX&lt;/a&gt;和&lt;a href=&quot;https://baike.baidu.com/item/Linux&quot;&gt;Linux&lt;/a&gt;中的标准写法。&lt;/p&gt;
&lt;p&gt;　　　　argc: 整数,用来统计你运行程序时送给&lt;a href=&quot;https://baike.baidu.com/item/main%E5%87%BD%E6%95%B0&quot;&gt;main函数&lt;/a&gt;的&lt;a href=&quot;https://baike.baidu.com/item/%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%8F%82%E6%95%B0&quot;&gt;命令行参数&lt;/a&gt;的个数&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;argv[ ]: 指针&lt;a href=&quot;https://baike.baidu.com/item/%E6%95%B0%E7%BB%84&quot;&gt;数组&lt;/a&gt;，用来存放指向你的字符串参数的指针，每一个元素指向一个参数&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;　　　　argv[0] 指向程序运行的全路径名&lt;/p&gt;
&lt;p&gt;　　　　argv[1] 指向在DOS命令行中执行程序名后的第一个字符串&lt;/p&gt;
&lt;p&gt;　　　　argv[2] 指向执行程序名后的第二个字符串&lt;/p&gt;
&lt;p&gt;　　　　...&lt;/p&gt;
&lt;p&gt;　　　　argv[argc]为NULL。&lt;/p&gt;
&lt;p&gt;　　　　&lt;strong&gt;env&lt;/strong&gt;：字符串数组。env[ ]的每一个元素都包含ENVVAR=value形式的字符串。其中ENVVAR为环境变量，value 为ENVVAR的对应值。&lt;/p&gt;
&lt;p&gt;　　argc, argv,env是在main( )函数之前被赋值的，&lt;a href=&quot;https://baike.baidu.com/item/%E7%BC%96%E8%AF%91%E5%99%A8&quot;&gt;编译器&lt;/a&gt;生成的&lt;a href=&quot;https://baike.baidu.com/item/%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6&quot;&gt;可执行文件&lt;/a&gt;，main( )不是真正的入口点，而是一个标准的函数,这个函数名与具体的操作系统有关。&lt;/p&gt;
&lt;h4&gt;2、具体用法&lt;/h4&gt;
&lt;p&gt;　　经典例子&lt;/p&gt;
&lt;p&gt;　　对于理解argv[ ]函数很管用：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/* xx.c */
#include&amp;lt;stdio.h&amp;gt;
int main(int argc,char *argv[])
{
    int i;
    if(argc==1)
        printf(&quot;only get the program!\n&quot;);
    if(argc&amp;gt;2)
    for(i=1;i&amp;lt;argc;i++)
           printf(&quot;inputfile[%d]:%s\n&quot;,i+1,argv[i]);
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;　　编译运行结果如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ubuntu@ubuntu:~/DATA/others$ gcc xx.c -o lgl
ubuntu@ubuntu:~/DATA/others$ ./lgl
only get the program!
ubuntu@ubuntu:~/DATA/others$ ./lgl xx 123 zls2
inputfile[2]:xx
inputfile[3]:123
inputfile[4]:zls2
ubuntu@ubuntu:~/DATA/others$
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;　　main(int argc, char* argv[ ])，其中argc是指变量的个数，本例中即指test和hello这两个变量和程序运行的全路径名或程序的名字，argc即为3。&lt;/p&gt;
&lt;p&gt;　　argv是一个char *的数组，其中存放指向参数变量的指针，此处argv[0]指向test.exe的全路径名或test.exe，argv[1]指向test，argv[2]指向hello。&lt;/p&gt;
&lt;h2&gt;3、实例&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;/*test_main.c*/
#include &amp;lt;stdio.h&amp;gt;

int main(int argc, char *argv[])
{
  printf(&quot;%d\n&quot;,argc);
  printf(&quot;\n&quot;);
  printf(&quot;%s\n&quot;,argv[0]);
  printf(&quot;%s\n&quot;,argv[1]);
  printf(&quot;%s\n&quot;,argv[2]);
  return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;编译运行&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ ./test_main.o wan tu sirui
$ ./test_main.o
wan
Tu
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】&lt;a href=&quot;https://www.cnblogs.com/hxing/p/10052828.html&quot;&gt;int main(int argc,char* argv[]) 的含义和用法 - hxing - 博客园 (cnblogs.com)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;【2】https://blog.csdn.net/qq_37212828/article/details/103153208&lt;/p&gt;
</content:encoded></item><item><title>OpenMP学习目录</title><link>https://tuoyuangui.github.io/website/posts/typora/%E6%8C%87%E5%8D%97/openmp%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E6%8C%87%E5%8D%97/openmp%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/</guid><pubDate>Sat, 11 Mar 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;OpenMP学习目录&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;#openmp&quot;&gt;OpenMP&lt;/a&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;#%E4%BE%8B1%E5%90%91%E9%87%8F%E5%8A%A0%E6%B3%95&quot;&gt;例1、向量加法&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E4%BE%8B2%E5%90%91%E9%87%8F%E5%86%85%E7%A7%AF&quot;&gt;例2、向量内积&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#openmp%E6%8C%87%E4%BB%A4&quot;&gt;OpenMP指令&lt;/a&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;#parallel%E6%8C%87%E4%BB%A4&quot;&gt;parallel指令&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#for%E6%8C%87%E4%BB%A4&quot;&gt;for指令&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#sections%E6%8C%87%E4%BB%A4&quot;&gt;sections指令&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#critical%E6%8C%87%E4%BB%A4&quot;&gt;critical指令&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#openmp%E5%AD%90%E5%8F%A5&quot;&gt;OpenMP子句&lt;/a&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;#if%E5%AD%90%E5%8F%A5&quot;&gt;if子句&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#num_threads%E5%AD%90%E5%8F%A5&quot;&gt;num_threads子句&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#private%E5%AD%90%E5%8F%A5&quot;&gt;private子句&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#reduction%E5%AD%90%E5%8F%A5&quot;&gt;reduction子句&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#openmp%E5%87%BD%E6%95%B0&quot;&gt;OpenMP函数&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%E5%8F%82%E8%80%83&quot;&gt;参考&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;&lt;a href=&quot;#openmp&quot;&gt;§&lt;/a&gt;&lt;a href=&quot;#contents:openmp&quot;&gt;OpenMP&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;OpenMP (Open Multi-Processing)是一套支持跨平台共享内存方式的多线程并发的编程API，使用C,C++和Fortran语言，可以在大多数的处理器体系和操作系统中运行。OpenMP包括一套编译器指令、库和一些能够影响运行行为的环境变量。OpenMP采用#pragma omp来控制线程，即使用c/c++标准留给编译器厂商的实现定义行为控制语法来实现，因此OpenMP标准针对的是编译器厂商。要确定某个平台是否支持OpenMP，只需要看是否有支持OpenMP的编译器，如windows的visual studio编译器只支持OpenMP 2.0，而最新版的OpenMP标准为OpenMP5.0，因此windows平台对OpenMP的支持不太友好。&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;#%E4%BE%8B1%E5%90%91%E9%87%8F%E5%8A%A0%E6%B3%95&quot;&gt;§&lt;/a&gt;&lt;a href=&quot;#contents:%E4%BE%8B1%E5%90%91%E9%87%8F%E5%8A%A0%E6%B3%95&quot;&gt;例1、向量加法&lt;/a&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;// 文件：vector_add_omp.cpp
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;

int main() {
    const int n = 10;
    std::vector&amp;lt;int&amp;gt; v1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    std::vector&amp;lt;int&amp;gt; v2 = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
    std::vector&amp;lt;int&amp;gt; v3(n);

    #pragma omp parallel for
    for (int i = 0; i &amp;lt; n; ++i)
        v3[i] = v1[i] + v2[i];

    for (int i = 0; i &amp;lt; n; ++i)
        std::cout &amp;lt;&amp;lt; v3[i] &amp;lt;&amp;lt; &quot; &quot;;
    std::cout &amp;lt;&amp;lt; std::endl;

    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;编译：&lt;code&gt;g++ -fopenmp vector_add_omp.cpp -o vector_add_omp&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ ./vector_add_omp
11 11 11 11 11 11 11 11 11 11
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;OpenMP采用fork/join并行模式，程序开始时只有一个主线程，程序中的串行部分由主线程执行，并行部分派生其它线程共同执行，所有线程执行完毕后才会退出并行区域，因此在输出v3时可以确保已经计算完成。&lt;/p&gt;
&lt;p&gt;parallel for中循环小括号内的语句必须按照一定的规范书写才能并行：&lt;/p&gt;
&lt;p&gt;(1) 第一条语句是循环变量初始化的语句，必须写成&quot;变量=初值&quot;的形式。如i=0。&lt;/p&gt;
&lt;p&gt;(2) 第二条语句是循环限制语句，必须为这4种形式之一：&lt;code&gt;i &amp;lt; n、 i &amp;lt;= n、 i &amp;gt; n、 i&amp;gt;= n&lt;/code&gt;。需要注意循环中不能有影响循环次数的语句，如break语句或者改变循环变量的语句。&lt;/p&gt;
&lt;p&gt;(3) 第三条语句改变循环变量，必须写成这9种形式之一：&lt;code&gt;i++、++i、i--、--i、i += inc、i -= inc、i = i + inc、i = i - inc、i = inc + i&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;此外，还需要注意的是，程序中的变量有共享和线程私有之分，在parallel for中，凡是for循环中声明的变量都是线程私有的，每个线程都有一份，而for循环外声明的为所有线程共享的。&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;#%E4%BE%8B2%E5%90%91%E9%87%8F%E5%86%85%E7%A7%AF&quot;&gt;§&lt;/a&gt;&lt;a href=&quot;#contents:%E4%BE%8B2%E5%90%91%E9%87%8F%E5%86%85%E7%A7%AF&quot;&gt;例2、向量内积&lt;/a&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;// 文件：vector_dot_omp.cpp
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;

int main() {
    const int n = 10;
    std::vector&amp;lt;int&amp;gt; v1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    std::vector&amp;lt;int&amp;gt; v2 = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};

    int sum = 0;

    #pragma omp parallel for reduction(+:sum)
    for (int i = 0; i &amp;lt; n; ++i)
        sum += v1[i] * v2[i];

    std::cout &amp;lt;&amp;lt; sum &amp;lt;&amp;lt; std::endl;

    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;编译：&lt;code&gt;g++ -fopenmp vector_dot_omp.cpp -o vector_dot_omp&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ ./vector_dot_omp
220
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;reduction对一个或多个变量指定一个操作符，每个线程将创建变量的一个私有拷贝，在区域结束处，用指定的操作符将私有拷贝的值进行归约，然后用归约的结果更新原来的变量。如vector_dot_omp.cpp中，每个线程中都有自己的局部变量sum，然后计算一部分和，最后将所有的部分和相加，更新共享的变量sum。&lt;/p&gt;
&lt;p&gt;reduction支持8种操作符，创建私有变量时使用的初始值依赖于操作符，如下表所示：&lt;/p&gt;
&lt;p&gt;| 操作符 | + | - | * | &amp;amp; | | | ^ | &amp;amp;&amp;amp; | || |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 初始值 | 0 | 0 | 1 | ~0 | 0 | 0 | 1 | 0 |&lt;/p&gt;
&lt;p&gt;显然，分段后的计算结果要与串行结果相同，使用的运算必须满足交换率和结合率，减法是不满足这两条性质的，而上表却出现了减法，这是因为此处的减法和加法的效果基本相同，使用场合为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#pragma omp parallel for reduction(-:sum)
for (int i = 0; i &amp;lt; n; ++i)
    sum -= v1[i] * v2[i];
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;它和下面的代码计算结果实际上是相同的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#pragma omp parallel for reduction(+:sum)
for (int i = 0; i &amp;lt; n; ++i)
    sum -= v1[i] * v2[i];
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;&lt;a href=&quot;#openmp%E6%8C%87%E4%BB%A4&quot;&gt;§&lt;/a&gt;&lt;a href=&quot;#contents:openmp%E6%8C%87%E4%BB%A4&quot;&gt;OpenMP指令&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;在c/c++中，OpenMP的基本使用方法为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#pragma omp directives [clause[[,] clause] ... ]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;OpenMP的指令有：&lt;code&gt;parallel, for, sections, critical&lt;/code&gt;等。&lt;/p&gt;
&lt;h4&gt;&lt;a href=&quot;#parallel%E6%8C%87%E4%BB%A4&quot;&gt;§&lt;/a&gt;&lt;a href=&quot;#contents:parallel%E6%8C%87%E4%BB%A4&quot;&gt;parallel指令&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;parallel指令用于定义一个并行执行的代码块。如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;cstdio&amp;gt;
#include &amp;lt;omp.h&amp;gt;

int main() {
    #pragma omp parallel
    {
        int i = omp_get_thread_num();

        // 连续cout不是线程安全的，只能使用printf
        // std::cout &amp;lt;&amp;lt; &quot;Hello from thread &quot; &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &quot;\n&quot;;
        printf(&quot;Hello from thread %d\n&quot;, i);
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行结果：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Hello from thread 6
Hello from thread 3
Hello from thread 4
Hello from thread 1
Hello from thread 0
Hello from thread 5
Hello from thread 7
Hello from thread 2
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;&lt;a href=&quot;#for%E6%8C%87%E4%BB%A4&quot;&gt;§&lt;/a&gt;&lt;a href=&quot;#contents:for%E6%8C%87%E4%BB%A4&quot;&gt;for指令&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;for指令的语法为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#pragma omp [parallel] for [clauses]
for_statement
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果不加parallel，后面所跟的for循环只在某一个线程内运行，而如果出现在parallel声明的块内则相当于parallel for。如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;cstdio&amp;gt;
#include &amp;lt;vector&amp;gt;

int main() {
    #pragma omp for
    for (int i = 0; i &amp;lt; 4; ++i)
        printf(&quot;%d &quot;, i);
    printf(&quot;\n&quot;);

    #pragma omp parallel
    {
        #pragma omp for
        for (int i = 0; i &amp;lt; 4; ++i)
            printf(&quot;%d &quot;, i);
    }
    printf(&quot;\n&quot;);

    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行结果为：&lt;/p&gt;
&lt;h4&gt;&lt;a href=&quot;#sections%E6%8C%87%E4%BB%A4&quot;&gt;§&lt;/a&gt;&lt;a href=&quot;#contents:sections%E6%8C%87%E4%BB%A4&quot;&gt;sections指令&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;sections指令用于指定分别在多个线程内执行的代码块，语法为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#pragma omp [parallel] sections [clauses]
{
    #pragma omp section
    {
        code_block
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;cstdio&amp;gt;
#include &amp;lt;omp.h&amp;gt;

int main() {
    #pragma omp parallel sections
    {
        #pragma omp section
        printf(&quot;section1, thread id is %d\n&quot;, omp_get_thread_num());

        #pragma omp section
        printf(&quot;section2, thread id is %d\n&quot;, omp_get_thread_num());

        #pragma omp section
        printf(&quot;section3, thread id is %d\n&quot;, omp_get_thread_num());

        #pragma omp section
        printf(&quot;section4, thread id is %d\n&quot;, omp_get_thread_num());
    }

    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行结果为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;section 3, thread id is 5
section 1, thread id is 6
section 2, thread id is 1
section 4, thread id is 7
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可见的确是在不同的线程中执行的。&lt;/p&gt;
&lt;h4&gt;&lt;a href=&quot;#critical%E6%8C%87%E4%BB%A4&quot;&gt;§&lt;/a&gt;&lt;a href=&quot;#contents:critical%E6%8C%87%E4%BB%A4&quot;&gt;critical指令&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;critical指令用于指定一个代码块为临界区。语法为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#pragma omp critical [(name)]
{
    code_block
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;

int main() {
    std::vector&amp;lt;int&amp;gt; nums = {2, 3, 12, 43, 4, 21, 54, 35, 34, 5, 2435, 3425, 34, 5};

    int max = nums[0];

    #pragma omp parallel for
    for (int i = 1; i &amp;lt; nums.size(); ++i) {
        if (nums[i] &amp;gt; max) {
            #pragma omp critical
            {
                if (nums[i] &amp;gt; max)
                    max = nums[i];
            }
        }
    }

    std::cout &amp;lt;&amp;lt; max &amp;lt;&amp;lt; std::endl;

    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行结果为：3425&lt;/p&gt;
&lt;p&gt;这个程序设计得不好，求最大值或者最小值显然是满足交换率和结合率的，应当使用归约来求。&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;#openmp%E5%AD%90%E5%8F%A5&quot;&gt;§&lt;/a&gt;&lt;a href=&quot;#contents:openmp%E5%AD%90%E5%8F%A5&quot;&gt;OpenMP子句&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;在c/c++中，OpenMP的基本使用方法为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#pragma omp directives [clause[[,] clause] ... ]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;OpenMP子句有：&lt;code&gt;if, num_threads, private, reduction&lt;/code&gt;等。&lt;/p&gt;
&lt;h4&gt;&lt;a href=&quot;#if%E5%AD%90%E5%8F%A5&quot;&gt;§&lt;/a&gt;&lt;a href=&quot;#contents:if%E5%AD%90%E5%8F%A5&quot;&gt;if子句&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;if子句用于指定接下来的代码块是否并行，可以出现在parallel、for和sections后面。如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;std::vector&amp;lt;int&amp;gt; add(const std::vector&amp;lt;int&amp;gt; &amp;amp;v1,
                     const std::vector&amp;lt;int&amp;gt; &amp;amp;v2,
                     bool parallel = true) {
    std::vector&amp;lt;int&amp;gt; v3(v1.size());

    #pragma omp parallel for if (parallel)
    for (int i = 0; i &amp;lt; v1.size(); ++i)
        v3[i] = v1[i] + v2[i];

    return v3;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;当传入的参数parallel为false时两个向量执行串行加法。&lt;/p&gt;
&lt;h4&gt;&lt;a href=&quot;#num_threads%E5%AD%90%E5%8F%A5&quot;&gt;§&lt;/a&gt;&lt;a href=&quot;#contents:num_threads%E5%AD%90%E5%8F%A5&quot;&gt;num_threads子句&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;num_threads子句用于指定并行的线程数量，可以出现在parallel、for和sections后面。如sections指令一节的示例程序输出结果的线程编号不是预期的0, 1, 2, 3的排列，这是因为默认使用8个线程进行并行，将其改成4个线程：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#pragma omp parallel sections num_threads(4)
{
    #pragma omp section
    printf(&quot;section1, thread id is %d\n&quot;, omp_get_thread_num());

    #pragma omp section
    printf(&quot;section2, thread id is %d\n&quot;, omp_get_thread_num());

    #pragma omp section
    printf(&quot;section3, thread id is %d\n&quot;, omp_get_thread_num());

    #pragma omp section
    printf(&quot;section4, thread id is %d\n&quot;, omp_get_thread_num());
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行结果为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;section4, thread id is 3
section3, thread id is 2
section2, thread id is 0
section1, thread id is 1
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;&lt;a href=&quot;#private%E5%AD%90%E5%8F%A5&quot;&gt;§&lt;/a&gt;&lt;a href=&quot;#contents:private%E5%AD%90%E5%8F%A5&quot;&gt;private子句&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;private子句用于将一个或多个变量声明成线程私有的变量，线程间无法相互访问这个变量，也无法访问并行区域外的同名共享变量。例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;int n = 1;
#pragma omp parallel for private(n)
for (n = 8; n &amp;lt; 12; ++n)
    printf(&quot;%d\n&quot;, n);
printf(&quot;%d\n&quot;, n);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行结果为：&lt;code&gt;8 11 10 9 1&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;因此以private声明的变量和并行区域外的同名变量没有任何联系。&lt;/p&gt;
&lt;h4&gt;&lt;a href=&quot;#reduction%E5%AD%90%E5%8F%A5&quot;&gt;§&lt;/a&gt;&lt;a href=&quot;#contents:reduction%E5%AD%90%E5%8F%A5&quot;&gt;reduction子句&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;reduction的功能如例2所述，可以出现在parallel、for和sections之后。&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;#openmp%E5%87%BD%E6%95%B0&quot;&gt;§&lt;/a&gt;&lt;a href=&quot;#contents:openmp%E5%87%BD%E6%95%B0&quot;&gt;OpenMP函数&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;在c/c++中，使用OpenMP的函数需要包含头文件&lt;code&gt;&amp;lt;omp.h&amp;gt;&lt;/code&gt;。以下为一个简单的函数列表：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// 设置并行区域线程数
void omp_set_num_threads(int _Num_threads);

// 返回当前线程数目，在串行代码中调用将返回1
int omp_get_num_threads(void);

// 返回程序的最大可用线程数量
int omp_get_max_threads(void);

// 返回当前线程id，从0开始编号
int omp_get_thread_num(void);

// 返回程序可用的处理器数
int omp_get_num_procs(void);

// 启用或禁用可用线程数的动态调整(缺省情况下启用动态调整)。
void omp_set_dynamic(int _Dynamic_threads);

// 确定在程序中此处是否启用了动态线程调整。
int omp_get_dynamic(void);

// 确定线程是否在并行区域的动态范围内执行
int omp_in_parallel(void);

// 启用或禁用嵌套并行操作
void omp_set_nested(int _Nested);

// 确定在程序中此处是否启用了嵌套并行操作
int omp_get_nested(void);


// 初始化一个（嵌套）互斥锁
void omp_init_lock(omp_lock_t * _Lock);
void omp_init_nest_lock(omp_nest_lock_t * _Lock);

// 销毁一个（嵌套）互斥锁并释放内存
void omp_destroy_lock(omp_lock_t * _Lock);
void omp_destroy_nest_lock(omp_nest_lock_t * _Lock);

// 获得一个（嵌套）互斥锁
void omp_set_lock(omp_lock_t * _Lock);
void omp_set_nest_lock(omp_nest_lock_t * _Lock);

// 释放一个（嵌套）互斥锁
void omp_unset_lock(omp_lock_t * _Lock);
void omp_unset_nest_lock(omp_nest_lock_t * _Lock);

// 试图获得一个（嵌套）互斥锁，并在成功时放回真，失败时返回假
int omp_test_lock(omp_lock_t * _Lock);
int omp_test_nest_lock(omp_nest_lock_t * _Lock);

// 从过去的某一时刻经历的时间，一般用于成对出现，进行时间比较
double omp_get_wtime(void);

// 得到clock ticks的秒数
double omp_get_wtick(void);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;random&amp;gt;
#include &amp;lt;omp.h&amp;gt;

int main() {
    const int N = 100000000;   // 一亿
    std::vector&amp;lt;double&amp;gt; A(N);

    std::uniform_real_distribution&amp;lt;double&amp;gt; dist(0, 10);
    std::random_device rd;

    double start = 0;
    double end = 0;
    double elapsed = 0;

    // 串行
    start = omp_get_wtime();
    std::default_random_engine re{rd()};
    for (int i = 0; i &amp;lt; N; i++)
        A[i] = dist(re);
    end = omp_get_wtime();
    elapsed = end - start;
    std::cout &amp;lt;&amp;lt; &quot;generate &quot; &amp;lt;&amp;lt; N &amp;lt;&amp;lt; &quot; numbers in series elapsed: &quot;
              &amp;lt;&amp;lt; elapsed &amp;lt;&amp;lt; &quot; s&quot; &amp;lt;&amp;lt; std::endl;

    // 并行
    start = omp_get_wtime();
    #pragma omp parallel
    {
        int num_threads = omp_get_num_threads();
        std::default_random_engine re{rd()};
        for (int i = omp_get_thread_num(); i &amp;lt; N; i += num_threads)
            A[i] = dist(re);
    }
    end = omp_get_wtime();
    elapsed = end - start;
    std::cout &amp;lt;&amp;lt; &quot;generate &quot; &amp;lt;&amp;lt; N &amp;lt;&amp;lt; &quot; numbers in parallel elapsed: &quot;
              &amp;lt;&amp;lt; elapsed &amp;lt;&amp;lt; &quot; s&quot; &amp;lt;&amp;lt; std::endl;

    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行结果为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;generate 100000000 numbers in series elapsed: 6.45648 s
generate 100000000 numbers in parallel elapsed: 1.18125 s
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;&lt;a href=&quot;#%E5%8F%82%E8%80%83&quot;&gt;§&lt;/a&gt;&lt;a href=&quot;#contents:%E5%8F%82%E8%80%83&quot;&gt;参考&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;[1] OpenMP标准：https://www.openmp.org/wp-content/uploads/OpenMP-API-Specification-5.0.pdf.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://w-jin.github.io/tags/openmp/&quot;&gt;OpenMP&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>离散余弦变换DCT</title><link>https://tuoyuangui.github.io/website/posts/typora/%E6%95%B0%E5%AD%A6%E6%96%B9%E6%B3%95/%E7%A6%BB%E6%95%A3%E4%BD%99%E5%BC%A6%E5%8F%98%E6%8D%A2dct/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E6%95%B0%E5%AD%A6%E6%96%B9%E6%B3%95/%E7%A6%BB%E6%95%A3%E4%BD%99%E5%BC%A6%E5%8F%98%E6%8D%A2dct/</guid><pubDate>Sat, 11 Mar 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;离散余弦变换DCT&lt;/h1&gt;
&lt;h2&gt;1、&lt;strong&gt;离散余弦变换&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;​		&lt;strong&gt;离散余弦变换&lt;/strong&gt;（&lt;strong&gt;discrete cosine transform, DCT&lt;/strong&gt;）是与&lt;a href=&quot;https://zh.wikipedia.org/wiki/%E5%82%85%E9%87%8C%E5%8F%B6%E5%8F%98%E6%8D%A2&quot;&gt;傅里叶变换&lt;/a&gt;相关的一种变换，类似于&lt;a href=&quot;https://zh.wikipedia.org/wiki/%E7%A6%BB%E6%95%A3%E5%82%85%E9%87%8C%E5%8F%B6%E5%8F%98%E6%8D%A2&quot;&gt;离散傅里叶变换&lt;/a&gt;，但是只使用&lt;a href=&quot;https://zh.wikipedia.org/wiki/%E5%AE%9E%E6%95%B0&quot;&gt;实数&lt;/a&gt;。离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换，这个离散傅里叶变换是对一个实&lt;a href=&quot;https://zh.wikipedia.org/wiki/%E5%81%B6%E5%87%BD%E6%95%B0&quot;&gt;偶函数&lt;/a&gt;进行的（因为一个实偶函数的傅里叶变换仍然是一个实偶函数），在有些变形里面需要将输入或者输出的位置移动半个单位。这是由于离散余弦变换具有很强的&quot;能量集中&quot;特性：大多数的自然信号（包括声音和图像）的能量都集中在离散余弦变换后的低频部分，而且当信号具有接近&lt;a href=&quot;https://zh.wikipedia.org/wiki/%E9%A9%AC%E5%B0%94%E5%8F%AF%E5%A4%AB%E8%BF%87%E7%A8%8B&quot;&gt;马尔可夫过程&lt;/a&gt;的统计特性时，离散余弦变换的去相关性接近于&lt;a href=&quot;https://zh.wikipedia.org/w/index.php?title=K-L%E5%8F%98%E6%8D%A2&amp;amp;action=edit&amp;amp;redlink=1&quot;&gt;K-L变换&lt;/a&gt;（Karhunen-Loève变换——它具有最优的去相关性）的性能。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./%E7%A6%BB%E6%95%A3%E4%BD%99%E5%BC%A6%E5%8F%98%E6%8D%A2DCT.assets/image-20240528214620374.png&quot; alt=&quot;image-20240528214620374&quot; /&gt;&lt;/p&gt;
&lt;p&gt;一个401*3001炮集利用DCT实现数据重构，J(450:end,:) = 0; 数据量（3001-&amp;gt;450;15%）&lt;/p&gt;
&lt;p&gt;​                        &lt;img src=&quot;./%E7%A6%BB%E6%95%A3%E4%BD%99%E5%BC%A6%E5%8F%98%E6%8D%A2DCT.assets/image-20240528214651085.png&quot; alt=&quot;image-20240528214651085&quot; /&gt;             &lt;img src=&quot;./%E7%A6%BB%E6%95%A3%E4%BD%99%E5%BC%A6%E5%8F%98%E6%8D%A2DCT.assets/image-20240528214655491.png&quot; alt=&quot;image-20240528214655491&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】&lt;a href=&quot;https://zh.wikipedia.org/wiki/%E7%A6%BB%E6%95%A3%E4%BD%99%E5%BC%A6%E5%8F%98%E6%8D%A2&quot;&gt;离散余弦变换 - 维基百科，自由的百科全书 (wikipedia.org)&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>VIM基本操作</title><link>https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/vim%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/vim%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C/</guid><pubDate>Tue, 28 Feb 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;VIM基本操作&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;跳转到指定行：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;1. 88G （命令模式）
2. :88  (末行模式)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;跳转文件首：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gg （命令模式）
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;跳转文件尾：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;G（命令模式）
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;自动格式化程序：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gg=G（命令模式）
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;大括号对应：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;% （命令模式）
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;光标移至行首：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;0 （命令模式）执行结束，工作模式不变。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;光标移至行尾：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ （命令模式）执行结束，工作模式不变。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;删除单个字符：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;x （命令模式）执行结束，工作模式不变。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;替换单个字符：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;将待替换的字符用光标选中， r （命令模式），再按欲替换的字符
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;删除一个单词：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dw（命令模式）光标置于单词的首字母进行操作。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;删除光标至行尾：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;D 或者 d$（命令模式）
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;删除光标至行首：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;d0 （命令模式）
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;删除指定区域：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;按 V （命令模式）切换为 “可视模式”，使用 hjkl挪移光标来选中待删除区域。  按 d 删除该区域数据。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;删除指定1行：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;在光标所在行，按 dd （命令模式）
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;删除指定N行：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;在光标所待删除首行，按 Ndd （命令模式）
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;复制一行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;yy
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;粘贴：&lt;/strong&gt;
p：向后、P：向前。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;查找：&lt;/strong&gt;
1. 找 设想 内容：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    命令模式下， 按 “/” 输入欲搜索关键字，回车。使用 n 检索下一个。

2. 找 看到的内容：

    命令模式下，将光标置于单词任意一个字符上，按 “*”/ “#”
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;单行替换：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;将光标置于待替换行上， 进入末行模式，输入 :s /原数据/新数据
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;通篇替换：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;末行模式， :%s /原数据/新数据/g   g:不加，只替换每行首个。   sed
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;指定行的替换：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;末行模式， :起始行号，终止行号s /原数据/新数据/g   g:不加，只替换每行首个。

    :29,35s /printf/println/g
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;撤销、反撤销：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;u、ctrl+r（命令模式）
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;分屏：&lt;/strong&gt;
sp：横屏分。 Ctrl+ww 切换。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vsp：竖屏分。Ctrl+ww 切换。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;跳转至 man 手册：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;将光标置于待查看函数单词上，使用 K（命令模式）跳转。 指定卷， nK
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;查看宏定义：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;将光标置于待查看宏定义单词上，使用 [d 查看定义语句。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;在末行模式执行shell命令：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;:!命令        :! ls -l
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>C语言索引遍历探究</title><link>https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/c%E8%AF%AD%E8%A8%80%E7%B4%A2%E5%BC%95%E9%81%8D%E5%8E%86%E6%8E%A2%E7%A9%B6/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/c%E8%AF%AD%E8%A8%80%E7%B4%A2%E5%BC%95%E9%81%8D%E5%8E%86%E6%8E%A2%E7%A9%B6/</guid><pubDate>Thu, 16 Feb 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;C语言索引遍历探究&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;# include &quot;alloc_function.h&quot;
# include &amp;lt;stdio.h&amp;gt;
# include &amp;lt;stdlib.h&amp;gt;
# include &amp;lt;string.h&amp;gt;
#include &amp;lt;limits.h&amp;gt;
# define TIMES 21

int main()
{
    clock_t t0, t1, t2;
    float *arr1d;
    float ***arr3d;
    float time_r;
    float sum;
    float *pointer;
    size_t N1=2000;
    size_t N2=1000;
    size_t N3=50;
    arr1d = alloc1float(N1*N2*N3);
    arr3d = alloc3float(N1,N2,N3);
    size_t N = N1*N2*N3;
    printf(&quot;N=%ld\n&quot;, N);
    printf(&quot;size_t=[0,%u]\n&quot;, UINT_MAX);
    printf(&quot;int   =[%d,%d]\n&quot;, INT_MIN, INT_MAX);

    // 1D array
    time_r=0.0f;
    for(size_t time=0; time&amp;lt;TIMES; time++){
        t0 = clock();
        sum = 0.0f;
        for(size_t i=0; i&amp;lt;N; i++)
        {
            arr1d[i] = 1e-6f;
            sum += arr1d[i];
        }
        t1 = clock();
        if (time&amp;gt;0)
        time_r += (float)(t1-t0)/1000000.0;
    }
    printf(&quot;1D array: %f \t %f\n&quot;, time_r,sum);

    // 1D array pointer
    time_r=0.0f;
    for(size_t time=0; time&amp;lt;TIMES; time++){
        t0 = clock();
        sum = 0.0f;
        for(pointer = arr1d; pointer&amp;lt;arr1d+N; pointer++)
        {
            *pointer = 1e-6f;
            sum += *pointer;
        }
        t1 = clock();
        if (time&amp;gt;0)
        time_r += (float)(t1-t0)/1000000.0;
    }
    printf(&quot;1D array pointer: %f \t %f \n&quot;, time_r, sum);

    // 3D array Nonequential read
    time_r=0.0f;
    for(size_t time=0; time&amp;lt;TIMES; time++){
        t0 = clock();
        sum = 0.0f;

        for(size_t i=0; i&amp;lt;N1; i++)
        {
            for(size_t j=0; j&amp;lt;N2; j++)
            {
                for(size_t k=0; k&amp;lt;N3; k++){
                    arr3d[k][j][i] = 1e-6f;
                    sum += arr3d[k][j][i];
                }
            }
        }
        t1 = clock();
        if (time&amp;gt;0)
        time_r += (float)(t1-t0)/1000000.0;
    }
    printf(&quot;3D array Nonequential: %f \t %f\n&quot;, time_r, sum);

    // 3D array Sequential read
    time_r=0.0f;
    for(size_t time=0; time&amp;lt;TIMES; time++){
        t0 = clock();
        sum = 0.0f;

        for(size_t k=0; k&amp;lt;N3; k++)
        {
            for(size_t j=0; j&amp;lt;N2; j++)
            {
                for(size_t i=0; i&amp;lt;N1; i++){
                    arr3d[k][j][i] = 1e-6f;
                    sum += arr3d[k][j][i];
                }
            }
        }
        t1 = clock();
        if (time&amp;gt;0)
        time_r += (float)(t1-t0)/1000000.0;
    }
     printf(&quot;3D array Sequential: %f \t %f\n&quot;, time_r, sum);

}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;运行结果&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;./C%E8%AF%AD%E8%A8%80%E7%B4%A2%E5%BC%95%E9%81%8D%E5%8E%86%E6%8E%A2%E7%A9%B6.assets/image-20240530225127503.png&quot; alt=&quot;image-20240530225127503&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;使用指针遍历，要比索引块快&lt;code&gt;%5&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;非顺序读写耗时约为顺序读写的&lt;code&gt;2.5倍&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;多维数组，没有一维数组快。&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;h4&gt;&lt;a href=&quot;./C%E8%AF%AD%E8%A8%80%E7%B4%A2%E5%BC%95%E9%81%8D%E5%8E%86%E6%8E%A2%E7%A9%B6.assets/test_speed.tar.gz&quot;&gt;实现代码&lt;/a&gt;&lt;/h4&gt;
</content:encoded></item><item><title>C 库函数 - perror()</title><link>https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/perror%E5%87%BD%E6%95%B0%E6%89%93%E5%8D%B0%E9%94%99%E8%AF%AF%E4%BF%A1%E6%81%AF/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/perror%E5%87%BD%E6%95%B0%E6%89%93%E5%8D%B0%E9%94%99%E8%AF%AF%E4%BF%A1%E6%81%AF/</guid><pubDate>Thu, 16 Feb 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;C 库函数 - perror()&lt;/h1&gt;
&lt;h2&gt;描述&lt;/h2&gt;
&lt;p&gt;C 库函数 &lt;strong&gt;void perror(const char *str)&lt;/strong&gt; 把一个描述性错误消息输出到标准错误 stderr。首先输出字符串 &lt;strong&gt;str&lt;/strong&gt;，后跟一个冒号，然后是一个空格。&lt;/p&gt;
&lt;h2&gt;声明&lt;/h2&gt;
&lt;p&gt;下面是 perror() 函数的声明。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;void perror(const char *str)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;参数&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;str&lt;/strong&gt; -- 这是 C 字符串，包含了一个自定义消息，将显示在原本的错误消息之前。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;返回值&lt;/h2&gt;
&lt;p&gt;该函数不返回任何值。&lt;/p&gt;
&lt;h2&gt;实例&lt;/h2&gt;
&lt;p&gt;下面的实例演示了 perror() 函数的用法。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

int main ()
{
   FILE *fp;

   /* 首先重命名文件 */
   rename(&quot;file.txt&quot;, &quot;newfile.txt&quot;);

   /* 现在让我们尝试打开相同的文件 */
   fp = fopen(&quot;file.txt&quot;, &quot;r&quot;);
   if( fp == NULL ) {
      perror(&quot;Error: &quot;);
      return(-1);
   }
   fclose(fp);

   return(0);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;让我们编译并运行上面的程序，这将产生以下结果，因为我们尝试打开一个不存在的文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Error: : No such file or directory
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】&lt;a href=&quot;https://www.runoob.com/cprogramming/c-function-perror.html&quot;&gt;C 库函数 – perror() | 菜鸟教程 (runoob.com)&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Bash Shell 快捷键</title><link>https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/shell%E5%BF%AB%E6%8D%B7%E9%94%AE/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/shell%E5%BF%AB%E6%8D%B7%E9%94%AE/</guid><pubDate>Sun, 25 Dec 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Bash Shell 快捷键&lt;/h1&gt;
&lt;p&gt;在 Bash shell 中，熟记以下快捷键，将极大的提高你的命令行操作效率。&lt;/p&gt;
&lt;h2&gt;编辑命令&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Ctrl + a ：移到命令行首&lt;/li&gt;
&lt;li&gt;Ctrl + e ：移到命令行尾&lt;/li&gt;
&lt;li&gt;Ctrl + f ：按字符前移（右向）&lt;/li&gt;
&lt;li&gt;Ctrl + b ：按字符后移（左向）&lt;/li&gt;
&lt;li&gt;Alt + f ：按单词前移（右向）&lt;/li&gt;
&lt;li&gt;Alt + b ：按单词后移（左向）&lt;/li&gt;
&lt;li&gt;Ctrl + xx：在命令行首和光标之间移动&lt;/li&gt;
&lt;li&gt;Ctrl + u ：从光标处删除至命令行首&lt;/li&gt;
&lt;li&gt;Ctrl + k ：从光标处删除至命令行尾&lt;/li&gt;
&lt;li&gt;Ctrl + w ：从光标处删除至字首&lt;/li&gt;
&lt;li&gt;Alt + d ：从光标处删除至字尾&lt;/li&gt;
&lt;li&gt;Ctrl + d ：删除光标处的字符&lt;/li&gt;
&lt;li&gt;Ctrl + h ：删除光标前的字符&lt;/li&gt;
&lt;li&gt;Ctrl + y ：粘贴至光标后&lt;/li&gt;
&lt;li&gt;Alt + c ：从光标处更改为首字母大写的单词&lt;/li&gt;
&lt;li&gt;Alt + u ：从光标处更改为全部大写的单词&lt;/li&gt;
&lt;li&gt;Alt + l ：从光标处更改为全部小写的单词&lt;/li&gt;
&lt;li&gt;Ctrl + t ：交换光标处和之前的字符&lt;/li&gt;
&lt;li&gt;Alt + t ：交换光标处和之前的单词&lt;/li&gt;
&lt;li&gt;Alt + Backspace：与 Ctrl + w &lt;s&gt;相同&lt;/s&gt;类似，分隔符有些差别&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + c -- 取消当前行输入的命令，相当于Ctrl + Break。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + s -- 暂停当前终端。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + q -- 恢复当前终端。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + z -- 后端运行。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + l -- 清空屏幕并重新显示当前命令行内容&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2&gt;重新执行命令&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Ctrl + r：逆向搜索命令历史&lt;/li&gt;
&lt;li&gt;Ctrl + g：从历史搜索模式退出&lt;/li&gt;
&lt;li&gt;Ctrl + p：历史中的上一条命令&lt;/li&gt;
&lt;li&gt;Ctrl + n：历史中的下一条命令&lt;/li&gt;
&lt;li&gt;Alt + .：使用上一条命令的最后一个参数&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2&gt;控制命令&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Ctrl + l（L）：清屏&lt;/li&gt;
&lt;li&gt;Ctrl + o：执行当前命令，并选择上一条命令&lt;/li&gt;
&lt;li&gt;Ctrl + s：阻止屏幕输出&lt;/li&gt;
&lt;li&gt;Ctrl + q：允许屏幕输出&lt;/li&gt;
&lt;li&gt;Ctrl + c：终止命令&lt;/li&gt;
&lt;li&gt;Ctrl + z：挂起命令&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Bang (!) 命令&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;!!：执行上一条命令&lt;/li&gt;
&lt;li&gt;!blah：执行最近的以 blah 开头的命令，如 !ls&lt;/li&gt;
&lt;li&gt;!blah:p：仅打印输出，而不执行&lt;/li&gt;
&lt;li&gt;!$：上一条命令的最后一个参数，与 Alt + . 相同&lt;/li&gt;
&lt;li&gt;!*：上一条命令的所有参数&lt;/li&gt;
&lt;li&gt;^blah：删除上一条命令中的 blah&lt;/li&gt;
&lt;li&gt;^blah^foo：将上一条命令中的 blah 替换为 foo&lt;/li&gt;
&lt;li&gt;^blah^foo^：将上一条命令中所有的 blah 都替换为 foo&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】[让你提升命令行效率的 Bash 快捷键 &lt;a href=&quot;https://linuxtoy.org/archives/bash-shortcuts.html&quot;&gt;完整版] · LinuxTOY&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>磁盘DISK速率查看</title><link>https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/disk-io%E9%80%9F%E7%8E%87%E6%9F%A5%E7%9C%8B/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/disk-io%E9%80%9F%E7%8E%87%E6%9F%A5%E7%9C%8B/</guid><pubDate>Tue, 20 Dec 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;磁盘DISK速率查看&lt;/h1&gt;
&lt;h2&gt;1、安装软件&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get install iotop
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;2、开启另一个终端窗口，使用cp命令复制一个大文件&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;cp -R xx  xx2   # 递归复制文件夹到
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;3、 查看iotop (sometimes: sudo)&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;./DISK%20IO%E9%80%9F%E7%8E%87%E6%9F%A5%E7%9C%8B.assets/clip_image001.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】&lt;a href=&quot;https://huaweicloud.csdn.net/635644b4d3efff3090b5cf3a.html&quot;&gt;在linux终端显示cp命令复制文件时的速度_linux_叫我蔡大叔-华为云开发者联盟 (csdn.net)&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>地震数据转换</title><link>https://tuoyuangui.github.io/website/posts/typora/seismicunix/%E5%9C%B0%E9%9C%87%E6%95%B0%E6%8D%AE%E8%BD%AC%E6%8D%A2/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/seismicunix/%E5%9C%B0%E9%9C%87%E6%95%B0%E6%8D%AE%E8%BD%AC%E6%8D%A2/</guid><pubDate>Sun, 27 Nov 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;地震数据转换&lt;/h1&gt;
&lt;h2&gt;1、切除数据&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;./%E5%9C%B0%E9%9C%87%E6%95%B0%E6%8D%AE%E8%BD%AC%E6%8D%A2.assets/image-20240528195008636.png&quot; alt=&quot;image-20240528195008636&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;2、 SU转segy&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;./%E5%9C%B0%E9%9C%87%E6%95%B0%E6%8D%AE%E8%BD%AC%E6%8D%A2.assets/image-20240528195034758.png&quot; alt=&quot;image-20240528195034758&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;3、 数据说明&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;segy、su、dat数据说明：&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;（1）3200字节卷头说明+400字节卷头信息&lt;/p&gt;
&lt;p&gt;（2）每道240道头信息+地震记录&lt;/p&gt;
&lt;p&gt;（3）Segy数据含（1）、（2）部分；su数据只含（2）部分；dat数据只含地震记录&lt;/p&gt;
&lt;p&gt;（4）大头高位：endian=1 SGI SUN IBM Motorola；小头低位：endian=0 Intel Dec&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;suedit&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;（1）   suedit xx.su 查看su信息&lt;/p&gt;
&lt;p&gt;（2）   按回车 查看下一道&lt;/p&gt;
&lt;p&gt;（3）   直接输入道数按回车也可以查看&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Matlab 常用读写命令</title><link>https://tuoyuangui.github.io/website/posts/typora/matlab/%E5%B8%B8%E7%94%A8%E8%AF%BB%E5%86%99%E5%91%BD%E4%BB%A4/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/matlab/%E5%B8%B8%E7%94%A8%E8%AF%BB%E5%86%99%E5%91%BD%E4%BB%A4/</guid><pubDate>Fri, 11 Nov 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Matlab 常用读写命令&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;%% read the 2-binary data
function data=read_bin_file(filename, num)
     fp = fopen(filename,&apos;rb&apos;);
     data = fread(fp,num,&quot;float&quot;);
    fclose(fp);
end

%% Ricker wavelet
function [wave]=ricker(fm, t, st,amp)
    wave = amp.*(1-2.*(pi.*fm.*(t-st)).^2).*exp(-(pi.*fm.*(t-st)).^2);
end

function [winer]= wiener(wave1f, wave2f)
    amp = real(wave2f).*real(wave2f)+imag(wave2f).*imag(wave2f);
%     amp = amp+ max(amp)*0.01;
    winerreal =  real(wave1f).*real(wave2f)+imag(wave1f).*imag(wave2f);
    winerimag =  imag(wave1f).*real(wave2f)-real(wave1f).*imag(wave2f);
    winerimag = winerimag./amp;
    winerreal = winerreal./amp;
    winer = winerreal + 1i*winerimag;
end

%% convert the .mat to .rsf
clear;clc;
maindir = uigetdir(&quot;choose a folder!&quot;);
matfiles = dir(fullfile(maindir));
LengthFiles = length(matfiles);

for i=3:LengthFiles   % note : change with the depth of folder
    name=matfiles(i).name;
    folder=matfiles(i).folder;
    data = importdata([folder,&apos;/&apos;,name]);
    data(data==data(1,1)) = 1500.0;
    rsfname = [folder,&apos;/rsf/&apos;];
    rsfnamedata = [rsfname,&apos;/data/&apos;];
    mkdir(rsfname); mkdir(rsfnamedata);
    fp = fopen([rsfnamedata,name(1:end-4),&apos;.rsf@&apos;],&quot;wb&quot;);
    fwrite(fp,data,&quot;float&quot;);
    fclose(fp);
    strings = [&apos;n1=201 n2=301 d1=10 d2=10 o1=0 o2=0 data_format=native_float in=./data/&apos;,name(1:end-4),&apos;.rsf@&apos;]; % change with the paramaters
    fp2 = fopen([rsfname,name(1:end-4),&apos;.rsf&apos;],&quot;w&quot;);
    fprintf(fp2,strings);
    fclose(fp2);
end
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>MPI 并行指南</title><link>https://tuoyuangui.github.io/website/posts/typora/%E6%8C%87%E5%8D%97/mpi%E5%B9%B6%E8%A1%8C%E6%8C%87%E5%8D%97/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E6%8C%87%E5%8D%97/mpi%E5%B9%B6%E8%A1%8C%E6%8C%87%E5%8D%97/</guid><pubDate>Tue, 01 Nov 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;MPI 并行指南&lt;/h1&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;p&gt;MPI是一个跨平台的通信协议，用于编写并行计算机，支持点对点和广播。MPI是一个信息传递应用程序接口，包括协议和语义说明，他们指明其如何在各种实现中发挥其特性。MPI的目标是高性能，大规模性和可移植性。MPI在今天仍为高性能计算的主要模型。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;MPI 是一个跨语言的通讯协议，用于编写并行计算机。支持点对点和广播。MPI 是一个信息传递应用程序接口，包括协议和和语义说明，他们指明其如何在各种实现中发挥其特性。MPI的目标是高性能，大规模性，和可移植性。MPI 在今天仍为高性能计算的主要模型。&lt;/p&gt;
&lt;p&gt;MPI 可以大概分为两大类：Open MPI 和 MPICH 及其衍生。&lt;/p&gt;
&lt;p&gt;MPICH 实现的比较全面，但是不支持 InfiniBand 这种比较新的硬件和协议。但是它的衍生品例如 Intel MPI 和 MVAPICH 支持比较新的硬件与协议。&lt;/p&gt;
&lt;p&gt;Open MPI 也实现了 MPI 标准，并且应用广泛。它的进程管理比 MPICH 相对比较好。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Open MPI 与 OpenMP 是不同的概念。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;1、Hello world 代码案例&lt;/h2&gt;
&lt;p&gt;让我们来看一下这节课的代码吧，完整的代码在 &lt;a href=&quot;https://github.com/mpitutorial/mpitutorial/tree/gh-pages/tutorials/mpi-hello-world/code/mpi_hello_world.c&quot;&gt;mpi_hello_world.c&lt;/a&gt;。 下面是一些重点内容的摘录。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;mpi.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;

int main(int argc, char** argv) {
    // 初始化 MPI 环境
    MPI_Init(NULL, NULL);

    // 通过调用以下方法来得到所有可以工作的进程数量
    int world_size;
    MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;world_size);

    // 得到当前进程的秩
    int world_rank;
    MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;world_rank);

    // 得到当前进程的名字
    char processor_name[MPI_MAX_PROCESSOR_NAME];
    int name_len;
    MPI_Get_processor_name(processor_name, &amp;amp;name_len);

    // 打印一条带有当前进程名字，秩以及
    // 整个 communicator 的大小的 hello world 消息。
    printf(&quot;Hello world from processor %s, rank %d out of %d processors\n&quot;,
           processor_name, world_rank, world_size);

    // 释放 MPI 的一些资源
    MPI_Finalize();
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你应该已经注意到搭建一个 MPI 程序的第一步是引入 &lt;code&gt;#include &amp;lt;mpi.h&amp;gt;&lt;/code&gt; 这个头文件。然后 MPI 环境必须以以下代码来初始化：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;MPI_Init(int* argc, char*** argv)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在 &lt;code&gt;MPI_Init&lt;/code&gt; 的过程中，所有 MPI 的全局变量或者内部变量都会被创建。举例来说，一个通讯器 communicator 会根据所有可用的进程被创建出来（进程是我们通过 mpi 运行时的参数指定的），然后每个进程会被分配独一无二的秩 rank。当前来说，&lt;code&gt;MPI_Init&lt;/code&gt; 接受的两个参数是没有用处的，不过参数的位置保留着，可能以后的实现会需要用到。&lt;/p&gt;
&lt;p&gt;在 &lt;code&gt;MPI_Init&lt;/code&gt; 之后，有两个主要的函数被调用到了。这两个函数是几乎所有 MPI 程序都会用到的。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;MPI_Comm_size(
    MPI_Comm communicator,
    int* size)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;MPI_Comm_size&lt;/code&gt; 会返回 communicator 的大小，也就是 communicator 中可用的进程数量。在我们的例子中，&lt;code&gt;MPI_COMM_WORLD&lt;/code&gt;（这个 communicator 是 MPI 帮我们生成的）这个变量包含了当前 MPI 任务中所有的进程，因此在我们的代码里的这个调用会返回所有的可用的进程数目。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;MPI_Comm_rank( MPI_Comm communicator, int* rank)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;MPI_Comm_rank&lt;/code&gt; 这个函数会返回 communicator 中当前进程的 rank。 communicator 中每个进程会以此得到一个从0开始递增的数字作为 rank 值。rank 值主要是用来指定发送或者接受信息时对应的进程。&lt;/p&gt;
&lt;p&gt;我们代码中使用到的一个不太常见的方法是：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;MPI_Get_processor_name( char* name, int* name_length)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;MPI_Get_processor_name&lt;/code&gt; 会得到当前进程实际跑的时候所在的处理器名字。 代码中最后一个调用是：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;MPI_Finalize&lt;/code&gt; 是用来清理 MPI 环境的。这个调用之后就没有 MPI 函数可以被调用了。&lt;/p&gt;
&lt;h2&gt;2、运行 MPI hello world 程序&lt;/h2&gt;
&lt;p&gt;现在查看以下代码文件以及代码所在的文件夹，你会看到一个 makefile。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; git clone https://github.com/mpitutorial/mpitutorial
&amp;gt;&amp;gt;&amp;gt; cd mpitutorial/tutorials/mpi-hello-world/code
&amp;gt;&amp;gt;&amp;gt; cat makefile
EXECS=mpi_hello_world
MPICC?=mpicc

all: ${EXECS}

mpi_hello_world: mpi_hello_world.c
    ${MPICC} -o mpi_hello_world mpi_hello_world.c

clean:
    rm ${EXECS}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我的 makefile 会去找 MPICC 这个环境变量。如果你把 MPICH2 装在了本地文件夹里面而不是全局 PATH 下面, 手动设置一下 MPICC 这个环境变量，把它指向你的 mpicc 二进制程序。mpicc 二进制程序其实只是对 gcc 做了一层封装，使得编译和链接所有的 MPI 程序更方便。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; export MPICC=/home/kendall/bin/mpicc
&amp;gt;&amp;gt;&amp;gt; make
/home/kendall/bin/mpicc -o mpi_hello_world mpi_hello_world.c
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;当你的程序编译好之后，它就可以被执行了。不过执行之前你也许会需要一些额外配置。比如如果你想要在好几个节点的集群上面跑这个 MPI 程序的话，你需要配置一个 host 文件（不是 /etc/hosts）。如果你在笔记本或者单机上运行的话，可以跳过下面这一段。&lt;/p&gt;
&lt;p&gt;需要配置的 host 文件会包含你想要运行的所有节点的名称。为了运行方便，你需要确认一下所有这些节点之间能通过 SSH 通信，并且需要根据&lt;a href=&quot;http://www.eng.cam.ac.uk/help/jpmg/ssh/authorized_keys_howto.html&quot;&gt;设置认证文件这个教程&lt;/a&gt;配置不需要密码的 SSH 访问。 我的 host 文件看起来像这样：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; cat host_file
cetus1
cetus2
cetus3
cetus4
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;为了用我提供的脚本来运行这个程序，你应该设置一个叫 MPI_HOSTS 的环境变量，把它指向 host 文件所在的位置。我的脚本会自动把这个 host 文件的配置项加到 MPI 启动命令里。如果单机跑的话就不用设置这个环境变量。另外如果你的 MPI 没有装到全局环境的话，你还需要指定 MPIRUN 这个环境变量指向你的 mpirun 二进制程序。&lt;/p&gt;
&lt;p&gt;准备就绪之后你就可以使用这个项目的我提供的 python 脚本来执行程序。脚本在 &lt;em&gt;tutorials&lt;/em&gt; 目录下面，这个脚本可以用来跑我们这个教程里面提到的所有程序（而且它会帮你先编译一下程序）。你可以在 mpitutorial 这个文件夹的根目录下执行以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; export MPIRUN=/home/kendall/bin/mpirun
&amp;gt;&amp;gt;&amp;gt; export MPI_HOSTS=host_file
&amp;gt;&amp;gt;&amp;gt; cd tutorials
&amp;gt;&amp;gt;&amp;gt; ./run.py mpi_hello_world
/home/kendall/bin/mpirun -n 4 -f host_file ./mpi_hello_world
Hello world from processor cetus2, rank 1 out of 4 processors
Hello world from processor cetus1, rank 0 out of 4 processors
Hello world from processor cetus4, rank 3 out of 4 processors
Hello world from processor cetus3, rank 2 out of 4 processors
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;跟预想的一样，这个 MPI 程序运行在了我提供的所有节点上面。每个进程都被分配了一个单独的 rank，跟进程的名字一起打印出来了。你可以看到，在我们的输出的结果里，进程之间的打印顺序是任意的，因为我们的代码里并没有涉及到同步的操作。&lt;/p&gt;
&lt;p&gt;我们可以在打印的内容上面那条看到脚本是如何调用 mpirun 这个程序的。mpirun 是 MPI 的实现用来启动任务的一个程序。进程会在 host 文件里指定的所有机器上面生成，MPI 程序就会在所有进程上面运行。我的脚本自定地提供了一个 &lt;em&gt;-n&lt;/em&gt; 参数告诉 MPI 程序我要运行 4 个进程。你可以试着修改脚本来使用更多进程运行 MPI 程序。当心别把你的操作系统玩崩了。:-)&lt;/p&gt;
&lt;p&gt;你可能会问，&lt;em&gt;“我的节点都都是双核的机器，我怎么样可以让 MPI 先在每个节点上的每个核上生成进程，再去其他的机器？”&lt;/em&gt; 其实方案很简单。修改一下你的 host 文件，在每个节点名字的后面加一个冒号和每个处理器有的核数就行了。比如，我在 host 文件里指定我的每个节点有2个核。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; cat host_file
cetus1:2
cetus2:2
cetus3:2
cetus4:2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;当我再次运行我的脚本，&lt;em&gt;哇!&lt;/em&gt;，MPI 任务只在我的两个节点上生成了4个进程。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; ./run.py mpi_hello_world
/home/kendall/bin/mpirun -n 4 -f host_file ./mpi_hello_world
Hello world from processor cetus1, rank 0 out of 4 processors
Hello world from processor cetus2, rank 2 out of 4 processors
Hello world from processor cetus2, rank 3 out of 4 processors
Hello world from processor cetus1, rank 1 out of 4 processors
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;3、进阶MPI编程&lt;/h2&gt;
&lt;h3&gt;3.1、MPI初始化&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;#include &quot;mpi.h&quot;
#include &amp;lt;stdio.h&amp;gt;
int main(int argc, char* argv[])
{
//=========================================================
//  MPI Indix
//  =======================================================
    int myid,numprocs,namelen;
    char processor_name[MPI_MAX_PROCESSOR_NAME];
    // Basic MPI
    MPI_Init(&amp;amp;argc,&amp;amp;argv);
    MPI_Comm_rank(MPI_COMM_WORLD,&amp;amp;myid);               // rank id
    MPI_Comm_size(MPI_COMM_WORLD,&amp;amp;numprocs);           // total rank
    MPI_Get_processor_name(processor_name,&amp;amp;namelen);   // get the meachine name
    if(myid==0)
        printf(&quot;Number of MPI thread is %d\n&quot;,numprocs);
    MPI_Finalize();
}

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在这段代码里，有几句比较重要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;MPI_Init(NULL, NULL)&lt;/code&gt; 在这一句之前，所有的进程都是完全相互独立的。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MPI_COMM_WORLD&lt;/code&gt; 是预定义好的通信器 (Communicator)，通信器是一个包含了进程的集合，同一个通信器里面的进程可以相互通信。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;world_rank)&lt;/code&gt; 获取每个进程的在通信器里面的 Rank，也就是编号&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MPI_Finalize()&lt;/code&gt; 这一句释放掉所有被 MPI 占用的资源。&lt;/li&gt;
&lt;li&gt;实际上 MPICC 的后端还是 GCC。MPICC 只是添加了动态链接库。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3.2、进程间通讯&lt;/h3&gt;
&lt;h4&gt;3.2.1、P2P 接收与发送&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;MPI_Send&lt;/code&gt; 用来发送信息&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;MPI_Recv&lt;/code&gt; 用来接收信息&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;int MPI_Send(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm);
int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status);
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;参数说明&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;buf&lt;/code&gt; 内存地址，用于接收/发送消息的存储。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;count&lt;/code&gt; 传送消息的数量&lt;/li&gt;
&lt;li&gt;&lt;code&gt;datatype&lt;/code&gt; 传输数据类型，除了 C 自带的类型以外，MPI 还定义了一些类型&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dest&lt;/code&gt; 接收节点&lt;/li&gt;
&lt;li&gt;&lt;code&gt;source&lt;/code&gt; 发送节点&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tag&lt;/code&gt; 信息的标签&lt;/li&gt;
&lt;li&gt;&lt;code&gt;comm&lt;/code&gt; 通信器&lt;/li&gt;
&lt;li&gt;&lt;code&gt;status&lt;/code&gt; 接收消息的状态&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;传递信息可以看作是一个 Message Envelope.每个 Send 要确保有对应的 Recv。除此以外，还要注意死锁问题，每个 Recv 都能即使获取到发送的东西。&lt;/p&gt;
&lt;p&gt;值得一提的是，接收消息的长度跟发送消息的长度是可以不同的，但是最好保证接收消息的长度 &lt;strong&gt;大于等于&lt;/strong&gt; 发送的长度，以免溢出。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;mpi.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;

int main(int argc, char *argv[]) {
    MPI_Init(&amp;amp;argc, &amp;amp;argv);
    int numP, myId;
    MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;myId);
    MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;numP);

    if(numP % 2 != 0) {
        if(!myId) {
            printf(&quot;ERROR: the number of ping-pong processors must be even number!\n&quot;);
        }
        MPI_Abort(MPI_COMM_WORLD, EXIT_FAILURE);
    }

    int partner_id;
    int odd = myId &amp;amp; 1;

    if(odd) {
        partner_id = myId - 1;
    } else {
        partner_id = myId + 1;
    }

    int a, b;
    if(odd == 0) {
        a = -1;
        printf(&quot;Process %d sends token %d to process %d\n&quot;, myId, a, partner_id);
        MPI_Send(&amp;amp;a, 1, MPI_INT, partner_id, 0, MPI_COMM_WORLD);

        MPI_Recv(&amp;amp;b, 1, MPI_INT, partner_id, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
        printf(&quot;Process %d receives token %d from process %d\n&quot;, myId, b, partner_id);
    } else {
        a = 1;
        MPI_Recv(&amp;amp;b, 1, MPI_INT, partner_id, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
        printf(&quot;Process %d receives token %d from process %d\n&quot;, myId, b, partner_id);

        printf(&quot;Process %d sends token %d to process %d\n&quot;, myId, a, partner_id);
        MPI_Send(&amp;amp;a, 1, MPI_INT, partner_id, 0, MPI_COMM_WORLD);
    }

    MPI_Finalize();
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Result&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Process 2 sends token -1 to process 3
Process 0 sends token -1 to process 1
Process 1 receives token -1 from process 0
Process 1 sends token 1 to process 0
Process 0 receives token 1 from process 1
Process 3 receives token -l from process 2
Process 3 sends token 1 to process 2
Process 2 receives token 1 from process 3
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;3.2.2 阻塞通信与非阻塞通信&lt;/h4&gt;
&lt;p&gt;刚才说的是阻塞通信，在发送出去/接收到之前，程序会停止运行。相对的，也存在非阻塞通信。如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;MPI_ISend&lt;/code&gt; 用来发送信息&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;MPI_IRecv&lt;/code&gt; 用来接收信息&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;int MPI_ISend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request);
int MPI_IRecv(void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Request *request);
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;request&lt;/code&gt; 用于标记通信任务。在使用非阻塞通信传来的数据之前，需要使用 &lt;code&gt;MPI_Wait&lt;/code&gt; 确认是否数据已经传入缓冲区。&lt;/p&gt;
&lt;p&gt;非阻塞通信还有如下的控制与测试函数：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;MPI_Cancel&lt;/code&gt; 用于取消非阻塞通信。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MPI_Test&lt;/code&gt; 用于测试非阻塞通信是否已经结束。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MPI_Wait&lt;/code&gt; 用于等待非阻塞通信数据。&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;mpi.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;

int main(int argc, char *argv[]) {
    MPI_Init(&amp;amp;argc, &amp;amp;argv);
    int numP, myId;
    MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;myId);
    MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;numP);

    int next_id = (myId + 1) % numP, prev_id = (myId - 1 + numP) % numP;
    MPI_Request rq_send, rq_recv;

    int a = 1, b;
    MPI_Isend(&amp;amp;a, 1, MPI_INT, next_id, 0, MPI_COMM_WORLD, &amp;amp;rq_send);
    MPI_Irecv(&amp;amp;b, 1, MPI_INT, prev_id, 0, MPI_COMM_WORLD, &amp;amp;rq_recv);
    MPI_Wait(&amp;amp;rq_recv, MPI_STATUS_IGNORE);
    printf(&quot;%d receive token %d from %d\n&quot; myId, b, prev_id);
    MPI_Barrier(MPI_COMM_WORLD);

    a = -1;
    MPI_Isend(&amp;amp;a, 1, MPI_INT, prev_id, 0, MPI_COMM_WORLD, &amp;amp;rq_send);
    MPI_Irecv(&amp;amp;b, 1, MPI_INT, next_id, 0, MPI_COMM_WORLD, &amp;amp;rq_recv);
    MPI_Wait(&amp;amp;rq_recv, MPI_STATUS_IGNORE);
    printf(&quot;%d receive token %d from %d\n&quot; myId, b, next_id);
    MPI_Barrier(MPI_COMM_WORLD);

    MPI_Finalize();
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;结果&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;5 receive token 1 from 4
6 receive token 1 from 5
4 receive token 1 from 3
1 receive token 1 from 0
0 receive token 1 from 6
2 receive token 1 from 1
3 receive token 1 from 2
1 receive token -1 from 2
4 receive token -1 from 5
0 receive token -1 from 1
6 receive token -1 from 0
5 receive token -1 from 6
3 receive token -1 from 4
2 receive token -1 from 3
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;3.2.3 聚合通信 (Collective Communication)&lt;/h4&gt;
&lt;p&gt;除了点对点通信之外，MPI 还有其他的通信方式如图所示。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./MPI%E5%B9%B6%E8%A1%8C%E6%8C%87%E5%8D%97.assets/collective-comm.png&quot; alt=&quot;Image 2&quot; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;mpi.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;

int main(int argc, char *argv[]) {
    MPI_Init(&amp;amp;argc, &amp;amp;argv);
    int numP, myId;
    MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;myId);
    MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;numP);

    int n = atoi(argv[1])
    MPI_Barrier(MPI_COMM_WORLD);

    double start = MPI_Wtime();

    int myCount = 0;
    int total;
    int prime;

    for(int i = 2 + myId; i &amp;lt;= n; i += numP) {
        prime = 1;
        for(int j = 2; j &amp;lt; i; ++j) {
            if(i % j == 0) {
                prime = 0;
                break;
            }
        }
        myCount += prime;
    }

    MPI_Reduce(&amp;amp;myCount, &amp;amp;total, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD);

    double end = MPI_Wtime();
    if(!myId) {
        printf(&quot;%d primes between 1 and %d\n&quot;, total, n);
        printf(&quot;Time with %d processes: %.3lf seconds\n&quot;, numP, end - start);
    }
    MPI_Finalize();
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;MPI_Reduce 中有预定义好的 MPI_Ops 例如 MPI_MAX, MPI_SUM 等等。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mpirun -np 10 ./prime 100000&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;9592 primes between 1 and 100000
Time with 10 processes: 0.265 seconds
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;mpirun -np 1 ./prime 100000&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;9592 primes between 1 and 100000
Time with 1 processes: 1.012 seconds
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;./MPI%E5%B9%B6%E8%A1%8C%E6%8C%87%E5%8D%97.assets/image-20240611154152399.png&quot; alt=&quot;image-20240611154152399&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】 https://mpitutorial.com/tutorials/mpi-hello-world/zh_cn/&lt;/p&gt;
&lt;p&gt;【2】&lt;a href=&quot;https://mpitutorial.com/tutorials/mpi-hello-world/zh_cn/&quot;&gt;MPI Hello World · MPI Tutorial&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;【3】&lt;a href=&quot;https://cndaqiang.github.io/2019/02/27/mpi-fortran/&quot;&gt;MPI编程入门(Fortran) (cndaqiang.github.io)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;【4】&lt;a href=&quot;https://www.cnblogs.com/zhangyazhou/p/13376262.html&quot;&gt;cnblogs.com/zhangyazhou/p/13376262.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;【5】https://jinbridger.github.io/docs/hpc/openmpi-programming-101/&lt;/p&gt;
</content:encoded></item><item><title>Fortran 命令行参数</title><link>https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/fortran%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%8F%82%E6%95%B0/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/fortran%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%8F%82%E6%95%B0/</guid><pubDate>Sat, 29 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Fortran 命令行参数&lt;/h1&gt;
&lt;h2&gt;1、实例&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;CALL get_command_argument(1,FN1)
CALL get_command_argument(2,FN3)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;用上面两行代替下面：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;!FN1=1201-201-1.rsf@&apos;
!FN3=&apos;./PML/sh0t_pml-1.rsf@&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;注意此处FN1，FN3 为字符串&lt;/p&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】&lt;a href=&quot;https://blog.sciencenet.cn/blog-51026-622520.html&quot;&gt;科学网—【Fortran】Fortran程序带参数运行方法总结 - 郑晖的博文 (sciencenet.cn)&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>环境变量和动态库、静态库配置</title><link>https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/c%E8%AF%AD%E8%A8%80%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E5%8A%A8%E6%80%81%E5%BA%93%E9%9D%99%E6%80%81%E5%BA%93%E9%85%8D%E7%BD%AE/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/linux%E7%B3%BB%E7%BB%9F/c%E8%AF%AD%E8%A8%80%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E5%8A%A8%E6%80%81%E5%BA%93%E9%9D%99%E6%80%81%E5%BA%93%E9%85%8D%E7%BD%AE/</guid><pubDate>Wed, 05 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;环境变量和动态库、静态库配置&lt;/h1&gt;
&lt;h2&gt;1、环境变量&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;配置文件中添加环境变量&lt;/strong&gt;
对所有用户有效修改/etc/profile  /etc/bash.bashrc
对个人有效则修改~/.bashrc&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;在PATH中找到&lt;strong&gt;可执行文件程序的路径&lt;/strong&gt;
export PATH =$PATH:$HOME/bin&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;2、C语言默认搜索路径&lt;/h2&gt;
&lt;p&gt;gcc找到头文件的路径&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    C_INCLUDE_PATH=/usr/include/libxml2:/MyLib
    export C_INCLUDE_PATH
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;g++找到头文件的路径&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/include/libxml2:/MyLib
    export CPLUS_INCLUDE_PATH
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;找到动态链接库的路径&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/MyLib
    export LD_LIBRARY_PATH
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;找到静态库的路径&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    LIBRARY_PATH=$LIBRARY_PATH:/MyLib
    export LIBRARY_PATH
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;3、gcc命令中手动设置搜索路径&lt;/h2&gt;
&lt;p&gt;添加头文件搜索路径&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; gcc foo.c -I /home/xiaowp/include -o foo
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;添加动态库搜索路径（默认）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gcc foo.c -L /home/xiaowp/lib -lfoo -o foo
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;添加静态库搜索路径&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gcc foo.c -L /home/xiaowp/lib -static -lfoo -o foo
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】https://blog.csdn.net/sunxiaopengsun/article/details/74787966&lt;/p&gt;
</content:encoded></item><item><title>Seismic Unix 常用命令</title><link>https://tuoyuangui.github.io/website/posts/typora/seismicunix/%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/seismicunix/%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/</guid><pubDate>Wed, 31 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Seismic Unix 常用命令&lt;/h1&gt;
&lt;h2&gt;1、.dat 转换为 .su&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;suaddhead&amp;lt;seis_wave.dat  ns=100 &amp;gt;seis.su   （ns,n1，nt为每一道的采样数）
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;2、查看su数据中的道数和采样数&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;surange&amp;lt; seis.su   tracl-道数；offset-偏移距；ns-纵向采样点；dt-单位us
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;3、wigb绘制su数据图像并保存为eps文件&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;supswigb &amp;lt; seis.su d1=0.002 title=&apos;original DATA&apos; label1=&apos;sec&apos; label2=&apos;trace number&apos; &amp;gt;SEIS.eps            （d1, 采样间隔）
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;4、segy转换为su&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;segyread tape=&apos;Line_001.sgy&apos; verbose=0 endian=0&amp;gt;data.su
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;5、su绘图&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;suximage &amp;lt;2015.su cmap=rgb1 title=&apos;original data&apos; legend=1 label1=&quot;seconds&quot; cmap=rgb1 &amp;amp;
sugain &amp;lt;2015.su|suximage cmap=rgb1 &amp;amp;       （数据增益）
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;6、平滑模型&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;smooth2 &amp;lt; 501-501.dat n1= n2= r1= r2= &amp;gt;sm.dat
n1纵采样点，r1 r2平滑度，一般 为5 or 10
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;7、成像后laplas滤波:&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;suaddhead &amp;lt; image.dat n1=151&amp;gt;xx.su
sukfrac &amp;lt;xx.su power=2 phasefac=-1 &amp;gt;xx.bin
sustrip &amp;lt;xx.bin &amp;gt; image-lap.dat   n1纵向采样点
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;7、su加噪音：&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;suaddhead &amp;lt;shot.dat n1=4000 &amp;gt;aa.su
suaddnoise &amp;lt;aa.su &amp;gt;shot.su sn=10 noise=gauss
sustrip &amp;lt;shot.su &amp;gt;shot_new.dat
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;8、suwind取窗&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;suwind &amp;lt;vel.su key=tracl min=1 max=140 &amp;gt;vel_1.su  key为取窗的关键字
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>CMake 基本用法与简单介绍</title><link>https://tuoyuangui.github.io/website/posts/typora/%E7%BC%96%E8%AF%91%E8%B0%83%E8%AF%95/cmake%E7%9A%84%E5%9F%BA%E6%9C%AC%E7%94%A8%E6%B3%95/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E7%BC%96%E8%AF%91%E8%B0%83%E8%AF%95/cmake%E7%9A%84%E5%9F%BA%E6%9C%AC%E7%94%A8%E6%B3%95/</guid><pubDate>Wed, 03 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;CMake 基本用法与简单介绍&lt;/h1&gt;
&lt;h2&gt;1、 基本介绍&lt;/h2&gt;
&lt;p&gt;CMake 是一个项目构建工具，并且是跨平台的。关于项目构建我们所熟知的还有Makefile（通过 make 命令进行项目的构建），大多是IDE软件都集成了make，比如：VS 的 nmake、linux 下的 GNU make、Qt 的 qmake等，如果自己动手写 makefile，会发现，makefile 通常依赖于当前的编译平台，而且编写 makefile 的工作量比较大，解决依赖关系时也容易出错。&lt;/p&gt;
&lt;p&gt;而 CMake 恰好能解决上述问题， 其允许开发者指定整个工程的编译流程，在根据编译平台，&lt;code&gt;自动生成本地化的Makefile和工程文件&lt;/code&gt;，最后用户只需&lt;code&gt;make&lt;/code&gt;编译即可，所以可以把CMake看成一款自动生成 Makefile的工具，其编译流程如下图：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./CMake.assets/image-20230309130644912.png&quot; alt=&quot;Image 1: image-20230309130644912&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;蓝色虚线表示使用&lt;code&gt;makefile&lt;/code&gt;构建项目的过程&lt;/li&gt;
&lt;li&gt;红色实线表示使用&lt;code&gt;cmake&lt;/code&gt;构建项目的过程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;介绍完CMake的作用之后，再来总结一下它的优点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;跨平台&lt;/li&gt;
&lt;li&gt;能够管理大型项目&lt;/li&gt;
&lt;li&gt;简化编译构建过程和编译过程&lt;/li&gt;
&lt;li&gt;可扩展：可以为 cmake 编写特定功能的模块，扩充 cmake 功能&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;2. CMake的使用&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;CMake&lt;/code&gt;支持大写、小写、混合大小写的命令。如果在编写&lt;code&gt;CMakeLists.txt&lt;/code&gt;文件时使用的工具有对应的命令提示，那么大小写随缘即可，不要太过在意。&lt;/p&gt;
&lt;h3&gt;2.1 注释&lt;/h3&gt;
&lt;h4&gt;2.1.1 注释行&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;CMake&lt;/code&gt; 使用 &lt;code&gt;#&lt;/code&gt; 进行&lt;code&gt;行注释&lt;/code&gt;，可以放在任何位置。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.0.0)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;2.1.2 注释块&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;CMake&lt;/code&gt; 使用 &lt;code&gt;#[[ ]]&lt;/code&gt; 形式进行&lt;code&gt;块注释&lt;/code&gt;。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.0.0)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;2.1 只有源文件&lt;/h2&gt;
&lt;h3&gt;2.1.1 共处一室&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;准备工作，为了方便测试，在我本地电脑准备了这么几个测试文件&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;add.c&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &quot;head.h&quot;

int add(int a, int b)
{
    return a+b;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;sub.c&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &quot;head.h&quot;


int subtract(int a, int b)
{
    return a-b;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;mult.c&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &quot;head.h&quot;

int multiply(int a, int b)
{
    return a*b;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;div.c&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &quot;head.h&quot;

double divide(int a, int b)
{
    return (double)a/b;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;head.h&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#ifndef _HEAD_H
#define _HEAD_H

int add(int a, int b);

int subtract(int a, int b);

int multiply(int a, int b);

double divide(int a, int b);
#endif
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;main.c&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &quot;head.h&quot;

int main()
{
    int a = 20;
    int b = 12;
    printf(&quot;a = %d, b = %d\n&quot;, a, b);
    printf(&quot;a + b = %d\n&quot;, add(a, b));
    printf(&quot;a - b = %d\n&quot;, subtract(a, b));
    printf(&quot;a * b = %d\n&quot;, multiply(a, b));
    printf(&quot;a / b = %f\n&quot;, divide(a, b));
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;上述文件的目录结构如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ tree
.
├── add.c
├── div.c
├── head.h
├── main.c
├── mult.c
└── sub.c
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;添加 &lt;code&gt;CMakeLists.txt&lt;/code&gt; 文件&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在上述源文件所在目录下添加一个新文件 CMakeLists.txt，文件内容如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.0)
project(CALC)
add_executable(app add.c div.c main.c mult.c sub.c)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;接下来依次介绍一下在 CMakeLists.txt 文件中添加的三个命令:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;cmake_minimum_required&lt;/code&gt;：指定使用的 cmake 的最低版本&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;可选，非必须，如果不加可能会有警告&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;project&lt;/code&gt;：定义工程名称，并可指定工程的版本、工程描述、web主页地址、支持的语言（默认情况支持所有语言），如果不需要这些都是可以忽略的，只需要指定出工程名字即可。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;project(&amp;lt;PROJECT-NAME&amp;gt; [&amp;lt;language-name&amp;gt;...])
project(&amp;lt;PROJECT-NAME&amp;gt;
       [VERSION &amp;lt;major&amp;gt;[.&amp;lt;minor&amp;gt;[.&amp;lt;patch&amp;gt;[.&amp;lt;tweak&amp;gt;]]]]
       [DESCRIPTION &amp;lt;project-description-string&amp;gt;]
       [HOMEPAGE_URL &amp;lt;url-string&amp;gt;]
       [LANGUAGES &amp;lt;language-name&amp;gt;...])
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;add_executable&lt;/code&gt;：定义工程会生成一个可执行程序&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;add_executable(可执行程序名 源文件名称)
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;这里的可执行程序名和&lt;code&gt;project&lt;/code&gt;中的项目名没有任何关系&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;源文件名可以是一个也可以是多个，如有多个可用空格或&lt;code&gt;;&lt;/code&gt;间隔&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;add_executable(app add.c div.c main.c mult.c sub.c)

add_executable(app add.c;div.c;main.c;mult.c;sub.c)
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;执行&lt;code&gt;CMake&lt;/code&gt; 命令&lt;/p&gt;
&lt;p&gt;万事俱备只欠东风，将 CMakeLists.txt 文件编辑好之后，就可以执行 &lt;code&gt;cmake&lt;/code&gt;命令了。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# cmake 命令原型
$ cmake CMakeLists.txt文件所在路径
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;$ tree
.
├── add.c
├── CMakeLists.txt
├── div.c
├── head.h
├── main.c
├── mult.c
└── sub.c

0 directories, 7 files
robin@OS:~/Linux/3Day/calc$ cmake .
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;当执行&lt;code&gt;cmake&lt;/code&gt;命令之后，CMakeLists.txt 中的命令就会被执行，所以一定要注意给&lt;code&gt;cmake&lt;/code&gt; 命令指定路径的时候一定不能出错。&lt;/p&gt;
&lt;p&gt;执行命令之后，看一下源文件所在目录中是否多了一些文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ tree -L 1
.
├── add.c
├── CMakeCache.txt         # new add file
├── CMakeFiles             # new add dir
├── cmake_install.cmake    # new add file
├── CMakeLists.txt
├── div.c
├── head.h
├── main.c
├── Makefile               # new add file
├── mult.c
└── sub.c
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我们可以看到在对应的目录下生成了一个&lt;code&gt;makefile&lt;/code&gt;文件，此时再执行&lt;code&gt;make&lt;/code&gt;命令，就可以对项目进行构建得到所需的可执行程序了。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ make
Scanning dependencies of target app
[ 16%] Building C object CMakeFiles/app.dir/add.c.o
[ 33%] Building C object CMakeFiles/app.dir/div.c.o
[ 50%] Building C object CMakeFiles/app.dir/main.c.o
[ 66%] Building C object CMakeFiles/app.dir/mult.c.o
[ 83%] Building C object CMakeFiles/app.dir/sub.c.o
[100%] Linking C executable app
[100%] Built target app

# 查看可执行程序是否已经生成
$ tree -L 1
.
├── add.c
├── app					# 生成的可执行程序
├── CMakeCache.txt
├── CMakeFiles
├── cmake_install.cmake
├── CMakeLists.txt
├── div.c
├── head.h
├── main.c
├── Makefile
├── mult.c
└── sub.c
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最终可执行程序&lt;code&gt;app&lt;/code&gt;就被编译出来了（这个名字是在&lt;code&gt;CMakeLists.txt&lt;/code&gt;中指定的）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;2.1.2 VIP 包房&lt;/h3&gt;
&lt;p&gt;通过上面的例子可以看出，如果在&lt;code&gt;CMakeLists.txt&lt;/code&gt;文件所在目录执行了&lt;code&gt;cmake&lt;/code&gt;命令之后就会生成一些目录和文件（&lt;code&gt;包括 makefile 文件&lt;/code&gt;），如果再基于&lt;code&gt;makefile文件&lt;/code&gt;执行&lt;code&gt;make&lt;/code&gt;命令，程序在编译过程中还会生成一些中间文件和一个可执行文件，这样会导致整个项目目录看起来很混乱，不太容易管理和维护，此时我们就可以把生成的这些与项目源码无关的文件统一放到一个对应的目录里边，比如将这个目录命名为&lt;code&gt;build&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ mkdir build
$ cd build
$ cmake ..
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/robin/Linux/build
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;现在&lt;code&gt;cmake&lt;/code&gt;命令是在&lt;code&gt;build&lt;/code&gt;目录中执行的，但是&lt;code&gt;CMakeLists.txt&lt;/code&gt;文件是&lt;code&gt;build&lt;/code&gt;目录的上一级目录中，所以&lt;code&gt;cmake&lt;/code&gt; 命令后指定的路径为&lt;code&gt;..&lt;/code&gt;，即当前目录的上一级目录。&lt;/p&gt;
&lt;p&gt;当命令执行完毕之后，在&lt;code&gt;build&lt;/code&gt;目录中会生成一个&lt;code&gt;makefile&lt;/code&gt;文件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ tree build -L 1
build
├── CMakeCache.txt
├── CMakeFiles
├── cmake_install.cmake
└── Makefile

1 directory, 3 files
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样就可以在&lt;code&gt;build&lt;/code&gt;目录中执行&lt;code&gt;make&lt;/code&gt;命令编译项目，生成的相关文件自然也就被存储到&lt;code&gt;build&lt;/code&gt;目录中了。这样通过&lt;code&gt;cmake&lt;/code&gt;和&lt;code&gt;make&lt;/code&gt;生成的所有文件就全部和项目源文件隔离开了，各回各家，各找各妈。&lt;/p&gt;
&lt;h2&gt;2.2 私人订制&lt;/h2&gt;
&lt;h3&gt;2.2.1 定义变量&lt;/h3&gt;
&lt;p&gt;在上面的例子中一共提供了5个源文件，假设这五个源文件需要反复被使用，每次都直接将它们的名字写出来确实是很麻烦，此时我们就需要定义一个变量，将文件名对应的字符串存储起来，在cmake里定义变量需要使用&lt;code&gt;set&lt;/code&gt;。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SET(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;VAR&lt;/code&gt;：变量名&lt;/li&gt;
&lt;li&gt;&lt;code&gt;VALUE&lt;/code&gt;：变量值&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;set(SRC_LIST add.c;div.c;main.c;mult.c;sub.c)
add_executable(app  ${SRC_LIST})
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2.2.2 指定使用的C++标准&lt;/h3&gt;
&lt;p&gt;在编写C++程序的时候，可能会用到C++11、C++14、C++17、C++20等新特性，那么就需要在编译的时候在编译命令中制定出要使用哪个标准：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ g++ *.cpp -std=c++11 -o app
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;上面的例子中通过参数&lt;code&gt;-std=c++11&lt;/code&gt;指定出要使用c++11标准编译程序，C++标准对应有一宏叫做&lt;code&gt;DCMAKE_CXX_STANDARD&lt;/code&gt;。在CMake中想要指定C++标准有两种方式：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;在 CMakeLists.txt 中通过 set 命令指定&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;set(CMAKE_CXX_STANDARD 11)

set(CMAKE_CXX_STANDARD 14)

set(CMAKE_CXX_STANDARD 17)
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在执行 cmake 命令的时候指定出这个宏的值&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#增加-std=c++11
cmake CMakeLists.txt文件路径 -DCMAKE_CXX_STANDARD=11
#增加-std=c++14
cmake CMakeLists.txt文件路径 -DCMAKE_CXX_STANDARD=14
#增加-std=c++17
cmake CMakeLists.txt文件路径 -DCMAKE_CXX_STANDARD=17
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在上面例子中 CMake 后的路径需要根据实际情况酌情修改。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;2.2.3 指定输出的路径&lt;/h3&gt;
&lt;p&gt;在CMake中指定可执行程序输出的路径，也对应一个宏，叫做&lt;code&gt;EXECUTABLE_OUTPUT_PATH&lt;/code&gt;，它的值还是通过&lt;code&gt;set&lt;/code&gt;命令进行设置:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;set(HOME /home/robin/Linux/Sort)
set(EXECUTABLE_OUTPUT_PATH ${HOME}/bin)
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;第一行：定义一个变量用于存储一个绝对路径&lt;/li&gt;
&lt;li&gt;第二行：将拼接好的路径值设置给&lt;code&gt;EXECUTABLE_OUTPUT_PATH&lt;/code&gt;宏
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;如果这个路径中的子目录不存在，会自动生成，无需自己手动创建&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;由于可执行程序是基于 cmake 命令生成的 makefile 文件然后再执行 make 命令得到的，所以如果此处指定可执行程序生成路径的时候使用的是相对路径 ./xxx/xxx，那么这个路径中的 ./ 对应的就是 makefile 文件所在的那个目录。&lt;/p&gt;
&lt;h2&gt;2.3 搜索文件&lt;/h2&gt;
&lt;p&gt;如果一个项目里边的源文件很多，在编写&lt;code&gt;CMakeLists.txt&lt;/code&gt;文件的时候不可能将项目目录的各个文件一一罗列出来，这样太麻烦也不现实。所以，在CMake中为我们提供了搜索文件的命令，可以使用&lt;code&gt;aux_source_directory&lt;/code&gt;命令或者&lt;code&gt;file&lt;/code&gt;命令。&lt;/p&gt;
&lt;h3&gt;2.3.1 方式1&lt;/h3&gt;
&lt;p&gt;在 CMake 中使用&lt;code&gt;aux_source_directory&lt;/code&gt; 命令可以查找某个路径下的&lt;code&gt;所有源文件&lt;/code&gt;，命令格式为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;aux_source_directory(&amp;lt; dir &amp;gt; &amp;lt; variable &amp;gt;)
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;dir&lt;/code&gt;：要搜索的目录&lt;/li&gt;
&lt;li&gt;&lt;code&gt;variable&lt;/code&gt;：将从&lt;code&gt;dir&lt;/code&gt;目录下搜索到的源文件列表存储到该变量中&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.0)
project(CALC)
include_directories(${PROJECT_SOURCE_DIR}/include)

aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src SRC_LIST)
add_executable(app  ${SRC_LIST})
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2.3.2 方式2&lt;/h3&gt;
&lt;p&gt;如果一个项目里边的源文件很多，在编写&lt;code&gt;CMakeLists.txt&lt;/code&gt;文件的时候不可能将项目目录的各个文件一一罗列出来，这样太麻烦了。所以，在CMake中为我们提供了搜索文件的命令，他就是&lt;code&gt;file（当然，除了搜索以外通过 file 还可以做其他事情）&lt;/code&gt;。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;file(GLOB/GLOB_RECURSE 变量名 要搜索的文件路径和文件类型)
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GLOB&lt;/code&gt;: 将指定目录下搜索到的满足条件的所有文件名生成一个列表，并将其存储到变量中。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GLOB_RECURSE&lt;/code&gt;：递归搜索指定目录，将搜索到的满足条件的文件名生成一个列表，并将其存储到变量中。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;搜索当前目录的src目录下所有的源文件，并存储到变量中&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;file(GLOB MAIN_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
file(GLOB MAIN_HEAD ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h)
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;CMAKE_CURRENT_SOURCE_DIR 宏表示当前访问的 CMakeLists.txt 文件所在的路径。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;关于要搜索的文件路径和类型可加双引号，也可不加:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;file(GLOB MAIN_HEAD &quot;${CMAKE_CURRENT_SOURCE_DIR}/src/*.h&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;2.4 包含头文件&lt;/h2&gt;
&lt;p&gt;在编译项目源文件的时候，很多时候都需要将源文件对应的头文件路径指定出来，这样才能保证在编译过程中编译器能够找到这些头文件，并顺利通过编译。在CMake中设置要包含的目录也很简单，通过一个命令就可以搞定了，他就是&lt;code&gt;include_directories&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;include_directories(headpath)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;举例说明，有源文件若干，其目录结构如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ tree
.
├── build
├── CMakeLists.txt
├── include
│   └── head.h
└── src
    ├── add.cpp
    ├── div.cpp
    ├── main.cpp
    ├── mult.cpp
    └── sub.cpp

3 directories, 7 files
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;CMakeLists.txt&lt;/code&gt;文件内容如下:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.0)
project(CALC)
set(CMAKE_CXX_STANDARD 11)
set(HOME /home/robin/Linux/calc)
set(EXECUTABLE_OUTPUT_PATH ${HOME}/bin/)
include_directories(${PROJECT_SOURCE_DIR}/include)
file(GLOB SRC_LIST ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
add_executable(app  ${SRC_LIST})
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中，第六行指定就是头文件的路径，&lt;code&gt;PROJECT_SOURCE_DIR&lt;/code&gt;宏对应的值就是我们在使用cmake命令时，后面紧跟的目录，一般是工程的根目录。&lt;/p&gt;
&lt;h2&gt;2.5 制作动态库或静态库&lt;/h2&gt;
&lt;p&gt;有些时候我们编写的源代码并不需要将他们编译生成可执行程序，而是生成一些静态库或动态库提供给第三方使用，下面来讲解在cmake中生成这两类库文件的方法。&lt;/p&gt;
&lt;h3&gt;2.5.1 制作静态库&lt;/h3&gt;
&lt;p&gt;在cmake中，如果要制作静态库，需要使用的命令如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;add_library(库名称 STATIC 源文件1 [源文件2] ...)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在Linux中，静态库名字分为三部分：&lt;code&gt;lib&lt;/code&gt;+&lt;code&gt;库名字&lt;/code&gt;+&lt;code&gt;.a&lt;/code&gt;，此处只需要指定出库的名字就可以了，另外两部分在生成该文件的时候会自动填充。&lt;/p&gt;
&lt;p&gt;在Windows中虽然库名和Linux格式不同，但也只需指定出名字即可。&lt;/p&gt;
&lt;p&gt;下面有一个目录，需要将&lt;code&gt;src&lt;/code&gt;目录中的源文件编译成静态库，然后再使用：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.
├── build
├── CMakeLists.txt
├── include           # 头文件目录
│   └── head.h
├── main.cpp          # 用于测试的源文件
└── src               # 源文件目录
    ├── add.cpp
    ├── div.cpp
    ├── mult.cpp
    └── sub.cpp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;根据上面的目录结构，可以这样编写&lt;code&gt;CMakeLists.txt&lt;/code&gt;文件:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.0)
project(CALC)
include_directories(${PROJECT_SOURCE_DIR}/include)
file(GLOB SRC_LIST &quot;${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp&quot;)
add_library(calc STATIC ${SRC_LIST})
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样最终就会生成对应的静态库文件&lt;code&gt;libcalc.a&lt;/code&gt;。&lt;/p&gt;
&lt;h3&gt;2.5.2 制作动态库&lt;/h3&gt;
&lt;p&gt;在cmake中，如果要制作动态库，需要使用的命令如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;add_library(库名称 SHARED 源文件1 [源文件2] ...)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在Linux中，动态库名字分为三部分：&lt;code&gt;lib&lt;/code&gt;+&lt;code&gt;库名字&lt;/code&gt;+&lt;code&gt;.so&lt;/code&gt;，此处只需要指定出库的名字就可以了，另外两部分在生成该文件的时候会自动填充。&lt;/p&gt;
&lt;p&gt;在Windows中虽然库名和Linux格式不同，但也只需指定出名字即可。&lt;/p&gt;
&lt;p&gt;根据上面的目录结构，可以这样编写&lt;code&gt;CMakeLists.txt&lt;/code&gt;文件:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.0)
project(CALC)
include_directories(${PROJECT_SOURCE_DIR}/include)
file(GLOB SRC_LIST &quot;${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp&quot;)
add_library(calc SHARED ${SRC_LIST})
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样最终就会生成对应的动态库文件&lt;code&gt;libcalc.so&lt;/code&gt;。&lt;/p&gt;
&lt;h3&gt;2.5.3 指定输出的路径&lt;/h3&gt;
&lt;h4&gt;方式1 - 适用于动态库&lt;/h4&gt;
&lt;p&gt;对于生成的库文件来说和可执行程序一样都可以指定输出路径。&lt;code&gt;由于在Linux下生成的动态库默认是有执行权限的&lt;/code&gt;，所以可以按照生成可执行程序的方式去指定它生成的目录：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.0)
project(CALC)
include_directories(${PROJECT_SOURCE_DIR}/include)
file(GLOB SRC_LIST &quot;${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp&quot;)

set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
add_library(calc SHARED ${SRC_LIST})
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;对于这种方式来说，其实就是通过&lt;code&gt;set&lt;/code&gt;命令给&lt;code&gt;EXECUTABLE_OUTPUT_PATH&lt;/code&gt;宏设置了一个路径，这个路径就是可执行文件生成的路径。&lt;/p&gt;
&lt;h4&gt;方式2 - 都适用&lt;/h4&gt;
&lt;p&gt;由于在Linux下生成的静态库默认不具有可执行权限，所以在指定静态库生成的路径的时候就不能使用&lt;code&gt;EXECUTABLE_OUTPUT_PATH&lt;/code&gt;宏了，而应该使用&lt;code&gt;LIBRARY_OUTPUT_PATH&lt;/code&gt;，这个宏对应静态库文件和动态库文件都适用。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.0)
project(CALC)
include_directories(${PROJECT_SOURCE_DIR}/include)
file(GLOB SRC_LIST &quot;${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp&quot;)

set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)



add_library(calc STATIC ${SRC_LIST})
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;2.6 包含库文件&lt;/h2&gt;
&lt;p&gt;在编写程序的过程中，可能会用到一些系统提供的动态库或者自己制作出的动态库或者静态库文件，cmake中也为我们提供了相关的加载动态库的命令。&lt;/p&gt;
&lt;h3&gt;2.6.1 链接静态库&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;src
├── add.cpp
├── div.cpp
├── main.cpp
├── mult.cpp
└── sub.cpp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;现在我们把上面&lt;code&gt;src&lt;/code&gt;目录中的&lt;code&gt;add.cpp、div.cpp、mult.cpp、sub.cpp&lt;/code&gt;编译成一个静态库文件&lt;code&gt;libcalc.a&lt;/code&gt;。&lt;a href=&quot;https://subingwen.cn/linux/library/#1-1-%E7%94%9F%E6%88%90%E9%9D%99%E6%80%81%E9%93%BE%E6%8E%A5%E5%BA%93&quot;&gt;通过命令制作并使用静态链接库&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;测试目录结构如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ tree
.
├── build
├── CMakeLists.txt
├── include
│   └── head.h
├── lib
│   └── libcalc.a     # 制作出的静态库的名字
└── src
    └── main.cpp

4 directories, 4 files
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在cmake中，链接静态库的命令如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;link_libraries(&amp;lt;static lib&amp;gt; [&amp;lt;static lib&amp;gt;...])
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;参数1&lt;/strong&gt;：指定出要链接的静态库的名字
&lt;ul&gt;
&lt;li&gt;可以是全名 &lt;code&gt;libxxx.a&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;也可以是掐头（&lt;code&gt;lib&lt;/code&gt;）去尾（&lt;code&gt;.a&lt;/code&gt;）之后的名字 &lt;code&gt;xxx&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;参数2-N&lt;/strong&gt;：要链接的其它静态库的名字&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果该静态库不是系统提供的（自己制作或者使用第三方提供的静态库）可能出现静态库找不到的情况，此时可以将静态库的路径也指定出来：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;link_directories(&amp;lt;lib path&amp;gt;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样，修改之后的&lt;code&gt;CMakeLists.txt&lt;/code&gt;文件内容如下:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.0)
project(CALC)

file(GLOB SRC_LIST ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)

include_directories(${PROJECT_SOURCE_DIR}/include)

link_directories(${PROJECT_SOURCE_DIR}/lib)

link_libraries(calc)
add_executable(app ${SRC_LIST})
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;添加了第8行的代码，就可以根据参数指定的路径找到这个静态库了。&lt;/p&gt;
&lt;h3&gt;2.6.2 链接动态库&lt;/h3&gt;
&lt;p&gt;在程序编写过程中，除了在项目中引入静态库，好多时候也会使用一些标准的或者第三方提供的一些动态库，关于动态库的制作、使用以及在内存中的加载方式和静态库都是不同的，在此不再过多赘述，如有疑惑请参考&lt;a href=&quot;https://subingwen.cn/linux/library/&quot;&gt;Linux 静态库和动态库&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在&lt;code&gt;cmake&lt;/code&gt;中链接动态库的命令如下:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;target_link_libraries(
    &amp;lt;target&amp;gt;
    &amp;lt;PRIVATE|PUBLIC|INTERFACE&amp;gt; &amp;lt;item&amp;gt;...
    [&amp;lt;PRIVATE|PUBLIC|INTERFACE&amp;gt; &amp;lt;item&amp;gt;...]...)
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;target&lt;/strong&gt;：指定要加载动态库的文件的名字&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;该文件可能是一个源文件&lt;/li&gt;
&lt;li&gt;该文件可能是一个动态库文件&lt;/li&gt;
&lt;li&gt;该文件可能是一个可执行文件&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;PRIVATE|PUBLIC|INTERFACE&lt;/strong&gt;：动态库的访问权限，默认为&lt;code&gt;PUBLIC&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;如果各个动态库之间没有依赖关系，无需做任何设置，三者没有没有区别，一般无需指定，使用默认的 PUBLIC 即可。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;动态库的链接具有传递性&lt;/code&gt;，如果动态库 A 链接了动态库B、C，动态库D链接了动态库A，此时动态库D相当于也链接了动态库B、C，并可以使用动态库B、C中定义的方法。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;target_link_libraries(A B C)
target_link_libraries(D A)
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PUBLIC&lt;/code&gt;：在public后面的库会被Link到前面的target中，并且里面的符号也会被导出，提供给第三方使用。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PRIVATE&lt;/code&gt;：在private后面的库仅被link到前面的target中，并且终结掉，第三方不能感知你调了啥库&lt;/li&gt;
&lt;li&gt;&lt;code&gt;INTERFACE&lt;/code&gt;：在interface后面引入的库不会被链接到前面的target中，只会导出符号。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;链接系统动态库&lt;/h4&gt;
&lt;p&gt;动态库的链接和静态库是完全不同的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;静态库会在生成可执行程序的链接阶段被打包到可执行程序中，所以可执行程序启动，静态库就被加载到内存中了。&lt;/li&gt;
&lt;li&gt;动态库在生成可执行程序的链接阶段&lt;strong&gt;不会&lt;/strong&gt;被打包到可执行程序中，当可执行程序被启动并且调用了动态库中的函数的时候，动态库才会被加载到内存&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此，在&lt;code&gt;cmake&lt;/code&gt;中指定要链接的动态库的时候，&lt;code&gt;应该将命令写到生成了可执行文件之后：&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.0)
project(TEST)
file(GLOB SRC_LIST ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)

add_executable(app ${SRC_LIST})

target_link_libraries(app pthread)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在&lt;code&gt;target_link_libraries(app pthread)&lt;/code&gt;中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;app:&lt;/code&gt; 对应的是最终生成的可执行程序的名字&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pthread&lt;/code&gt;：这是可执行程序要加载的动态库，这个库是系统提供的线程库，全名为&lt;code&gt;libpthread.so&lt;/code&gt;，在指定的时候一般会掐头（lib）去尾（.so）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;链接第三方动态库&lt;/h4&gt;
&lt;p&gt;现在，自己生成了一个动态库，对应的目录结构如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ tree
.
├── build
├── CMakeLists.txt
├── include
│   └── head.h            # 动态库对应的头文件
├── lib
│   └── libcalc.so        # 自己制作的动态库文件
└── main.cpp              # 测试用的源文件

3 directories, 4 files
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;假设在测试文件&lt;code&gt;main.cpp&lt;/code&gt;中既使用了自己制作的动态库&lt;code&gt;libcalc.so&lt;/code&gt;又使用了系统提供的线程库，此时&lt;code&gt;CMakeLists.txt&lt;/code&gt;文件可以这样写：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.0)
project(TEST)
file(GLOB SRC_LIST ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
include_directories(${PROJECT_SOURCE_DIR}/include)
add_executable(app ${SRC_LIST})
target_link_libraries(app pthread calc)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在&lt;strong&gt;第六行&lt;/strong&gt;中，&lt;code&gt;pthread、calc&lt;/code&gt;都是可执行程序&lt;code&gt;app&lt;/code&gt;要链接的动态库的名字。当可执行程序&lt;code&gt;app&lt;/code&gt;生成之后并执行该文件，会提示有如下错误信息：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ ./app
./app: error while loading shared libraries: libcalc.so: cannot open shared object file: No such file or directory
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这是因为可执行程序启动之后，去加载&lt;code&gt;calc&lt;/code&gt;这个动态库，但是不知道这个动态库被放到了什么位置&lt;a href=&quot;https://subingwen.cn/linux/library/#2-4-1-%E5%BA%93%E7%9A%84%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86&quot;&gt;解决动态库无法加载的问题&lt;/a&gt;，所以就加载失败了，在 CMake 中可以在生成可执行程序之前，通过命令指定出要链接的动态库的位置，指定静态库位置使用的也是这个命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;link_directories(path)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;所以修改之后的&lt;code&gt;CMakeLists.txt&lt;/code&gt;文件应该是这样的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.0)
project(TEST)
file(GLOB SRC_LIST ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)

include_directories(${PROJECT_SOURCE_DIR}/include)

link_directories(${PROJECT_SOURCE_DIR}/lib)

add_executable(app ${SRC_LIST})

target_link_libraries(app pthread calc)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;通过&lt;code&gt;link_directories&lt;/code&gt;指定了动态库的路径之后，在执行生成的可执行程序的时候，就不会出现找不到动态库的问题了。&lt;/p&gt;
&lt;p&gt;温馨提示：使用 target_link_libraries 命令就可以链接动态库，也可以链接静态库文件。&lt;/p&gt;
&lt;h2&gt;2.7 日志&lt;/h2&gt;
&lt;p&gt;在CMake中可以用用户显示一条消息，该命令的名字为&lt;code&gt;message&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;message([STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR] &quot;message to display&quot; ...)
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;(无)&lt;/code&gt; ：重要消息&lt;/li&gt;
&lt;li&gt;&lt;code&gt;STATUS&lt;/code&gt; ：非重要消息&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WARNING&lt;/code&gt;：CMake 警告, 会继续执行&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AUTHOR_WARNING&lt;/code&gt;：CMake 警告 (dev), 会继续执行&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SEND_ERROR&lt;/code&gt;：CMake 错误, 继续执行，但是会跳过生成的步骤&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FATAL_ERROR&lt;/code&gt;：CMake 错误, 终止所有处理过程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CMake的命令行工具会在stdout上显示&lt;code&gt;STATUS&lt;/code&gt;消息，在stderr上显示其他所有消息。CMake的GUI会在它的log区域显示所有消息。&lt;/p&gt;
&lt;p&gt;CMake警告和错误消息的文本显示使用的是一种简单的标记语言。文本没有缩进，超过长度的行会回卷，段落之间以新行做为分隔符。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;message(STATUS &quot;source path: ${PROJECT_SOURCE_DIR}&quot;)

message(WARNING &quot;source path: ${PROJECT_SOURCE_DIR}&quot;)

message(FATAL_ERROR &quot;source path: ${PROJECT_SOURCE_DIR}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;2.8 变量操作&lt;/h2&gt;
&lt;h3&gt;2.8.1 追加&lt;/h3&gt;
&lt;p&gt;有时候项目中的源文件并不一定都在同一个目录中，但是这些源文件最终却需要一起进行编译来生成最终的可执行文件或者库文件。如果我们通过&lt;code&gt;file&lt;/code&gt;命令对各个目录下的源文件进行搜索，最后还需要做一个字符串拼接的操作，关于字符串拼接可以使用&lt;code&gt;set&lt;/code&gt;命令也可以使用&lt;code&gt;list&lt;/code&gt;命令。&lt;/p&gt;
&lt;h4&gt;使用set拼接&lt;/h4&gt;
&lt;p&gt;如果使用set进行字符串拼接，对应的命令格式如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;set(变量名1 ${变量名1} ${变量名2} ...)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;关于上面的命令其实就是将从第二个参数开始往后所有的字符串进行拼接，最后将结果存储到第一个参数中，如果第一个参数中原来有数据会对原数据就行覆盖。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.0)
project(TEST)
set(TEMP &quot;hello,world&quot;)
file(GLOB SRC_1 ${PROJECT_SOURCE_DIR}/src1/*.cpp)
file(GLOB SRC_2 ${PROJECT_SOURCE_DIR}/src2/*.cpp)

set(SRC_1 ${SRC_1} ${SRC_2} ${TEMP})
message(STATUS &quot;message: ${SRC_1}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;使用list拼接&lt;/h4&gt;
&lt;p&gt;如果使用list进行字符串拼接，对应的命令格式如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;list(APPEND &amp;lt;list&amp;gt; [&amp;lt;element&amp;gt; ...])
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;list&lt;/code&gt;命令的功能比&lt;code&gt;set&lt;/code&gt;要强大，字符串拼接只是它的其中一个功能，所以需要在它第一个参数的位置指定出我们要做的操作，&lt;code&gt;APPEND&lt;/code&gt;表示进行数据追加，后边的参数和&lt;code&gt;set&lt;/code&gt;就一样了。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.0)
project(TEST)
set(TEMP &quot;hello,world&quot;)
file(GLOB SRC_1 ${PROJECT_SOURCE_DIR}/src1/*.cpp)
file(GLOB SRC_2 ${PROJECT_SOURCE_DIR}/src2/*.cpp)

list(APPEND SRC_1 ${SRC_1} ${SRC_2} ${TEMP})
message(STATUS &quot;message: ${SRC_1}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在CMake中，使用&lt;code&gt;set&lt;/code&gt;命令可以创建一个&lt;code&gt;list&lt;/code&gt;。一个在&lt;code&gt;list&lt;/code&gt;内部是一个由&lt;code&gt;分号;&lt;/code&gt;分割的一组字符串。例如，&lt;code&gt;set(var a b c d e)&lt;/code&gt;命令将会创建一个&lt;code&gt;list:a;b;c;d;e&lt;/code&gt;，但是最终打印变量值的时候得到的是&lt;code&gt;abcde&lt;/code&gt;。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;set(tmp1 a;b;c;d;e)
set(tmp2 a b c d e)
message(${tmp1})
message(${tmp2})
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输出的结果:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;abcde
abcde
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;2.9 宏定义&lt;/h2&gt;
&lt;p&gt;在进行程序测试的时候，我们可以在代码中添加一些宏定义，通过这些宏来控制这些代码是否生效，如下所示：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#define NUMBER  3

int main()
{
    int a = 10;
#ifdef DEBUG
    printf(&quot;我是一个程序猿, 我不会爬树...\n&quot;);
#endif
    for(int i=0; i&amp;lt;NUMBER; ++i)
    {
        printf(&quot;hello, GCC!!!\n&quot;);
    }
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在程序的第七行对&lt;code&gt;DEBUG&lt;/code&gt;宏进行了判断，如果该宏被定义了，那么第八行就会进行日志输出，如果没有定义这个宏，第八行就相当于被注释掉了，因此最终无法看到日志输入出（&lt;strong&gt;上述代码中并没有定义这个宏&lt;/strong&gt;）。&lt;/p&gt;
&lt;p&gt;为了让测试更灵活，我们可以不在代码中定义这个宏，而是在测试的时候去把它定义出来，其中一种方式就是在&lt;code&gt;gcc/g++&lt;/code&gt;命令中去指定，如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ gcc test.c -DDEBUG -o app
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在&lt;code&gt;gcc/g++&lt;/code&gt;命令中通过参数 &lt;code&gt;-D&lt;/code&gt;指定出要定义的宏的名字，这样就相当于在代码中定义了一个宏，其名字为&lt;code&gt;DEBUG&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;在&lt;code&gt;CMake&lt;/code&gt;中我们也可以做类似的事情，对应的命令叫做&lt;code&gt;add_definitions&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;add_definitions(-D宏名称)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;针对于上面的源文件编写一个&lt;code&gt;CMakeLists.txt&lt;/code&gt;，内容如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.0)
project(TEST)

add_definitions(-DDEBUG)
add_executable(app ./test.c)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;通过这种方式，上述代码中的第八行日志就能够被输出出来了。&lt;/p&gt;
&lt;h2&gt;3. 预定义宏&lt;/h2&gt;
&lt;p&gt;下面的列表中为大家整理了一些&lt;code&gt;CMake&lt;/code&gt;中常用的宏：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;宏&lt;/th&gt;
&lt;th&gt;功能&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;PROJECT_SOURCE_DIR&lt;/td&gt;
&lt;td&gt;使用cmake命令后紧跟的目录，一般是工程的根目录&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PROJECT_BINARY_DIR&lt;/td&gt;
&lt;td&gt;执行cmake命令的目录&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CMAKE_CURRENT_SOURCE_DIR&lt;/td&gt;
&lt;td&gt;当前处理的CMakeLists.txt所在的路径&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CMAKE_CURRENT_BINARY_DIR&lt;/td&gt;
&lt;td&gt;target 编译目录&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EXECUTABLE_OUTPUT_PATH&lt;/td&gt;
&lt;td&gt;重新定义目标二进制可执行文件的存放位置&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LIBRARY_OUTPUT_PATH&lt;/td&gt;
&lt;td&gt;重新定义目标链接库文件的存放位置&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PROJECT_NAME&lt;/td&gt;
&lt;td&gt;返回通过PROJECT指令定义的项目名称&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CMAKE_BINARY_DIR&lt;/td&gt;
&lt;td&gt;项目实际构建路径，假设在&lt;code&gt;build&lt;/code&gt;目录进行的构建，那么得到的就是这个目录的路径&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h1&gt;CMake 保姆级教程（下）&lt;/h1&gt;
&lt;p&gt;如果项目很大，或者项目中有很多的源码目录，在通过CMake管理项目的时候如果只使用一个&lt;code&gt;CMakeLists.txt&lt;/code&gt;，那么这个文件相对会比较复杂，有一种化繁为简的方式就是给每个源码目录都添加一个&lt;code&gt;CMakeLists.txt&lt;/code&gt;文件（头文件目录不需要），这样每个文件都不会太复杂，而且更灵活，更容易维护。&lt;/p&gt;
&lt;p&gt;先来看一下下面的这个的目录结构：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ tree
.
├── build
├── calc
│   ├── add.cpp
│   ├── CMakeLists.txt
│   ├── div.cpp
│   ├── mult.cpp
│   └── sub.cpp
├── CMakeLists.txt
├── include
│   ├── calc.h
│   └── sort.h
├── sort
│   ├── CMakeLists.txt
│   ├── insert.cpp
│   └── select.cpp
├── test1
│   ├── calc.cpp
│   └── CMakeLists.txt
└── test2
    ├── CMakeLists.txt
    └── sort.cpp

6 directories, 15 files
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;include 目录&lt;/code&gt;：头文件目录&lt;/li&gt;
&lt;li&gt;&lt;code&gt;calc 目录&lt;/code&gt;：目录中的四个源文件对应的加、减、乘、除算法
&lt;ul&gt;
&lt;li&gt;对应的头文件是&lt;code&gt;include&lt;/code&gt;中的&lt;code&gt;calc.h&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sort 目录&lt;/code&gt; ：目录中的两个源文件对应的是插入排序和选择排序算法
&lt;ul&gt;
&lt;li&gt;对应的头文件是&lt;code&gt;include&lt;/code&gt;中的&lt;code&gt;sort.h&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;test1 目录&lt;/code&gt;：测试目录，对加、减、乘、除算法进行测试&lt;/li&gt;
&lt;li&gt;&lt;code&gt;test2 目录&lt;/code&gt;：测试目录，对排序算法进行测试&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以看到各个源文件目录所需要的&lt;code&gt;CMakeLists.txt&lt;/code&gt;文件现在已经添加完毕了。接下来庖丁解牛，我们依次分析一下各个文件中需要添加的内容。&lt;/p&gt;
&lt;h2&gt;1.1 准备工作&lt;/h2&gt;
&lt;h3&gt;1.1.1 节点关系&lt;/h3&gt;
&lt;p&gt;众所周知，Linux的目录是树状结构，所以&lt;code&gt;嵌套的 CMake 也是一个树状结构，最顶层的 CMakeLists.txt 是根节点，其次都是子节点。&lt;/code&gt;因此，我们需要了解一些关于 &lt;code&gt;CMakeLists.txt&lt;/code&gt; 文件变量作用域的一些信息：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;根节点&lt;code&gt;CMakeLists.txt&lt;/code&gt;中的变量全局有效&lt;/li&gt;
&lt;li&gt;父节点&lt;code&gt;CMakeLists.txt&lt;/code&gt;中的变量可以在子节点中使用&lt;/li&gt;
&lt;li&gt;子节点&lt;code&gt;CMakeLists.txt&lt;/code&gt;中的变量只能在当前节点中使用&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;1.1.2 添加子目录&lt;/h3&gt;
&lt;p&gt;接下来我们还需要知道在 CMake 中父子节点之间的关系是如何建立的，这里需要用到一个 CMake 命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;source_dir&lt;/code&gt;：指定了&lt;code&gt;CMakeLists.txt&lt;/code&gt;源文件和代码文件的位置，其实就是指定子目录&lt;/li&gt;
&lt;li&gt;&lt;code&gt;binary_dir&lt;/code&gt;：指定了输出文件的路径，一般不需要指定，忽略即可。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;EXCLUDE_FROM_ALL&lt;/code&gt;：在子路径下的目标默认不会被包含到父路径的&lt;code&gt;ALL&lt;/code&gt;目标里，并且也会被排除在IDE工程文件之外。用户必须显式构建在子路径下的目标。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通过这种方式&lt;code&gt;CMakeLists.txt&lt;/code&gt;文件之间的父子关系就被构建出来了。&lt;/p&gt;
&lt;h2&gt;1.2 解决问题&lt;/h2&gt;
&lt;p&gt;在上面的目录中我们要做如下事情：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;通过 &lt;code&gt;test1 目录&lt;/code&gt;中的测试文件进行计算器相关的测试&lt;/li&gt;
&lt;li&gt;通过 &lt;code&gt;test2 目录&lt;/code&gt;中的测试文件进行排序相关的测试&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;现在相当于是要进行模块化测试，对于&lt;code&gt;calc&lt;/code&gt;和&lt;code&gt;sort&lt;/code&gt;目录中的源文件来说，可以将它们先编译成库文件（可以是静态库也可以是动态库）然后在提供给测试文件使用即可。库文件的本质其实还是代码，只不过是从文本格式变成了二进制格式。&lt;/p&gt;
&lt;h3&gt;1.2.1 根目录&lt;/h3&gt;
&lt;p&gt;根目录中的 &lt;code&gt;CMakeLists.txt&lt;/code&gt;文件内容如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.0)
project(test)


set(LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib)

set(EXEC_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin)

set(HEAD_PATH ${CMAKE_CURRENT_SOURCE_DIR}/include)

set(CALC_LIB calc)
set(SORT_LIB sort)

set(APP_NAME_1 test1)
set(APP_NAME_2 test2)

add_subdirectory(calc)
add_subdirectory(sort)
add_subdirectory(test1)
add_subdirectory(test2)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在根节点对应的文件中主要做了两件事情：&lt;code&gt;定义全局变量&lt;/code&gt;和&lt;code&gt;添加子目录&lt;/code&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;定义的全局变量主要是给子节点使用，目的是为了提高子节点中的&lt;code&gt;CMakeLists.txt&lt;/code&gt;文件的可读性和可维护性，避免冗余并降低出差的概率。&lt;/li&gt;
&lt;li&gt;一共添加了四个子目录，每个子目录中都有一个&lt;code&gt;CMakeLists.txt&lt;/code&gt;文件，这样它们的父子关系就被确定下来了。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;2. 流程控制&lt;/h2&gt;
&lt;p&gt;在 CMake 的 CMakeLists.txt 中也可以进行流程控制，也就是说可以像写 shell 脚本那样进行&lt;code&gt;条件判断&lt;/code&gt;和&lt;code&gt;循环&lt;/code&gt;。&lt;/p&gt;
&lt;h2&gt;2.1 条件判断&lt;/h2&gt;
&lt;p&gt;关于条件判断其语法格式如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;if(&amp;lt;condition&amp;gt;)
  &amp;lt;commands&amp;gt;
elseif(&amp;lt;condition&amp;gt;)
  &amp;lt;commands&amp;gt;
else()
  &amp;lt;commands&amp;gt;
endif()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在进行条件判断的时候，如果有多个条件，那么可以写多个&lt;code&gt;elseif&lt;/code&gt;，最后一个条件可以使用&lt;code&gt;else&lt;/code&gt;，但是&lt;strong&gt;开始和结束是必须要成对出现的&lt;/strong&gt;，分别为：&lt;code&gt;if&lt;/code&gt;和&lt;code&gt;endif&lt;/code&gt;。&lt;/p&gt;
&lt;h3&gt;2.1.1 基本表达式&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;if(&amp;lt;expression&amp;gt;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果是基本表达式，&lt;code&gt;expression&lt;/code&gt; 有以下三种情况：&lt;code&gt;常量&lt;/code&gt;、&lt;code&gt;变量&lt;/code&gt;、&lt;code&gt;字符串&lt;/code&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果是&lt;code&gt;1&lt;/code&gt;, &lt;code&gt;ON&lt;/code&gt;, &lt;code&gt;YES&lt;/code&gt;, &lt;code&gt;TRUE&lt;/code&gt;, &lt;code&gt;Y&lt;/code&gt;, &lt;code&gt;非零值&lt;/code&gt;，&lt;code&gt;非空字符串&lt;/code&gt;时，条件判断返回&lt;code&gt;True&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;如果是 &lt;code&gt;0&lt;/code&gt;, &lt;code&gt;OFF&lt;/code&gt;, &lt;code&gt;NO&lt;/code&gt;, &lt;code&gt;FALSE&lt;/code&gt;, &lt;code&gt;N&lt;/code&gt;, &lt;code&gt;IGNORE&lt;/code&gt;, &lt;code&gt;NOTFOUND&lt;/code&gt;，&lt;code&gt;空字符串&lt;/code&gt;时，条件判断返回&lt;code&gt;False&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2.1.2 逻辑判断&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;NOT&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;if(NOT &amp;lt;condition&amp;gt;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其实这就是一个取反操作，如果条件&lt;code&gt;condition&lt;/code&gt;为&lt;code&gt;True&lt;/code&gt;将返回&lt;code&gt;False&lt;/code&gt;，如果条件&lt;code&gt;condition&lt;/code&gt;为&lt;code&gt;False&lt;/code&gt;将返回&lt;code&gt;True&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;AND&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;if(&amp;lt;cond1&amp;gt; AND &amp;lt;cond2&amp;gt;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果&lt;code&gt;cond1&lt;/code&gt;和&lt;code&gt;cond2&lt;/code&gt;同时为&lt;code&gt;True&lt;/code&gt;，返回&lt;code&gt;True&lt;/code&gt;否则返回&lt;code&gt;False&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;OR&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;if(&amp;lt;cond1&amp;gt; OR &amp;lt;cond2&amp;gt;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果&lt;code&gt;cond1&lt;/code&gt;和&lt;code&gt;cond2&lt;/code&gt;两个条件中至少有一个为&lt;code&gt;True&lt;/code&gt;，返回&lt;code&gt;True&lt;/code&gt;，如果两个条件都为&lt;code&gt;False&lt;/code&gt;则返回&lt;code&gt;False&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;2.2 循环&lt;/h2&gt;
&lt;p&gt;在 CMake 中循环有两种方式，分别是：&lt;code&gt;foreach&lt;/code&gt;和&lt;code&gt;while&lt;/code&gt;。&lt;/p&gt;
&lt;h3&gt;2.2.1 foreach&lt;/h3&gt;
&lt;p&gt;使用 foreach 进行循环，语法格式如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;foreach(&amp;lt;loop_var&amp;gt; &amp;lt;items&amp;gt;)
    &amp;lt;commands&amp;gt;
endforeach()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;通过&lt;code&gt;foreach&lt;/code&gt;我们就可以对&lt;code&gt;items&lt;/code&gt;中的数据进行遍历，然后通过&lt;code&gt;loop_var&lt;/code&gt;将遍历到的当前的值取出，在取值的时候有以下几种用法：&lt;/p&gt;
&lt;h4&gt;方法1&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;foreach(&amp;lt;loop_var&amp;gt; RANGE &amp;lt;stop&amp;gt;)
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;RANGE&lt;/code&gt;：关键字，表示要遍历范围&lt;/li&gt;
&lt;li&gt;&lt;code&gt;stop&lt;/code&gt;：这是一个&lt;code&gt;正整数，表示范围的结束值&lt;/code&gt;，在遍历的时候&lt;code&gt;从 0 开始，最大值为 stop&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;loop_var&lt;/code&gt;：存储每次循环取出的值&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;举例说明：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.2)
project(test)

foreach(item RANGE 10)
    message(STATUS &quot;当前遍历的值为: ${item}&quot; )
endforeach()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输出的日志信息是这样的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cmake ..
-- 当前遍历的值为: 0
-- 当前遍历的值为: 1
-- 当前遍历的值为: 2
-- 当前遍历的值为: 3
-- 当前遍历的值为: 4
-- 当前遍历的值为: 5
-- 当前遍历的值为: 6
-- 当前遍历的值为: 7
-- 当前遍历的值为: 8
-- 当前遍历的值为: 9
-- 当前遍历的值为: 10
-- Configuring done
-- Generating done
-- Build files have been written to: /home/robin/abc/a/build
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;再次强调：在对一个整数区间进行遍历的时候，得到的范围是这样的 【0，stop】，右侧是闭区间包含 stop 这个值。&lt;/p&gt;
&lt;h4&gt;方法2&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;foreach(&amp;lt;loop_var&amp;gt; RANGE &amp;lt;start&amp;gt; &amp;lt;stop&amp;gt; [&amp;lt;step&amp;gt;])
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这是上面&lt;code&gt;方法1&lt;/code&gt;的加强版，我们在遍历一个整数区间的时候，除了可以指定起始范围，还可以指定步长。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;RANGE&lt;/code&gt;：关键字，表示要遍历范围&lt;/li&gt;
&lt;li&gt;&lt;code&gt;start&lt;/code&gt;：这是一个&lt;code&gt;正整数，表示范围的起始值，也就是说最小值为 start&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;stop&lt;/code&gt;：这是一个&lt;code&gt;正整数，表示范围的结束值，也就是说最大值为 stop&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;step&lt;/code&gt;：控制每次遍历的时候以怎样的步长增长，&lt;code&gt;默认为1，可以不设置&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;loop_var&lt;/code&gt;：存储每次循环取出的值&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;举例说明：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.2)
project(test)

foreach(item RANGE 10 30 2)
    message(STATUS &quot;当前遍历的值为: ${item}&quot; )
endforeach()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输出的结果如下:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cmake ..
-- 当前遍历的值为: 10
-- 当前遍历的值为: 12
-- 当前遍历的值为: 14
-- 当前遍历的值为: 16
-- 当前遍历的值为: 18
-- 当前遍历的值为: 20
-- 当前遍历的值为: 22
-- 当前遍历的值为: 24
-- 当前遍历的值为: 26
-- 当前遍历的值为: 28
-- 当前遍历的值为: 30
-- Configuring done
-- Generating done
-- Build files have been written to: /home/robin/abc/a/build
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;再次强调：在使用上面的方式对一个整数区间进行遍历的时候，得到的范围是这样的 【start，stop】，左右两侧都是闭区间，包含 start 和 stop 这两个值，步长 step 默认为1，可以不设置。&lt;/p&gt;
&lt;h4&gt;方法3&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;foreach(&amp;lt;loop_var&amp;gt; IN [LISTS [&amp;lt;lists&amp;gt;]] [ITEMS [&amp;lt;items&amp;gt;]])
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这是&lt;code&gt;foreach&lt;/code&gt;的另一个变体，通过这种方式我们可以对更加复杂的数据进行遍历，前两种方式只适用于对某个正整数范围内的遍历。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;IN&lt;/code&gt;：关键字，表示在 xxx 里边&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;LISTS&lt;/code&gt;：关键字，对应的是列表&lt;code&gt;list&lt;/code&gt;，通过&lt;code&gt;set、list&lt;/code&gt;可以获得&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ITEMS&lt;/code&gt;：关键字，对应的也是列表&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;loop_var&lt;/code&gt;：存储每次循环取出的值&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.2)
project(test)

set(WORD a b c d)
set(NAME ace sabo luffy)

foreach(item IN LISTS WORD NAME)
    message(STATUS &quot;当前遍历的值为: ${item}&quot; )
endforeach()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在上面的例子中，创建了两个 &lt;code&gt;list&lt;/code&gt; 列表，在遍历的时候对它们两个都进行了遍历（&lt;code&gt;可以根据实际需求选择同时遍历多个或者只遍历一个&lt;/code&gt;）。输出的日志信息如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cd build/
$ cmake ..
-- 当前遍历的值为: a
-- 当前遍历的值为: b
-- 当前遍历的值为: c
-- 当前遍历的值为: d
-- 当前遍历的值为: ace
-- 当前遍历的值为: sabo
-- 当前遍历的值为: luffy
-- Configuring done
-- Generating done
-- Build files have been written to: /home/robin/abc/a/build
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一共输出了7个字符串，说明遍历是没有问题的。接下来看另外一种方式：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.2)
project(test)

set(WORD a b c &quot;d e f&quot;)
set(NAME ace sabo luffy)
foreach(item IN ITEMS ${WORD} ${NAME})
    message(STATUS &quot;当前遍历的值为: ${item}&quot; )
endforeach()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在上面的例子中，遍历过程中将关键字&lt;code&gt;LISTS&lt;/code&gt;改成了&lt;code&gt;ITEMS&lt;/code&gt;，后边跟的还是一个或者多个列表，只不过此时需要通过&lt;code&gt;${}&lt;/code&gt;将列表中的值取出。其输出的信息和上一个例子是一样的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cd build/
$ cmake ..
-- 当前遍历的值为: a
-- 当前遍历的值为: b
-- 当前遍历的值为: c
-- 当前遍历的值为: d e f
-- 当前遍历的值为: ace
-- 当前遍历的值为: sabo
-- 当前遍历的值为: luffy
-- Configuring done
-- Generating done
-- Build files have been written to: /home/robin/abc/a/build
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;小细节：在通过 set 组织列表的时候，如果某个字符串中有空格，可以通过双引号将其包裹起来，具体的操作方法可以参考上面的例子。&lt;/p&gt;
&lt;h4&gt;方法4&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;注意事项：这种循环方式要求CMake的版本大于等于 3.17。&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;foreach(&amp;lt;loop_var&amp;gt;... IN ZIP_LISTS &amp;lt;lists&amp;gt;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;通过这种方式，遍历的还是一个或多个列表，可以理解为是&lt;code&gt;方式3&lt;/code&gt;的加强版。因为通过上面的方式遍历多个列表，但是又想把指定列表中的元素取出来使用是做不到的，在这个加强版中就可以轻松实现。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;loop_var&lt;/code&gt;：存储每次循环取出的值，可以根据要遍历的列表的数量指定多个变量，用于存储对应的列表当前取出的那个值。
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;如果指定了多个变量名，它们的数量应该和列表的数量相等&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;如果只给出了一个 loop_var，那么它将一系列的 loop_var_N 变量来存储对应列表中的当前项，也就是说 loop_var_0 对应第一个列表，loop_var_1 对应第二个列表，以此类推......&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;如果遍历的多个列表中一个列表较短，当它遍历完成之后将不会再参与后续的遍历（因为其它列表还没有遍历完）。&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;IN&lt;/code&gt;：关键字，表示在 xxx 里边&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ZIP_LISTS&lt;/code&gt;：关键字，对应的是列表&lt;code&gt;list&lt;/code&gt;，通过&lt;code&gt;set 、list&lt;/code&gt;可以获得&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.17)
project(test)

list(APPEND WORD hello world &quot;hello world&quot;)
list(APPEND NAME ace sabo luffy zoro sanji)

foreach(item1 item2 IN ZIP_LISTS WORD NAME)
    message(STATUS &quot;当前遍历的值为: item1 = ${item1}, item2=${item2}&quot; )
endforeach()

message(&quot;=============================&quot;)

foreach(item  IN ZIP_LISTS WORD NAME)
    message(STATUS &quot;当前遍历的值为: item1 = ${item_0}, item2=${item_1}&quot; )
endforeach()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在这个例子中关于列表数据的添加是通过&lt;code&gt;list&lt;/code&gt;来实现的。在遍历列表的时候一共使用了两种方式，一种提供了多个变量来存储当前列表中的值，另一种只有一个变量，但是实际取值的时候需要通过&lt;code&gt;变量名_0、变量名_1、变量名_N&lt;/code&gt; 的方式来操作，注意事项：第一个列表对应的编号是0，第一个列表对应的编号是0，第一个列表对应的编号是0。&lt;/p&gt;
&lt;p&gt;上面的例子输出的结果如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cd build/
$ cmake ..
-- 当前遍历的值为: item1 = hello, item2=ace
-- 当前遍历的值为: item1 = world, item2=sabo
-- 当前遍历的值为: item1 = hello world, item2=luffy
-- 当前遍历的值为: item1 = , item2=zoro
-- 当前遍历的值为: item1 = , item2=sanji
=============================
-- 当前遍历的值为: item1 = hello, item2=ace
-- 当前遍历的值为: item1 = world, item2=sabo
-- 当前遍历的值为: item1 = hello world, item2=luffy
-- 当前遍历的值为: item1 = , item2=zoro
-- 当前遍历的值为: item1 = , item2=sanji
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: /home/robin/abc/a/build
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】 https://subingwen.cn/cmake/CMake-advanced/&lt;/p&gt;
</content:encoded></item><item><title>强大的公式编辑器 —— MathType</title><link>https://tuoyuangui.github.io/website/posts/typora/%E6%8C%87%E5%8D%97/mathtype%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/%E6%8C%87%E5%8D%97/mathtype%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95/</guid><pubDate>Thu, 07 Jul 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;&lt;strong&gt;强大的公式编辑器 —— MathType&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;MathType 是一款广泛使用的数学公式编辑器，它可以与多种文档处理软件和演示软件（如Microsoft Word、PowerPoint等）集成，让用户能够创建和编辑数学符号和方程式。使用MathType，您可以轻松地在文档中插入复杂的数学公式，支持代数、微积分、统计、几何等多种数学领域的公式编辑。&lt;/p&gt;
&lt;h2&gt;1、快捷键&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;上标：Ctrl+H&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;下标：Ctrl+L&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;积分号：Ctrl+I&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;根式：Ctrl+R&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;上横线：Ctrl+Shift+连字符&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;矢量箭头：Ctrl+Alt+连字符&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;单撇：Ctrl+Alt+&apos;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;双撇：Ctrl+Alt+&quot;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;小括号：Ctrl+9或Ctrl+0&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中括号：Ctrl+[ 或Ctrl+]&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;大括号：Ctrl+{ 或Ctrl+}&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;分式：Ctrl+F&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;斜杠分式：Ctrl&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;先按“Ctrl+G”，放开后，再按英语字母就可以得到相应的小写希腊字母；如果再按“Shift+字母”，得到相应的大写希腊字母。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;100%：Ctrl+1，&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;200%：Ctrl+2，&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;400%：Ctrl+4，&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;800%：Ctrl+8。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;【1】https://www.mathtype.cn/jiqiao/changyong-kuaijiejian.html&lt;/p&gt;
</content:encoded></item><item><title>动态库、静态库编译、打包</title><link>https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/%E5%8A%A8%E6%80%81%E5%BA%93%E9%9D%99%E6%80%81%E5%BA%93%E7%9A%84%E5%88%B6%E4%BD%9C/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/%E5%8A%A8%E6%80%81%E5%BA%93%E9%9D%99%E6%80%81%E5%BA%93%E7%9A%84%E5%88%B6%E4%BD%9C/</guid><pubDate>Sat, 02 Jul 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;动态库、静态库编译、打包&lt;/h1&gt;
&lt;h2&gt;1、头文件守卫&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;防止头文件被重复包含&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#ifndef _HEAD_H_
#define _HEAD_H_
......
#endif
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;2、静态库的制作打包&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;将 .c 生成 .o 文件&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;gcc -c add.c -o add.o
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;使用 ar 工具制作静态库&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;ar rcs lib库名.a add.o sub.o div.o
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;编译静态库到可执行文件中：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;gcc test.c lib库名.a -o a.out
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​    4. 如果您的库依赖于其他静态库，您需要在这一步之前将所有依赖的库合并到您的库中。这可以通过使用 &lt;code&gt;ld&lt;/code&gt; 工具的 &lt;code&gt;--whole-archive&lt;/code&gt; 选项来实现，例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gcc -static -Wl,--whole-archive libdependency.a -Wl,--no-whole-archive -o libyourlibrary.a yourlibrary.o
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​		这个命令会将 &lt;code&gt;libdependency.a&lt;/code&gt; 中的所有对象文件与 &lt;code&gt;yourlibrary.o&lt;/code&gt; 合并成一个静态&lt;code&gt;libyourlibrary.a&lt;/code&gt;。&lt;strong&gt;打包共享&lt;/strong&gt;：将您的静态库 &lt;code&gt;libyourlibrary.a&lt;/code&gt; 以及所有相关的头文件和文档打包，确保依赖库的版权和许可信息也被包含在内。&lt;/p&gt;
&lt;p&gt;​	在GCC中使用&lt;code&gt;-Wl,--whole-archive&lt;/code&gt;选项，可以告诉链接器（通常是&lt;code&gt;ld&lt;/code&gt;）将后续的静态库中的所有对象文件都包含进最终的可执行文件中，而不是只包含被引用的对象文件。这在创建包含多个库的静态链接的可执行文件时非常有用。例如，如果您有两个静态库&lt;code&gt;libA.a&lt;/code&gt;和&lt;code&gt;libB.a&lt;/code&gt;，并且您想要确保这两个库中的所有对象文件都被包含进最终的可执行文件中，即使&lt;code&gt;libB.a&lt;/code&gt;中的某些对象文件没有被&lt;code&gt;libA.a&lt;/code&gt;直接引用，您可以使用以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gcc -o my_program my_program.o -Wl,--whole-archive libA.a libB.a -Wl,--no-whole-archive
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在这个例子中，&lt;code&gt;-Wl,--whole-archive&lt;/code&gt;选项告诉链接器包含&lt;code&gt;libA.a&lt;/code&gt;和&lt;code&gt;libB.a&lt;/code&gt;中的所有对象文件，而&lt;code&gt;-Wl,--no-whole-archive&lt;/code&gt;选项则关闭了这个行为，确保后续的库只包含被引用的对象文件。&lt;/p&gt;
&lt;p&gt;请注意，&lt;code&gt;-Wl&lt;/code&gt;选项是GCC的一个前缀，用于将后面的选项传递给链接器。因此，&lt;code&gt;-Wl,--whole-archive&lt;/code&gt;实际上是在告诉GCC将&lt;code&gt;--whole-archive&lt;/code&gt;选项传递给链接器&lt;code&gt;ld&lt;/code&gt;。同样地，&lt;code&gt;-Wl,--no-whole-archive&lt;/code&gt;告诉链接器停止&lt;code&gt;--whole-archive&lt;/code&gt;行为。&lt;/p&gt;
&lt;p&gt;使用&lt;code&gt;--whole-archive&lt;/code&gt;时，需要谨慎，因为这将增加最终可执行文件的大小，并且可能会包含不必要的代码。此外，如果多个库中存在相同的符号定义，可能会导致链接时的问题。&lt;/p&gt;
&lt;h2&gt;3、动态库的制作打包&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;将 .c 生成 .o 文件， （生成与位置无关的代码 -fPIC）&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;gcc -c add.c -o add.o -fPIC
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;使用 gcc -shared 制作动态库&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;gcc -shared -o lib库名.so    add.o sub.o div.o
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;编译可执行程序时，指定所使用的动态库。 -l：指定库名(去掉lib前缀和.so后缀) -L：指定库路径。&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;gcc test.c -o a.out -lmymath -L./lib
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;运行可以执行程序 ./a.out 出错！！！！&lt;/p&gt;
&lt;p&gt;&lt;code&gt; --- ldd a.out --&amp;gt; &quot;not found&quot; error while loading shared libraries: libxxx.so: cannot open shared object file: No such file or directory&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;例如，如果你有一个共享库位于&lt;code&gt;/usr/local/lib&lt;/code&gt;目录，并且你想要编译的程序在运行时能够找到这个库，你可以使用如下的&lt;code&gt;gcc&lt;/code&gt;命令&lt;code&gt;显示指定动态库的搜索动态库路径&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gcc -o my_program my_program.c -L/usr/local/lib -lmylib -Wl,-rpath,/usr/local/lib
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里，&lt;code&gt;-L/usr/local/lib&lt;/code&gt;告诉编译器在编译时到哪里查找库，而&lt;code&gt;-Wl,-rpath,/usr/local/lib&lt;/code&gt;则告诉链接器在运行时到哪里查找这个库。&lt;/p&gt;
&lt;p&gt;需要注意的是，&lt;code&gt;-rpath&lt;/code&gt;选项的用法可能因不同的系统和链接器而有所不同，上面的例子适用于使用GNU ld链接器的情况。在有些系统上，可能需要使用不同的选项或者不同的方式来指定运行时链接路径。&lt;/p&gt;
&lt;p&gt;原因：&lt;/p&gt;
&lt;p&gt;链接器：    工作于链接阶段， 工作时需要 -l 和 -L&lt;/p&gt;
&lt;p&gt;动态链接器：    工作于程序运行阶段，工作时需要提供动态库所在目录位置。&lt;/p&gt;
&lt;p&gt;解决方式：&lt;/p&gt;
&lt;p&gt;【1】 通过环境变量： &lt;code&gt;export LD_LIBRARY_PATH=动态库路径&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;./a.out 成功！！！ （临时生效， 终端重启环境变量失效）&lt;/p&gt;
&lt;p&gt;【2】 永久生效： 写入 终端配置文件。 &lt;code&gt;.bashrc&lt;/code&gt; 建议使用绝对路径。&lt;/p&gt;
&lt;p&gt;【3】 拷贝自定义动态库 到 /lib (标准C库所在目录位置)&lt;/p&gt;
&lt;p&gt;【4】 配置文件法&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo vi /etc/ld.so.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;sudo ldconfig -v  使配置文件生效。&lt;/p&gt;
&lt;p&gt;4）./a.out 成功&lt;/p&gt;
&lt;h2&gt;4、 复杂的打包实例&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;include ./Makefile.config

SRCS=$(wildcard *.c)
OBJS_static=$(patsubst %.c, %.o, $(SRCS))
OBJS_dynamic=$(patsubst %.c, %.os, $(SRCS))
install:install_static install_dynamic
        cp rsf.h $(LGLROOT)/include/
        cp librsf.a $(LGLROOT)/lib/
        cp libdrsf.so $(LGLROOT)/lib/
install_static:$(OBJS_static)
        ar rc librsf.a $^
        ranlib librsf.a

install_dynamic:$(OBJS_dynamic)
        $(CC) -o libdrsf.so  -fopenmp -shared $^ -lm -lblas -lcblas

%.os:%.c
        $(CC) -o $@ -c -g -x c  -Wall  -fopenmp -fPIC -DRSF_VERSION=&apos;&quot;4.0&quot;&apos; $&amp;lt;
%.o:%.c
        $(CC) -o $@ -c -g -x c  -Wall -fopenmp -DRSF_VERSION=&apos;&quot;4.0&quot;&apos;  $&amp;lt;

clean:
        -rm -rf *.o *.os  librsf.a libdrsf.so
realclean:clean
        -rm -rf $(LGLROOT)/include/rsf.h $(LGLROOT)/lib/librsf.a $(LGLROOT)/lib/libdrsf.so
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>C和C++混编以及extern的用法</title><link>https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/cc%E6%B7%B7%E7%BC%96%E4%BB%A5%E5%8F%8Aextern%E7%94%A8%E6%B3%95/</link><guid isPermaLink="true">https://tuoyuangui.github.io/website/posts/typora/gnu%E8%AF%AD%E8%A8%80/cc%E6%B7%B7%E7%BC%96%E4%BB%A5%E5%8F%8Aextern%E7%94%A8%E6%B3%95/</guid><pubDate>Tue, 28 Jun 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;C和C++混编以及extern的用法&lt;/h2&gt;
&lt;h2&gt;一. extern关键字&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;extern&lt;/code&gt;关键字的用法很简单，就是简简单单的声明，它可以明确的指出一个语句是声明；
比如&lt;code&gt;extern int i&lt;/code&gt;;那么就说明 这是声明变量 i,而不是定义i,&lt;strong&gt;声明是不开辟内存的，定义是开辟内存的&lt;/strong&gt;。
假如&lt;code&gt;int i&lt;/code&gt;；没有&lt;code&gt;extern&lt;/code&gt;修饰，那就说明为定义，会分配内存空间的。&lt;/p&gt;
&lt;h3&gt;extern 的使用场景1&lt;/h3&gt;
&lt;p&gt;extern 可以声明一个变量，使得该变量是来自其他文件的变量在本文件可以被访问。&lt;/p&gt;
&lt;p&gt;比如：创建两个文件 test.c 和 main.c文件；
在test.c文件中定义一个全局变量：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;//test.c
int i = 20; //定义一个全局变量
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在main.c文件，声明变量 i;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;main.c文件
# include&amp;lt;stdio.h&amp;gt;
extern int i; //声明变量i，当编译链接时候，main.c文件就可以访问到test.c文件的i的值了；
int main()
{
    printf(&quot;%d&quot;,i);
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样我们就可以跨文件（test.c），在本文件（main.c）访问这个变量了；&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;extern 的使用场景2&lt;/h3&gt;
&lt;p&gt;但是上诉的使用方式并不好，假如我一个大工程，这个工程由超级多的文件，这些文件假如都要访问
&lt;code&gt;test.c&lt;/code&gt;文件的 变量 i,那么，只能在这些文件中，每个文件的开头都 声明变量 i,并且，假如我的&lt;code&gt;test.c&lt;/code&gt;，不止一个定义一个变量i,有好多其他变量呢？在其他文件访问时候，都要声明好多变量，&lt;strong&gt;这会使得书写难度很繁琐，并且维护成本也大&lt;/strong&gt;；&lt;/p&gt;
&lt;p&gt;所以一般，我们都把&lt;strong&gt;声明语句放到头文件使用&lt;/strong&gt;，即我定义一个&lt;code&gt;test.h&lt;/code&gt;的头文件；
在该头文件中，声明 &lt;code&gt;extern int i&lt;/code&gt;；
然后，假如你在其他文件要使用改变量i,直接包含该头文件即可，
比如：test.h 头文件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;//test.h 头文件
extern int i;
extern int j;
extern int k;
//...
//声明很多很多变量
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在其他.c文件，只要包含该头文件，就可以啦，比如在&lt;code&gt;main.c&lt;/code&gt;文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# include&amp;lt;stdio.h&amp;gt;
# include&quot;test.h&quot;
//extern int i; 不用写了
//extern int j;不用写了
//extern int k;不用写了
//...
//声明很多很多变量,都不用写了，因为包含了头文件，声明都在头文件中
int main()
{
    printf(&quot;%d %d %d&quot;,i,j,k);
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h3&gt;extern的用法总结&lt;/h3&gt;
&lt;p&gt;extern一般用于声明，在.h文件中，声明变量或者函数（函数可以不加extern，但是最好加上，这样比较统一）；在其他文件要访问该变量函数时候，包含头文件就行哦。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;二. extern “C” 的理解和用法&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;在C++中，&lt;code&gt;extern&quot;C&quot;&lt;/code&gt;修饰的语句是按照C语言的方式进行编译的&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;怎么理解这句话呢？&lt;/p&gt;
&lt;p&gt;我来举几个例子：（理解它&lt;code&gt;extern&quot;C&quot;&lt;/code&gt;的含义）
我们知道在C++中函数是可以发生重载的，即编译的时候并不会报错,在C语言中，是没有重载的说法的;那么假如我用&lt;code&gt;extern&quot;C&quot;&lt;/code&gt;去修饰重载的函数的话，即在编译时候，就会按照C语言的方式去编译了：
这个时候，就会发生错误；
看例子：创建一个main.cpp文件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# include&amp;lt;iostream&amp;gt;
using namespace std;

extern &quot;C&quot; void func() //用 extern&quot;C&quot;修饰
{
}
extern &quot;C&quot; void func(int v)//用 extern&quot;C&quot;修饰
{
}

int main()
{
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;看下面的报错信息，不允许重载啊，本来我C++文件就是可以重载的，但是&lt;strong&gt;用extern“C”修饰过后，就不可重载函数了，这就是按照C的编译方式编译&lt;/strong&gt;，假如按C++编译方式编译那就是能通过的。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./CC++%E6%B7%B7%E7%BC%96%E4%BB%A5%E5%8F%8Aextern%E7%94%A8%E6%B3%95.assets/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5ZGL5ZaD5ZCW,size_20,color_FFFFFF,t_70,g_se,x_16.png&quot; alt=&quot;Image 2: 在这里插入图片描述&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;code&gt;extern&quot;C&quot; &lt;/code&gt;也是可以修饰声明函数的，也说明该函数时&lt;strong&gt;按照C语言的方式编译&lt;/strong&gt;；&lt;/p&gt;
&lt;p&gt;看看下面的例子：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# include&amp;lt;iostream&amp;gt;
using namespace std;

extern &quot;C&quot; void func() //用 extern&quot;C&quot;修饰
{
}
 void func(int v) //这个不用extern“C”声明
 {
 }
int main()
{
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;上面的情况&lt;strong&gt;不会报错&lt;/strong&gt;，原因很简单：&lt;code&gt;extern &quot;C&quot; void func() { }&lt;/code&gt;按C语言方式编译，这个不会错；&lt;code&gt;void func(int v){ }&lt;/code&gt;按C++方式编译，所以也不会报错，这两者虽然函数名字相同，但是他们时按照不同的编译方式编译的，所以不报错；&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;extern&quot;C &quot;使用 在C与C++混合开发中的使用方式&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;通常在C++ 中，假如需要使用C语言中的库文件的话，可以使用&lt;code&gt;extern &quot;C&quot;&lt;/code&gt;去包含&lt;/strong&gt;；&lt;/p&gt;
&lt;p&gt;那如何使用呢？接下来我一步一步带你理解如何使用，先举几个例子。&lt;/p&gt;
&lt;p&gt;比如：创建math.c（C文件）中，有一些函数是数学的加法和减法功能函数。
我想在main.cpp文件中使用math.c文件中的函数，如何使用呢？
第一种办法：&lt;strong&gt;在main.cpp文件用extern&quot;C&quot;包含math.c文件中的你想用的函数。&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;//math.c文件

int add (int x,int y)//加法
{
    return x+y;
}
int sub(int x,int y)//减法
{
    return x-y;
}
int mult(int x,int y)//乘法
{
    return x*y;
}
int div(int x,int y) //除法
{
    return x/y;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;main.cpp（C++文件）中，要使用math.c文件中的函数.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;//main.cpp文件
#include&amp;lt;iostream&amp;gt;
using namespace std;
extern “C” //用extern“C”{ }声明math.c文件中的函数，以至于可以在main.cpp文件使用。
{
    int add (int x,int y);
    int sub(int x,int y);
}

int main()
{
    cout&amp;lt;&amp;lt;add(10,20)&amp;lt;&amp;lt;endl; //由于有声明该函数，所以访问成功，结果30
    cout&amp;lt;&amp;lt;sub(10,20)&amp;lt;&amp;lt;endl;//由于有声明该函数，所以访问成功，结果-10
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;第二种使用方式：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;假如我有一个需求，我想在main.cpp文件，用math.c文件中的其他函数，比如除法函数，乘法函数；
那么我就只能在 main.cpp 中 extern&quot;C&quot;{ }的括号中，逐个的加上这两个函数；这好像也可以正常使用没问题，但是，&lt;strong&gt;这很麻烦啊，别人使用你的.c库时候会先得非常麻烦&lt;/strong&gt;。所以我们一般&lt;strong&gt;使用头文件的方式，即创建多一个头文件math.h，在math.h里声明函数，在math.c文件定义函数，在main.cpp，即要使用该库文件里面，用extern&quot;C&quot;{ } ,在括号里包含该math.h头文件即可&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;看下math.h头文件内容：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// math.h文件的内容
int add (int x,int y);//加法
int sub(int x,int y);//减法
int mult(int x,int y);//乘法
int div(int x,int y); //除法
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在math.c中定义函数&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;//math.c文件

int add (int x,int y)//加法
{
    return x+y;
}
int sub(int x,int y)//减法
{
    return x-y;
}
int mult(int x,int y)//乘法
{
    return x*y;
}
int div(int x,int y) //除法
{
    return x/y;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这时候我们只要在main.cpp文件中，用extern “C”{ }包含该头文件就可以使用了。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;//main.cpp文件
#include&amp;lt;iostream&amp;gt;
using namespace std;

extern&quot;C&quot;{ //包含头文件，该里面是C语言方式编译的。
    # include&quot;math.h&quot;
}

int main()
{
    cout&amp;lt;&amp;lt;add(10,20)&amp;lt;&amp;lt;endl; //由于有声明该函数，所以访问成功，结果30
    cout&amp;lt;&amp;lt;sub(10,20)&amp;lt;&amp;lt;endl;//由于有声明该函数，所以访问成功，结果-10
    cout&amp;lt;&amp;lt;mutl(10,20)&amp;lt;&amp;lt;endl;
    cout&amp;lt;&amp;lt;div(10,20)&amp;lt;&amp;lt;endl;

    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样就可以正常使用了。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;但是，上面的使用方式还是不太好，该方式还是有一定的问题，什么问题呢？&lt;strong&gt;就是我在main.cpp文件使用&lt;code&gt;extern &quot;C&quot;{ #include&quot;math.h&quot;}&lt;/code&gt; ,即要多写一个 &lt;code&gt;extern&quot;C&quot;{ }&lt;/code&gt;,显得格外麻烦，再说了，假如还有其他Cpp文件要用这个C语言的库呢。都是这种方式，&lt;code&gt;extern&quot;C&quot;&lt;/code&gt;太麻烦啦&lt;/strong&gt; 。我们之前都是直接&lt;code&gt;#include&quot;math.h&quot;&lt;/code&gt;,这样才是我们平时的使用习惯呢。&lt;/p&gt;
&lt;p&gt;所以有了这&lt;strong&gt;第三种使用方式&lt;/strong&gt;：（&lt;strong&gt;为的是直接在main.cpp中，#include&quot;math.h&quot;就可以使用，不用多谢extern&quot;C&quot;）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;直接在&lt;code&gt;math.h&lt;/code&gt;中，用&lt;code&gt;extern&quot;C&quot;&lt;/code&gt;的方式修饰就行啦。那么我就可以在&lt;code&gt;main.cpp&lt;/code&gt;直接&lt;code&gt;#include&quot;math.h&quot;&lt;/code&gt;。
(代码就不写啦，文字可以理解就行)&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;上面的使用有并不是完全好的方式，如何说呢？假如我有一个&lt;code&gt;.c&lt;/code&gt;文件，创建为&lt;code&gt;other.c&lt;/code&gt;，我这个文件呢，也想使用&lt;code&gt;math.c&lt;/code&gt;的函数，那么我就可以在&lt;code&gt;other.c&lt;/code&gt;文件直接包含该&lt;code&gt;math.c&lt;/code&gt;文件就可以了，可是事实却不如所想，这样会报错，报错的原因是，由于在&lt;code&gt;math.h&lt;/code&gt;文件中，声明函数用了&lt;code&gt;extern&quot;C&quot;&lt;/code&gt;，而other.c文件&lt;code&gt;# include&quot;math.h&quot;&lt;/code&gt;，会包含里面的所有内容，包括里面的 &lt;code&gt;extern&quot;C&quot;&lt;/code&gt;, &lt;strong&gt;这个&lt;code&gt;extern&quot;C&quot;&lt;/code&gt;在&lt;code&gt;other.c&lt;/code&gt;文件，即C语言文件是不认识&lt;code&gt;extern&quot;C&quot;&lt;/code&gt;啊,所以会报错&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;下面展示&lt;strong&gt;报错的代码&lt;/strong&gt;，创建&lt;code&gt;other.c&lt;/code&gt;文件（C文件），里面包含&lt;code&gt;math.h&lt;/code&gt;文件(该文件有&lt;code&gt;extern&quot;C&quot;{ }&lt;/code&gt;声明方式 )&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;//other.c文件
# include&quot;math.h&quot;
//包含头文件，由于这是.c文件，不是.cpp文件。所以.c文件不认识extern&quot;C&quot;,所以会报错

void test()
{
    int ret = add(10,20);//报错，不认识，add.
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;所以如何解决上面问题呢？ 核心问题是，我希望有一种使用 extern&quot;C&quot;的方式，在C语言文件中，能够使用该库，在C++文件中也可以使用该库。&lt;/p&gt;
&lt;p&gt;要解决这个问题：
也是 &lt;strong&gt;第四种使用方式&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;由于编译器默认会在，&lt;strong&gt;你创建的任何一个.cpp文件中，默认定义一个宏 &lt;code&gt;#define __cplusplus&lt;/code&gt;,这个宏是你看不到的，是编译器默认给每个.cpp文件创建的，而在.c文件，即C语言的编译器，是没有这个宏的&lt;/strong&gt;，所以我们可以借助它，来在 math.h文件中使用下面的代码：&lt;/p&gt;
&lt;p&gt;看math.h的代码&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// math.h文件的内容

//意思是如果使用该头文件math.h的文件定义了__cplusplus，
//则下面代码到#endif都是有效的,在这里是 extern &quot;C&quot; { 有效
#ifdef __cplusplus
extern &quot;C&quot; {
#endif  //__cplusplus

int add (int x,int y);//加法
int sub(int x,int y);//减法
int mult(int x,int y);//乘法
int div(int x,int y); //除法

//意思是如果使用该头文件math.h的文件定义了__cplusplus，
//则下面代码到#endif都是有效的,在这里是 } 有效
#ifdef __cplusplus
}
#endif  //__cplusplus
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在main.cpp文件你直接包含该头文件math.h就可以使用了；
在other.c文件中你直接包含该头文件math.h就可以使用了；&lt;/p&gt;
&lt;p&gt;只要按上面的方式书写，那么就可以完美的解决了在C文件和C++文件中混用的问题；你既可以在.c文件使用该头文件，也可以在.cpp文件中使用该文件库。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第四种方式是最值得推荐的。&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;三. 总结&lt;/h2&gt;
&lt;p&gt;两者 extern 和 extern&quot;C&quot;有点区别：&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;extren 在C和C++中，都表示声明语句的意思；&lt;/li&gt;
&lt;li&gt;而 extern&quot;C&quot;是按C语言方式去编译文件；&lt;/li&gt;
&lt;li&gt;extern&quot;C&quot;只能在C++文件使用，extern在C和C++都可以使用；&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;https://blog.csdn.net/m0_46606290/article/details/119973574&lt;/p&gt;
</content:encoded></item></channel></rss>