当前位置: 首页 > news >正文

deeponet(nature原文部分重点提取)

论文链接:Learning nonlinear operators via DeepONet based on the universal approximation theorem of operators | Nature Machine Intelligence

原文部分重点提取

DeepONets 会产生小的泛化误差

隐式类型算子还可以描述我们对其形式没有任何数学知识的系统

DeepONets 中的训练数据集大小是输入函数 u 的数量和 G(u) 的评估位置 y 的数量的乘积。

在使用结构化数据从偏微分方程学习算子时,一些工作将输入和输出函数视为图像,然后使用卷积神经网络(CNN)来学习图像到图像的映射 G(参考文献 1)。),但这种方法只能应用于特定类型的问题,其中

选择了 16 个测试用例来研究对空间 V 进行采样的重要问题。这些示例包括积分、勒让德变换、分数阶导数、非线性 ODE 和 PDE,以及随机 ODE 和 PDE。

G : u ↦ G(u) 它需要两个输入 [u(x), u(x), …, u(x)] 和 y

令 G 为采用输入函数 u 的运算符,G(u) 为相应的输出函数。对于 G(u) 域中的任意点 y,输出 G(u)(y) 是实数。因此,网络的输入由两部分组成:u 和 y,输出为 G(u)(y)

一般来说,输入没有任何特定的结构,因此我们使用 FNN 和 ResNet 作为基线模型(branch分支中)。为了将 DeepONets 与其他模型进行比较,我们还考虑将 CNN 或 RNN 作为特定问题和数据集的一些示例中的基线。

在本研究中,我们所有的训练数据集都是从数值求解器获得的;

 函数 g 和 f 可以选择为不同类别的神经网络,满足函数的经典万能逼近定理,例如(堆叠/非堆叠)全连接神经网络FNN、残差神经网络resnet和卷积神经网络CNN。

我们主要考虑以下函数空间:高斯随机场(GRF)、谱表示并将输入函数表示为图像。我们注意到,一个数据点是一个三元组 (u, y, G(u)(y)),因此特定输入 u 可能出现在具有不同 y 值的多个数据点中。例如,大小为 10,000 的数据集只能从 100 个u 轨迹生成,并且每个轨迹在 100 个不同的 y 位置评估 G(u)(y)。此外,对于不同的u,y的数量和位置可能不同。在我们的数据集中,对于每个 u,我们在 G(u) 域中随机选择 P 个不同的 y 点,因此数据点的总数等于 P ×u。

案例2d:

这个案例可以发现是将定义域从一维映射到二维

初始条件或边界条件的值为零

"Zero initial/boundary conditions"

数学和物理学中常用的术语,尤其是在涉及微分方程、偏微分方程、流体动力学、电磁学等领域时。指的是在求解某些方程时,所施加的初始条件或边界条件的值为零。

1. Zero Initial Conditions(零初始条件)

  • 定义:初始条件指定了在时间 ( t = 0 ) 时,系统或方程的状态。在零初始条件下,系统的初始状态被设定为零。
  • 举例:假设你在求解一个振动系统(例如弹簧振子),零初始条件意味着在 ( t = 0 ) 时,位移和速度都为零,即 ( x(0) = 0 ) 和 ( v(0) = 0 )。

2. Zero Boundary Conditions(零边界条件)

  • 定义:边界条件用于描述在空间某些特定位置(通常是系统的边界)上的解的行为。零边界条件指的是在边界上的解值为零。
  • 举例:假设你在求解热传导问题,零边界条件意味着在边界的温度为零,类似于在求解一个固体物体的热分布时,边界上的温度为零,即 ( T(x = 0) = 0 ) 或 ( T(x = L) = 0 ),其中 ( L ) 是物体的长度。
总结:
  • 零初始条件:意味着在时间 ( t = 0 ) 时,系统的状态(例如位移、速度、温度等)为零。
  • 零边界条件:意味着在空间边界上的值为零,常用于描述某些物理量在边界处的行为。

这些条件在物理学、工程学和其他应用科学中通常用于简化问题,帮助数学模型更容易求解。

总结中提到deeponet-fno代码中电对流案例

