美文网首页
神经网络近似解析结果

神经网络近似解析结果

作者: Neural_PDE | 来源:发表于2021-11-20 20:53 被阅读0次
神经网络近似解析结果.png
(2+1)模板来这里
using NeuralPDE, Flux, ModelingToolkit, GalacticOptim, Optim, DiffEqFlux, Plots, Quadrature, Cubature,DiffEqFlux        
import ModelingToolkit: Interval, infimum, supremum
CUDA.device()

输入基本信息

@parameters t, x
@variables u(..)
Dxx = Differential(x)^2
Dtt = Differential(t)^2
Dt = Differential(t)

#2D PDE
C=1
eq  = Dtt(u(t,x)) ~ C^2*Dxx(u(t,x))

# Initial and boundary conditions
bcs = [u(t,0) ~ 0.,# for all t > 0
       u(t,1) ~ 0.,# for all t > 0
       u(0,x) ~ x*(1. - x), #for all 0 < x < 1
       Dt(u(0,x)) ~ 0. ] #for all  0 < x < 1]

# Space and time domains
domains = [t ∈ Interval(0.0,1.0),
           x ∈ Interval(0.0,1.0)]
# Discretization
dx = 0.1
# Neural network
chain = FastChain(FastDense(2,3,tanh),FastDense(3,1))
initθ = Float64.(DiffEqFlux.initial_params(chain))
#Chain(Dense(1, 64, σ), Dense(64, 64, σ) , Dense(5, 2))

生成数据点

discretization = PhysicsInformedNN(chain, GridTraining(dx); init_params = initθ)

生成最优化问题 即 LOSS问题

@named pde_system = PDESystem(eq,bcs,domains,[t,x],[u(t,x)])
prob = discretize(pde_system,discretization)

求解最优化问题

#每次输出loss值
cb = function (p,l)
    println("Current loss is: $l")
    return false
end

# optimizer
res = GalacticOptim.solve(prob,Optim.BFGS(); cb = cb, maxiters=10)
#,use_gpu = true
  • 搞出来解析解
phi = discretization.phi
first(phi([t,x],res.minimizer)) #(phi([t,x],res.minimizer))[1]

\begin{equation} -0.12166775905450916+ 0.6791661720472896 \tanh\left( 0.1426658568418788 - 0.7364431727172647 t + 0.7449661753497334 x \right)+ 0.7779489985039263 \tanh\left( 0.1037497635423694 + 0.030303094370235022 t - 0.12403090374586133 x \right)+ 0.46548862741466923 \tanh\left( 0.08252212257999235 + 0.8408752823154485 t - 0.8478565080908962 x \right) \end{equation}
绘图

ts,xs = [infimum(d.domain):dx:supremum(d.domain) for d in domains]
analytic_sol_func(t,x) =  sum([(8/(k^3*pi^3)) * sin(k*pi*x)*cos(C*k*pi*t) for k in 1:2:50000])

u_predict = reshape([first(phi([t,x],res.minimizer)) for t in ts for x in xs],(length(ts),length(xs)))
u_real = reshape([analytic_sol_func(t,x) for t in ts for x in xs], (length(ts),length(xs)))

diff_u = abs.(u_predict .- u_real)
p1 = plot(ts, xs, u_real, linetype=:contourf,title = "analytic");
p2 =plot(ts, xs, u_predict, linetype=:contourf,title = "predict");
p3 = plot(ts, xs, diff_u,linetype=:contourf,title = "error");

plot(p1,p2,p3)
p1= plot(xs, u_predict[3],title = "t = 0.1");
p2= plot(xs, u_predict[11],title = "t = 0.5");
p3= plot(xs, u_predict[end],title = "t = 1");
plot(p1,p2,p3)

相关文章

  • 神经网络近似解析结果

    输入基本信息 生成数据点 生成最优化问题 即 LOSS问题 求解最优化问题 搞出来解析解 绘图

  • 《解析卷积神经网络—深度学习实践手册.pdf》PDF高清完整版-

    《解析卷积神经网络—深度学习实践手册.pdf》PDF高清完整版-免费下载 《解析卷积神经网络—深度学习实践手册.p...

  • Meta Learning

    问题: 要学习一个函数 其中,为神经网络近似表达,是神经网络参数,是训练样本,是当前输入。对于这样一个网络,怎么学...

  • 神经网络模型+进阶

    PART I 神经网络模型 模拟数据 查看模拟数据 神经网络模型训练 可视化训练结果 神经网络模型结果评估 平均准...

  • 数学模型-第三周:摄动方法

    摄动方法是一种求解数学物理问题的解析的近似解的方法。其百度百科是: 摄动法是一种求数学物理问题的解析的近似解的方法...

  • 29.深度学习模型压缩方法-3

    29.1 后端压缩 (1)低秩近似 在卷积神经网络中,卷积运算都是以矩阵相乘的方式进行 对于复杂网络,权重矩阵往往...

  • Feedforward Neural Network

    前言 前馈神经网络的目标是近似某个函数 。后面在围绕解释的也就是这个话题。 从XOR问题说起 xor(异或)运算...

  • (BP进阶2)学习和实现BP神经网络

    上午说到了BP神经网络,现在就把神经网络的具体实现做一下简单的解析。BP的实现原理可以参考这里:http://bl...

  • 图解Numpy花式索引及广播

    花式索引 切片 结果: 解析:1.索引范围是2到7(不包含7) 结果: 解析: 索引 结果: 解析:1.逐个索引取...

  • 【零基础】深层神经网络解析

    回顾: 【零基础】AI神经元解析(含实例代码) 【零基础】浅层神经网络解析 一、序言 前面我们已经完成了单神经元、...

网友评论

      本文标题:神经网络近似解析结果

      本文链接:https://www.haomeiwen.com/subject/vdputrtx.html