![](https://img-blog.csdnimg.cn/327ba3934d8d4620976ac1b110fd2f45.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Deep learning
文章平均质量分 80
有完整代码,针对初学PINN的同学友好,对于其他方向无明显帮助。里面包括deep ritz,deep Galerkin,cuda的使用,如果看不懂这些概念建议不要订阅
如果想不付费了解博客质量,参考https://www.zhihu.com/people/201611123本人知乎主页
优惠券已抵扣
余额抵扣
还需支付
¥239.90
¥399.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
Galerkin码农选手
这个作者很懒,什么都没留下…
展开
-
torch.nn.DataParallel实现深度学习求解PDE数据并行
泊松方程{−Δu=f, in Ω,u=g, on ∂Ω,\left\{\begin{aligned} -\Delta u &=f, \text { in } \Omega, \\ u &= g ,\text { on }\partial \Omega,\\ \end{aligned}\right.{−Δuu=f, in Ω,=g, on ∂Ω,这里我们选取原创 2023-08-02 13:31:47 · 600 阅读 · 0 评论 -
pytorch实现导热率优化控制问题的并行算法
问题来源于论文Reduced Basis Methods—An Application to Variational Discretization of Parametrized Elliptic Optimal Control Problems问题描述{miny(μ),u(μ)J(y(μ),u(μ))=12∥y(μ)−yd∥L2(Ω)2+α2∥u(μ)∥L2(Ω)2, subject to {−∇⋅(a(μ)⋅∇y(μ))=u(μ), in Ω,y(原创 2023-05-29 15:01:42 · 769 阅读 · 0 评论 -
深度ritz方法求解高维泊松方程
此时样本数目过于庞大,一定会导致训练特别耗时。为此可以采取的策略是,每训练一定次数,就重新撒点,对于边界点也是类似的。举例子,如果我们在区域内部采集1000个样本点,扩散到每个维度,那么每个维度最多采集了2个点,因为。,这样导致样本数目过小,如果一开始每个维度采集20个点,那么需要采集的样本数目就是。长度因子需要满足在边界上取值为0,在内部区域恒大于0.,利用netg训练边界数据,构建均方误差函数,训练完以后netg满足。表示区域维度,这里我们使用PFNN算法来求解这个问题。即可,这个思想非常简单。原创 2023-05-03 10:10:33 · 1065 阅读 · 0 评论 -
深度学习求解一维burgers方程和Galerkin求解泊松方程
{ut+uux−(0.01/π)uxx=0,x∈[−1,1],t∈[0,0.99],u(0,x)=−sin(πx),u(t,−1)=u(t,1)=0.\left\{\begin{array}{l}u_t+u u_x-(0.01 / \pi) u_{x x}=0, \quad x \in[-1,1], \quad t \in[0,0.99], \\ u(0, x)=-\sin (\pi x), \\ u(t,-1)=u(t, 1)=0 .\end{array}\right.⎩⎨⎧ut+uux−(0.0原创 2023-04-09 09:51:42 · 1366 阅读 · 0 评论 -
PDE的mpi4py深度学习区域分解并行算法-NS方程和泊松方程
−ΔuufinΩgon∂Ω这里我们选取Ω012。原创 2023-03-21 21:26:10 · 711 阅读 · 4 评论 -
PDE约束优化控制问题-NN结合DAL
引入算例基本形式minu∈Uad,yJ(y,u)=12∥y−yd∥L2(Ω)2+α2∥u∥L2(Ω)2,Ω=[0,1]d. s.t. {−Δy=u,in Ω,y=y0,on ∂Ω.\begin{aligned} &\min_{u \in U_{ad},y} J(y,u) = \frac{1}{2}\|y - y_d\|^{2}_{L^{2}(\Omega)} + \frac{\alpha}{2}\|u\|^2_{L^{2}(\Omega)} ,\quad \Ome原创 2022-02-16 19:44:23 · 189 阅读 · 0 评论 -
PDE约束优化控制问题-神经网络结合惩罚函数求解
算例引入这里我们以下面这个算例为根本,相继介绍神经网络+penalty以及神经网络+ALM如何求解约束优化问题。miny,uJ(y,u)=12∫Ω(y−yΩ)2+u2dxdy+∫∂ΩeΓyds. s.t. −Δy+y=u+eΩ,x∈Ω,∂y∂n=0,x∈∂Ω.0≤u≤1.\begin{array}{cl} \min _{y,u} & J(y,u) = \frac{1}{2}\int_{\Omega} (y - y_{\Omega})^2 + u^2 dx d原创 2022-01-27 08:21:39 · 252 阅读 · 0 评论 -
PDE约束优化控制问题求解-间断问题
miny,uJ(y,u)=∫Ω(y−yΩ)2dxdy s.t. −Δy=u+eΩ,x∈Ω,y=0,x∈∂Ω.−1≤u≤1.\begin{array}{cl} \min _{y,u} & J(y,u) = \int_{\Omega} (y - y_{\Omega})^2 dx dy \\ \text { s.t. } & - \Delta y = u + e_{\Omega},\mathbf{x} \in \Omega, \\{ }&y = 0, \math原创 2023-02-07 11:23:50 · 536 阅读 · 0 评论 -
PDE约束优化控制问题求解-基础入门
问题引入给出两个优化问题:问题1miny,uJ(y,u)=12∫Ω(y−yΩ)2+u2dxdy+∫∂ΩeΓyds. s.t. −Δy+y=u+eΩ,x∈Ω,∂y∂n=0,x∈∂Ω.0≤u≤1.\begin{array}{cl} \min _{y,u} & J(y,u) = \frac{1}{2}\int_{\Omega} (y - y_{\Omega})^2 + u^2 dx dy + \int_{\partial \Omega} e_{\Gamma}y原创 2021-08-06 10:05:06 · 389 阅读 · 0 评论 -
含参PDE(偏微分方程)的神经网络并行编程区域分解mpi4py
−Δu=f,x∈Ω=(0,1)2−Δu=f,x∈Ω=(0,1)2u=g,x∈∂Ωu=g,x∈∂Ωu=exp(−(x−a)2+(y−b)22l2),a,b,lu=exp(−2l2(x−a)2+(y−b)2),a,b,l是参数,其中a∈[0,1],b∈[0,1],l∈。原创 2022-12-14 12:05:18 · 629 阅读 · 0 评论 -
Fouier Net和DeepOnet等求解器算法解读和代码
首先还是先给定一个泊松方程,其中区域 Ω=[0,1+μ1]×[0,1],μ1∈[1,3]Ω=[0,1+μ_1]×[0,1],μ_1∈[1,3]Ω=[0,1+μ1]×[0,1],μ1∈[1,3] ,边界条件 g=1g=1g=1 。−Δu=f,x∈Ω,u∣∂Ω=g.−Δu=f,x∈Ω,\\u|∂Ω=g.−Δu=f,x∈Ω,u∣∂Ω=g.以往的传统数值方法都是针对固定的一个右端项求出一个对应的数值解,这种做法的核心是构造一个输入节点数目为2,输出节点数目为1的模型(有限元句柄函数或者全连接神经网络),基原创 2022-11-21 16:04:32 · 3588 阅读 · 3 评论 -
NS方程求解-PointNet和升维思想(效果很差)
PointNet求解NS方程参考文献:Kashefi, A. , and T. Mukerji . “Physics-Informed PointNet: A Deep Learning Solver for Steady-State Incompressible Flows and Thermal Fields on Multiple Sets of Irregular Geometries.” (2022).PointNet网络的特点在于中间通过pool提取过一次全局特征,这个特点导致一个问题。原创 2022-04-14 11:27:45 · 2343 阅读 · 0 评论 -
CNN实现MNIST数据集的图片分类
MNIST数据集是图片,因此可以对数据集进行一个修改,得到[N,1,28,28]的数据集,其中N是batch,1是输入维度,如果是RGB图像输入维度就是3,28*28是图片的宽和高。这里面还没引用batchnorm,pool。先引入全连接神经网络预测MNIST的代码,为了方便后面修改为CNN网络,这里网络的输入参数引入了input_dim=784,hid_layers表示隐藏层数目和全连接层数目。1维卷积的引入可以降低参数量,但是发现引入卷积运算以后,代码训练速度明显慢了很多,这里值得考虑。原创 2022-08-20 13:51:30 · 655 阅读 · 0 评论 -
卷积神经网络结合ESMM求解ctrcvr问题
先介绍1维卷积网络的使用,nn.Conv1d接受的4个主要参数如下,in_channels是输入的维度,举例子来说一下,我们给出的推荐系统数据集的形状是:[N,213]表示有N条广告,每一条广告有213个特征,那么使用1维卷积的时候,需要先把数据集形状修改为[N,1,213],这个1也就是in_channels,最后经过卷积以后会得到一个形状为[N,out_channels,input_dim]的数据集,这里面input_dim的计算如下所示。下面直接放代码,数据集参考我上一篇论文的github网站。...原创 2022-08-12 11:01:14 · 472 阅读 · 0 评论 -
推荐算法中CTR和CVR的ESMM模型pytorch实现
CTR和CVR来源于https点击率CTR(clickthroughrate)假设用户搜索一个物品,平台上展现了2000个结果,用户点击了300个,那么该物品广告的点击率就是300/2000.转化率CVR(conversionrate)x\mathbf{x}x,事件yyy只能取值为0或者1,其中y=0y=0y=0表示该广告没有被用户点击,y=1y=1y=1表示用户点击了该广告,事件zzz也只能取值0或者1,当z=0z=0z=0z=1。............原创 2022-08-02 16:53:17 · 900 阅读 · 0 评论 -
推荐系统中deepfm算法的pytorch实现
deepfm的pytorch实现原创 2022-07-27 17:16:28 · 897 阅读 · 2 评论 -
DSNN求解间断椭圆问题
−∇⋅(β∇ϕ)=f in Ω\Γ,[ϕ]=v,[β∂nϕ]=w, on Γ,ϕ∣∂Ω=ϕ0.-\nabla \cdot(\beta \nabla \phi)=f \quad \text { in } \Omega \backslash \Gamma, \quad[\phi]=v, \quad\left[\beta \partial_{n} \phi\right]=w, \quad \text { on } \Gamma,\phi|_{\partial \Omega原创 2022-05-02 16:19:10 · 769 阅读 · 0 评论 -
pytorch实现NS方程求解-基础PINN
问题描述Kovasznay problem参考文献:Dockhorn, T. . “A Discussion on Solving Partial Differential Equations using Neural Networks.” (2019).{−νΔu+uux+vuy+px=f1,−νΔv+uvx+vvy+py=f2,ux+vy=0,u∣∂Ω=u0,v∣∂Ω=v0.\left\{\begin{array}{l}-\nu \Delta u + uu_x + v u_y + p_x = f_原创 2022-04-14 10:59:15 · 6888 阅读 · 17 评论 -
NS方程求解-NSFnet
NSFnet求解CVD正问题参考文献: Yang, H. , F. N. Hwang , and X. C. Cai . “NONLINEAR PRECONDITIONING TECHNIQUES FOR FULL-SPACE LAGRANGE-NEWTON SOLUTION OF PDE-CONSTRAINED OPTIMIZATION PROBLEMS *.” Siam Journal on entific Computing (2016).其中γ=0.01,Re=1,Pr=0.72,Gr=1e原创 2022-04-14 11:13:58 · 2389 阅读 · 0 评论 -
NN拟合间断函数
参考文献:例子对于f=sin(2πx),x∈[0,0.5),f=cos(πx),x∈[0.5,1]f=sin(2\pi x),x \in[0,0.5),f=cos(\pi x),x \in[0.5,1]f=sin(2πx),x∈[0,0.5),f=cos(πx),x∈[0.5,1],该函数是间断的,无法使用NN直接拟合,因此采取升维做法,使用NN拟合F(x,z)=sin(2πx),(x,z)∈[0,0.5)×{−1},f=cos(πx),(x,z)∈[0.5,1]×{1}F(x,z)=sin(2\pi原创 2022-04-02 15:18:58 · 457 阅读 · 0 评论 -
含参泊松方程求解-初步探索
问题引入−Δu=f,x∈Ω=(0,1)2-\Delta u=f,x \in \Omega=(0,1)^2−Δu=f,x∈Ω=(0,1)2u=g,x∈∂Ωu=g,x \in \partial \Omegau=g,x∈∂Ωu=exp(−(x−a)2+(y−b)22l2),a,b,lu = \exp(-\frac{(x - a)^2 + (y - b)^2}{2l^2}),a,b,lu=exp(−2l2(x−a)2+(y−b)2),a,b,l是参数,其中a∈[0,1],b∈[0,1],l∈[0.1,1]原创 2022-03-16 15:42:02 · 983 阅读 · 0 评论 -
pytorch求解高维空间PDE
高维矩形空间的PDE求解−Δu=f,x∈Ω=[0,1]100-\Delta u =f,x\in\Omega=[0,1]^{100}−Δu=f,x∈Ω=[0,1]100u∣∂Ω=gu|_{\partial\Omega}=gu∣∂Ω=g与低维空间相比,高维空间的PDE求解几乎一样,唯一的区别就是采样点,低维空间里,一般采取均匀采样。但是高维空间里均匀采样实现比较复杂,为此直接使用torch.rand()函数实现不均匀采样。import torchimport torch.nn as nnimpor原创 2020-09-07 17:24:13 · 1376 阅读 · 2 评论 -
PFNN两个神经网络组合训练求解泊松方程
边界条件的自动匹配仍然考虑这个微分方程首先给出精确解以及采样过程:def U(X, order,prob): if prob==1: temp = 10*(X[:,0]+X[:,1])**2 + (X[:,0]-X[:,1])**2 + 0.5 if order[0]==0 and order[1]==0: return torch.log(temp) if order[0]==1 and order[1]==0:原创 2020-09-07 17:37:10 · 2955 阅读 · 0 评论 -
基于pytorch的PFNN求解高维空间的helmhotz方程
注意到这里使用两个神经网络训练,这个图片上的损失函数是针对非Dirichlet边界的。import torchimport timeimport numpy as npimport matplotlib.pyplot as pltimport torch.nn as nndef U(X): out = 0 for i in range(X.size(1) - 1):#100维 out += np.exp(-X[:,i]**2 - X[:,i + 1]**2) .原创 2020-12-30 22:07:54 · 745 阅读 · 0 评论 -
Galerkin与深度学习结合的算法求解PDE
矩形区域,Dirichlet边界条件考虑Dirichlet边值问题:−Δu=f,x∈Ω -\Delta u = f,x \in \Omega −Δu=f,x∈Ωu=φ,x∈ΓD=∂Ω. u = \varphi, x \in \Gamma_D=\partial\Omega.u=φ,x∈ΓD=∂Ω.下面这行代码就是精确解以及右端项函数的定义import numpy as npimport matplotlib.pyplot as pltimport torchimport tim原创 2020-10-13 16:10:39 · 1035 阅读 · 0 评论 -
有限元与深度学习结合求解泊松方程-Petrov
Petrov求解Dirichlet泊松方程泊松方程引入−Δu=f,x∈Ω=(0,1)2-\Delta u=f,x \in \Omega=(0,1)^2−Δu=f,x∈Ω=(0,1)2u=g,x∈∂Ωu=g,x \in \partial \Omegau=g,x∈∂ΩPetrov简介根据变分原理,对检验函数空间VVV,满足V={v∈H1(Ω):v=0,x∈∂Ω0}V = \{v \in H^{1}(\Omega):v = 0,x \in \partial \Omega_{0}\}V={v∈H1(Ω):原创 2021-03-10 15:08:22 · 1447 阅读 · 0 评论 -
NN求解NS方程进一步探讨
检验函数空间的选取前面的NS方程选取的检验函数都是一个一个基函数为模板,然后进行对应的缩放得到的,这个我们打印出所有的inset.v,inset.vx会发现里面的元素是一样的,其实很容易理解,当我们进行缩放以后,4个积分点相对于网格点的位置没变,所以取值应该一样。有这个思路以后,我们随机生成一组数,把这组数看成是我们的基函数的取值。为了方便说明,本人举一个例子:ψ(x,y)={(1−x)∗(1−y),0≤x≤1,0≤y≤1,(1+x)∗(1−y),−1≤x≤0,0≤y≤1,(1+x)∗(1+y),−1原创 2021-03-26 15:55:48 · 1068 阅读 · 0 评论 -
圆形区域函数可视化和泊松方程求解
针对泊松方程,我们设定圆形区域求解−Δu=f,x∈Ω=B(0,1)-\Delta u=f,x \in \Omega=B(0,1)−Δu=f,x∈Ω=B(0,1)u=g,x∈∂Ωu=g,x \in \partial \Omegau=g,x∈∂ΩB(0,1)表示以原点为中心的半径为1的圆形区域,这里重点关注样本点的采集和后面的画图训练网络import torchimport timeimport numpy as npimport matplotlib.pyplot as pltfrom ma原创 2022-01-20 19:06:52 · 1001 阅读 · 0 评论 -
高频问题的PFNN求解,自适应采样初步探索
高频问题介绍−Δu=f,x∈Ω=(0,1)2-\Delta u=f,x \in \Omega=(0,1)^2−Δu=f,x∈Ω=(0,1)2u=g,x∈∂Ωu=g,x \in \partial \Omegau=g,x∈∂Ωu=sin(ηπx)sin(ηπy),η=2,4,8u = \sin(\eta \pi x)\sin(\eta \pi y),\eta=2,4,8u=sin(ηπx)sin(ηπy),η=2,4,8高频问题使用传统方法求解效果很差import torchimport原创 2021-12-21 18:41:15 · 864 阅读 · 0 评论 -
Pelnaty free neural network重新实现和$\nabla A \nabla u =f$
这里展示PFNN的算法和代码具体算法做法参考文献PFNN: A Penalty-Free Neural Network Method for Solving a Class of Second-Order Boundary-Value Problems on Complex Geometries这个算法我以前实现过\url{https://blog.csdn.net/forrestguang/article/details/108452255},最近空闲时间打算整理一下以前的代码PFNN+PINN原创 2021-12-17 17:07:54 · 499 阅读 · 0 评论 -
torch.nn.Parameters用法以及PINN求解PDE和画图
PINN介绍和代码以前我的PINN代码一直都是接受(xi,yj)(x_i,y_j)(xi,yj)输出u(xi,yj)u(x_i,y_j)u(xi,yj){−Δu=f,inΩ,u=u0,on ∂Ω.\left\{\begin{array}{l} -\Delta u = f , \quad in \Omega,\\ u=u_0 ,\quad on \;\partial \Omega. \end{array}\right.{−Δu=f,inΩ,u=u0,on∂Ω.原创 2021-12-14 19:15:53 · 3306 阅读 · 2 评论 -
带权重的均匀采样策略-初步探索
普通算法考虑两个问题−Δu+u=f,x∈Ω=(0,1)2-\Delta u + u=f,x \in \Omega=(0,1)^2−Δu+u=f,x∈Ω=(0,1)2u=g,x∈∂Ωu=g,x \in \partial \Omegau=g,x∈∂Ωut−uxx−uyy−uzz=f,x∈Ω,u_t-u_{xx}-u_{yy}-u_{zz}=f,x\in \Omega,ut−uxx−uyy−uzz=f,x∈Ω,u(0,x,y,z)=u0,u(0,x,y,z)=u_0,u(0,x,y,z)=u0原创 2021-10-28 20:58:28 · 402 阅读 · 0 评论 -
pytorch的cuda编程and ResNet
GPU训练前提:电脑里得有显卡图片最底下那个NVDIA就是我们需要的显卡。我们仍然以求解泊松方程为例,这里不多说,只是单纯给出在哪些地方需要使用cuda。pinn在损失函数Lossf,error这两个函数定义中需要把数据传输到设备cuda上。这里特别要注意torch.autograd.grad函数的使用。只放代码:import torchimport timeimport numpy as npimport matplotlib.pyplot as pltimport torch.n原创 2021-07-11 13:09:05 · 542 阅读 · 1 评论 -
pytorch实现solver求解泊松方程
基本思想对于泊松方程,固定边界条件,则对于任意一个右端项函数fff,方程确定了一个解uuu,由此引出一个从函数空间FFF到函数空间UUU的一个映射G:F→UG:F \rightarrow UG:F→UG(f)=uG(f) = uG(f)=u在区域Ω\OmegaΩ随机采样{xj}j\{\bm x_j\}_j{xj}j,得到对应的右端项取值{f(xj)}j\{f(\bm x_j)\}_j{f(xj)}j.接着使用某种传统方法(例如有限差分)得到近似解{u~(xj)}j\{\tilde u(\bm原创 2021-06-18 19:27:40 · 823 阅读 · 0 评论 -
区域分解与并行计算
区域分解算法以下都以泊松方程来举例问题引入给定二维空间的泊松方程:−Δu=f,x∈Ω-\Delta u = f,x \in \Omega−Δu=f,x∈Ωu=g,x∈∂Ωu = g,x \in \partial \Omegau=g,x∈∂Ω我们把区域分成若干部分分别求解,然后相邻区域做一个通信,这样就可以得到一个并行算法。下面我们先把区域分成两部分做一个介绍:考虑区域Ω1,Ω2\Omega_1,\Omega_2Ω1,Ω2其中红色的是Ω1\Omega_1Ω1,蓝色的是Ω2\Omega原创 2021-05-27 09:23:52 · 1811 阅读 · 3 评论 -
基于全连接网络的MNIST识别
MNIST数据这里大家都知道MNIST数据集是啥,所以不做过多说明,只放代码:import numpy as npimport matplotlib.pyplot as pltimport torchfrom struct import unpackimport gzipimport torch.nn as nnimport timenp.random.seed(1234)def __read_image(path): with gzip.open(path, 'rb') as原创 2021-05-08 10:41:22 · 468 阅读 · 0 评论 -
基于pytorch的PINN求解含时间项的泊松方程
方程引出ut−uxx−uyy−uzz=f,x∈Ω,u_t-u_{xx}-u_{yy}-u_{zz}=f,x\in \Omega,ut−uxx−uyy−uzz=f,x∈Ω,u(0,x,y,z)=u0,u(0,x,y,z)=u_0,u(0,x,y,z)=u0,u(t,x,y,z)=h,(x,y,z)∈∂Ωu(t,x,y,z)=h,(x,y,z)\in \partial \Omegau(t,x,y,z)=h,(x,y,z)∈∂Ω这里同样使用PINN来求解方程。难点第一个困难在于我们需要给出几原创 2021-05-06 11:35:57 · 3041 阅读 · 4 评论 -
PINN求解PDE
PINN求解Dirichlet泊松方程泊松方程引入−Δu=f,x∈Ω=(0,1)2-\Delta u=f,x \in \Omega=(0,1)^2−Δu=f,x∈Ω=(0,1)2u=g,x∈∂Ωu=g,x \in \partial \Omegau=g,x∈∂Ωimport torchimport timeimport numpy as npimport matplotlib.pyplot as pltimport torch.nn as nndef UU(X, order,prob):原创 2021-04-18 22:30:47 · 2839 阅读 · 1 评论 -
深度学习方法求解二维空间的PDE
这里先介绍最简单的二维空间的矩形区域,使用的工具主要是pytorch。算法的核心是利用极小位能原理(参考微分方程数值解),将偏微分方程转换为一个soblev泛函空间求极小问题。原创 2020-09-07 17:14:30 · 1860 阅读 · 0 评论 -
神经网络求解NS方程
问题引出−ν∇2u+u⋅∇u+∇p=f in Ω∇⋅u=0 in Ωu=g on ∂\begin{aligned}-\nu \nabla^{2} \boldsymbol{u}+\boldsymbol{u} \cdot \nabla \boldsymbol{u}+\nabla p &=\boldsymbol{f} & & \text { in } \Omega \\\nabla \cdot \boldsymbol{u}原创 2021-03-22 18:54:48 · 2196 阅读 · 3 评论