更广泛地说,DeepONet 可以代表一个多尺度算子,该算子使用时空尺度上多个数量级的数据进行训练,例如,使用流体力学或其他多尺度问题中的分子、介观和连续介质体系的数据进行训练。我们还可以设想其他类型的复合 DNN,用于开发多物理场算子,例如,在电对流中,由于外加电势的连续变化,涉及阴离子和阳离子的流场和浓度场的演变。事实上,在正在进行的工作中,我们开发了 DeepONet 的扩展来模拟这种电对流多物理场问题,我们表明 DeepONet 比谱元求解器快得多。我们在高超音速方面获得了类似的加速和高精度,用于学习空气动力学以及多个物种的有限速率化学。如果泛化误差是有界的,学习这种多尺度和多物理场非线性算子将简化计算建模,并且有助于以良好的精度快速预测未见过的新参数值和新输入函数(边界/初始条件/激励)的复杂动力学。

后续:找了一下代码看还没有开发,issue中也没有提到截至目前

issue中提到可以用带有时间的2D或者3d数据,作者提到deeponet输入和输出有不同的可能方式。

url:Handling 3D data like time evolution of 2D fluid flow. · Issue #2 · lu-group/deeponet-fno · GitHub

问题:

现在,我想使用 DeepONet 解决流动问题。我的输入是维度(样本、高度、宽度、时间)或对应于不同时间步骤的图像,这些图像描述了流动的演变。具体来说,我的输入是从 t = 1 到 m 个时间步骤的速度,我想预测接下来的 n 个时间步骤的速度 [batch, :,:,:m] -> [batch,:,:, m: m+n]。

我应该如何预处理此类问题的数据?是否有使用 deepOnet 的此类流问题的代码实现?

另外,我们可以使用类似 FNO-2D-time 的 DeepOnet(更多是 RNN 类型结构)吗?

作者答案:是的,您可以使用 DeepONet。输入和输出有不同的可能方式。最简单的方法是使用时间步 t 作为输入,使用时间步 t+1 作为输出。或者您可以使用多个时间步作为输入

自己案例可以考虑用deeponet的情况

预测所有时间上的位移

可以考虑每个点的位移共3159个

input_branch(500,3159,3)   input_trunk:time(500)  

output:(500,3159,3)

上个时间预测下个时间上的

input_branch(500,3159,3)   input_trunk:数字range(3159,3)

output:(500,3159,3)

其他待实现想法

上个时间到下个时间位移的映射,也就是位移量的算子(能不能用流体固体合在一起?或者用两个deeponet让下一个时间的流固体位移总损失最小做为损失函数?也可以考虑流体到固体坐标(耦合算子)的映射行不行?)

http://www.lryc.cn/news/483229.html

相关文章:

  • LeetCode【0036】有效的数独
  • Typecho登陆与评论添加Geetest极验证,支持PJAX主题(如Handsome)
  • 前端入门一之ES6--面向对象、够着函数和原型、继承、ES5新增方法、函数进阶、严格模式、高阶函数、闭包
  • 脑机接口、嵌入式 AI 、工业级 MR、空间视频和下一代 XR 浏览器丨RTE2024 空间计算和新硬件专场回顾
  • RoseTTAFold MSA_emb类解读
  • 2411C++,C++26反射示例
  • Ubuntu上搭建Flink Standalone集群
  • C语言 精选真题2
  • Netty篇(WebSocket)
  • 云原生-docker安装与基础操作
  • MySQL数据库:SQL语言入门 【上】(学习笔记)
  • 重学 Android 自定义 View 系列(六):环形进度条
  • nodejs 020: React语法规则 props和state
  • STM32问题集
  • SwiftUI(十二)- 容器组件 布局与结构的基石
  • 想租用显卡训练自己的网络?AutoDL保姆级使用教程(PyCharm版)
  • LeetCode【0039】组合总和
  • AscendC从入门到精通系列(一)初步感知AscendC
  • PostgreSQL中的COPY命令:高效数据导入与导出
  • 【HAL库】STM32F105VCTx多通道ADC+DMA方式的【STM32CubeMX】配置及代码实现
  • [SaaS] 数禾科技 AIGC生成营销素材
  • vue3中查找字典列表中某个元素的值对应的列表索引值
  • 爱普生机器人EPSON RC
  • Linux探秘坊-------1.系统核心的低语:基础指令的奥秘解析(1)
  • ❤React-JSX语法认识和使用
  • 51单片机应用开发(进阶)---定时器应用(电子时钟)
  • JavaScript中的对象-栈内存和堆内存以及this指向的两种情况(后续会出进阶)
  • shell脚本使用curl上传FTP
  • 【漏洞分析】Fastjson最新版本RCE漏洞
  • 【项目开发 | 跨域认证】JSON Web Token(JWT)