-
紧致模型:与其他训练方法相反,我们表明,当使用有限离散化残差训练网络时,具有1000倍可训练参数的浅层和紧致神经网络可以学习复杂的解。 -
性能:使用FD计算PDE残差将自动微分限制为仅一阶AD,这大大降低了与评估高阶PDE损失相关的计算/内存成本(如PINN)。 与基于反向传播的解算器相比,我们实现了10倍的加速。 -
准确性:此外,使用精心设计的数值离散化方案处理存在不连续和不规则界面的空间梯度,将数学对称性和约束(例如,通过有限体积离散化实施的守恒定律)告知神经网络 在以训练点为中心的本地社区/体素中。 这些额外的数学约束提高了PDE在三维空间中学习的神经替代模型的规则性和准确性。 -
应用数学和机器学习的交叉授粉:JAX-DIPS使利用高级预处理程序成为可能(例如,请参阅 炒作 )在高性能科学计算社区中开发,用于更快、更准确地训练神经网络模型。
从 喷气发动机 进口 努皮 作为 jnp公司
从 jax_dips . _jaxmd模块 . 实用程序 进口 f32表格
从 jax_dips . 领域 进口 网格
从 jax_dips . 解算器 . 泊松 进口 教练
从 jax_dips . 实用程序 进口 国际奥委会
初始mesh_fn , 坐标_ at = 网格 . 建造 ( 三 ) #---------用于培训的网格节点
xc公司 = jnp公司 . 林斯空间 ( 克敏 , x最大值 , 编号(_T) , 数据类型 = f32表格 ) yc公司 = jnp公司 . 林斯空间 ( 伊敏 , ymax公司 , 纽约(_T) , 数据类型 = f32表格 ) 兹克 = jnp公司 . 林斯空间 ( zmin公司 , 求最大值 , 编号(_T) , 数据类型 = f32表格 ) gstate_tr(格式) = 初始化_网格_fn ( xc公司 , yc公司 , 兹克 ) #--------级别集表示的网格节点
xc公司 = jnp公司 . 林斯空间 ( 克敏 , x最大值 , Nx(_lvl) , 数据类型 = f32表格 ) yc公司 = jnp公司 . 林斯空间 ( 伊敏 , ymax公司 , Ny_lvl(新阀) , 数据类型 = f32表格 ) 兹克 = jnp公司 . 林斯空间 ( zmin公司 , 求最大值 , 编号_ lvl , 数据类型 = f32表格 ) gstate_lvl(gstate_lvl) = 初始化_网格_fn ( xc公司 , yc公司 , 兹克 ) #----------可视化网格点
不包括 = jnp公司 . 林斯空间 ( 克敏 , x最大值 , Nx值(_E) , 数据类型 = f32表格 ) eyc公司 = jnp公司 . 林斯空间 ( 伊敏 , ymax公司 , Ny值(_E) , 数据类型 = f32表格 ) 电子战司令部 = jnp公司 . 林斯空间 ( zmin公司 , 求最大值 , 数值(_E) , 数据类型 = f32表格 ) 评估_状态 = 初始化_网格_fn ( 不包括 , eyc公司 , 电子战司令部 ) #----------定义神经网络代理架构和优化器
优化器字典 : 字典 = { “优化器名称” : “自定义” , “学习_比率” : 1e-3号机组 , “计划” : { “调度程序名称” : “指数” , “衰减速率” : 0.9 }, } 模型_ ict : 字典 = { “名称” : 无 , “模型类型” : “mlp” , “mlp” : { “隐藏层_m” : 1 , “隐藏_尺寸_ m” : 1 , “激活_m” : “jnp.tanh” , “隐藏层_p” : 2 , “隐藏_dim_p” : 10 , “激活_p” : “jnp.tanh” , }, } #----------定义、实例化,然后训练/解决泊松问题
初始化(_fn) = 教练 . 设置 ( 初始值 , 目录_bc_fn , phi_fn , mu_m_fn , 多个_文件 , k _ m _ f n , k_p_fn(千帕_芬) , f_米fn , f_p-fn , 字母fn , beta_fn(贝塔_芬) , 非线性算子m , 非线性算子p , ) 模拟状态 , 解算器fn = 初始化(_fn) ( lvl_g状态 = gstate_lvl(gstate_lvl) , tr_g状态 = gstate_tr(格式) , 评估_状态 = 评估_状态 , 纪元(_E) = 纪元(_E) , 批处理大小 = 批处理大小 , 多gpu = 多gpu , 检查点_间隔 = 检查点_间隔 , 结果_目录 = 日志目录 , 优化器字典 = 最优(_D) , 模型_ ict = 模型_ ict , ) 模拟状态 , epoch存储 , 损失(_E) = 解决_fn ( 模拟状态 = 模拟状态 ) #----------将结果保存在vtk文件中
评估(eval_phi) = vmap(虚拟机应用程序) ( phi_fn )( 评估_状态 . R(右) ) 日志 = { “φ” : 评估(eval_phi) , “u” : 模拟状态 . 解决方案 , } 存储名称 = 日志目录 + "/" + 分子_名称
国际奥委会 . 写入vtk手册 ( 评估状态 , 日志 , 文件名 = 存储名称 )
型号: model_type:“mlp” 百万像素: 隐藏层:1 隐藏_尺寸_ m:3 activation_m:“jnp.tanh” 隐藏层:2 隐藏_dim_p:10 激活p:“jnp.tanh” 资源网: res_blocks_m:3个 res_dim_m:40 激活m:“nn.tanh” res_blocks_p:3个 res_dim_p:80 激活p:“nn.tanh”
解算器: 优化: optimizer_name:“custom”#选项包括“自定义”、“adam”、“rmsprop”、“lbfgs” 学习_比率:1e-3 sched:#学习速率调度器 scheduler_name:“指数”#选项为“指数”、“多项式” 衰减速率:0.9
测试_建议 :球体围绕长方体旋转360度以复制初始配置。 水平集函数中的L2误差应小于1e-4才能通过。平流采用半拉格朗日格式进行,并重新初始化Sussman。 测试_初始化 :从球体内部为-1、外部为+1的球体级别集函数开始,我们重复执行Sussman重新初始化,直到级别集的签名距离属性实现。 长方体的中心应具有与球体半径相等的水平设置值,长方体拐角应处于预先指定的距离才能通过。 测试几何集成 积分球体的表面积及其体积。 预计与相关理论值的微小差异将被忽略。 测试噪音 :在恒星和球体界面上测试逐点和基于网格的泊松解算器。 请注意,在当前实现中,基于网格的解算器不支持批处理,因此速度更快。 将在未来版本中修复此问题。
./create_virtualenv.sh
-
Nvidia驱动程序 apt-install$(nvidia-detector) 或者使用 Synaptic公司 要安装的包管理器 nvidia驱动-535 . -
Docker引擎 请参阅 https://docs.docker.com/engine/install/ubuntu(https://docs.docker.com/engine/install/ubuntu)/ -
英伟达码头2 请参阅 https://nvidia.github.io/nvidia-docker网址/ 设置apt repo apt-get安装nvidia-docker2
IMAGE_NAME=docker.io/porion/jax_dips:可下载的最新#默认docker图像! 如果您想构建新的docker映像并将其推送到您首选的docker注册表,请更改此项 DATA_PATH=/DATA/#docker容器内的默认数据路径,将镜像DATA_MOUNT_PATH目录 DATA_MOUNT_PATH=/DATA#机器内的默认数据装入路径,将镜像到docker容器的DATA_PATH目录 RESULT_PATH=/results/#docker容器内的默认结果路径 RESULT_MOUNT_PATH=/results/#计算机内的默认结果装载路径 REGISTRY=<your-preferred-REGISTRY-name>#(可选)选项包括docker.io(默认)、nvcr.io、ghcr.io等。 REGISTRY_USER=<your-REGISTRY-username>#(可选)连接到docker注册表的用户名 REGISTRY_ACCESS_TOKEN=<您的注册表访问令牌>#(可选)连接到docker注册表的访问令牌 WANDB_API_KEY=未指定#(可选)连接到权重和偏差服务的API密钥 JUPYTER_PORT=8888#(可选)端口,用于连接到JUPYTER服务器
./launch.sh拉动
./launch.sh版本
./launch.sh开发
./launch.sh开发-d
./launch.sh附加
@文章 { mistani2022jax , 标题 = { JAX-DIPS:有限离散化方法的神经自举及其在不连续椭圆问题中的应用 } , 作者 = { 米斯塔尼、波利亚和帕克拉万、萨米拉和伊兰戈、拉杰什和吉布、弗雷德里克 } , 杂志 = { arXiv预打印arXiv:2210.14312 } , 年 = { 2022 } } @文章 { mistani2022神经 , 标题 = { 神经符号偏微分方程求解器 } , 作者 = { 米斯塔尼、波利亚和帕克拉万、萨米拉和伊兰戈、拉杰什和乔德利、桑杰和吉布、弗雷德里克 } , 杂志 = { arXiv预打印arXiv:2210.14907 } , 年 = { 2022 } }
报告错误。 要报告错误,请在GitHub中打开问题 问题 . 建议增强功能。 要提交增强建议,包括新特性或对现有功能的改进,请通过在GitHub中打开问题让我们知道 问题 . Pull请求。 如果您对JAX-DIPS进行了改进,修复了一个错误,或者添加了一个新示例,请随时向我们发送一个拉请求。