0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TensorFlow在机器学习和模拟偏微分方程中的应用

Tensorflowers 来源:cg 2018-12-06 14:07 次阅读

TensorFlow 不仅仅可以用于机器学习。在此教程中,我们所举的例子(较为寻常)是使用 TensorFlow 模拟偏微分方程的行为(https://en.wikipedia.org/wiki/Partial_differential_equation)。我们将模拟几个雨滴落在方形池塘水面的情形。

基本设置

需要导入一些库。

#Import libraries for simulationimport tensorflow as tfimport numpy as np#Imports for visualizationimport PIL.Imagefrom io import BytesIOfrom IPython.display import clear_output, Image, display

将池塘水面的状态显示为图像的函数。

def DisplayArray(a, fmt='jpeg', rng=[0,1]): """Display an array as a picture.""" a = (a - rng[0])/float(rng[1] - rng[0])*255 a = np.uint8(np.clip(a, 0, 255)) f = BytesIO() PIL.Image.fromarray(a).save(f, fmt) clear_output(wait = True) display(Image(data=f.getvalue()))

接下来,我们发起一个互动式 TensorFlow 会话,以方便练习。如果我们使用可执行的 .py 文件进行模拟,则常规会话一样可行。

sess = tf.InteractiveSession()

计算便利函数

def make_kernel(a):

"""Transform a 2D array into a convolution kernel""" a = np.asarray(a) a = a.reshape(list(a.shape) + [1,1]) return tf.constant(a, dtype=1)def simple_conv(x, k): """A simplified 2D convolution operation""" x = tf.expand_dims(tf.expand_dims(x, 0), -1) y = tf.nn.depthwise_conv2d(x, k, [1, 1, 1, 1], padding='SAME') return y[0, :, :, 0]def laplace(x): """Compute the 2D laplacian of an array""" laplace_k = make_kernel([[0.5, 1.0, 0.5], [1.0, -6., 1.0], [0.5, 1.0, 0.5]]) return simple_conv(x, laplace_k)

定义 PDE

我们的池塘是一个完美的 500 x 500 正方形,就像自然界中的大多数池塘一样。

N = 500

接下来,我们创建池塘,并在其表面落入一些雨滴。

# Initial Conditions -- some rain drops hit a pond

# Set everything to zerou_init = np.zeros([N, N], dtype=np.float32)ut_init = np.zeros([N, N], dtype=np.float32)# Some rain drops hit a pond at random pointsfor n in range(40): a,b = np.random.randint(0, N, 2) u_init[a,b] = np.random.uniform()DisplayArray(u_init, rng=[-0.1, 0.1])

现在,我们指定微分方程的详细信息

# Parameters:

# eps -- time resolution# damping -- wave dampingeps = tf.placeholder(tf.float32, shape=())damping = tf.placeholder(tf.float32, shape=())# Create variables for simulation stateU = tf.Variable(u_init)Ut = tf.Variable(ut_init)# Discretized PDE update rulesU_ = U + eps * UtUt_ = Ut + eps * (laplace(U) - damping * Ut)# Operation to update the statestep = tf.group( U.assign(U_), Ut.assign(Ut_))

运行模拟

情况变得有趣起来 - 使用简单的 for 循环让其持续运行。

# Initialize state to initial conditions

tf.global_variables_initializer().run()# Run 1000 steps of PDEfor i in range(1000): # Step simulation step.run({eps: 0.03, damping: 0.04}) DisplayArray(U.eval(), rng=[-0.1, 0.1])

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器学习
    +关注

    关注

    66

    文章

    8114

    浏览量

    130546
  • tensorflow
    +关注

    关注

    13

    文章

    313

    浏览量

    60242

原文标题:TensorFlow 不仅用于机器学习,还能模拟偏微分方程

文章出处:【微信号:tensorflowers,微信公众号:Tensorflowers】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Matlab偏微分方程工具箱应用说明

    poimesh 矩形区域上产生规则的网络refinemesh 细化三角形网络wbound 写一个边界描述文件wgeom 写一个几何描述文件pdecont 画轮廓图pdemesh 画偏微分方程的三角形
    发表于 09-22 15:26

    Matlab求解微分方程(ODEs/PDEs)

    本帖最后由 A670521546 于 2011-7-8 10:29 编辑 常微分方程(ODEs)的MATLAB数值解法》偏微分方程(PDEs)的MATLAB数值解法》Z变换和差分方程
    发表于 07-08 08:42

    计算机Fortran编程实现偏微分方程拉普拉斯变换

    的势能的行为。直角坐标, 已知为。。。?(V,xyz二级三变量齐次偏微分方程=0)(9.32)稳态电流的条件下,势能还满足拉普拉斯方程
    发表于 08-14 20:38

    偏微分方程式数值解之计算机算法详解

    。*******************************************************************本章节 偏微分方程(计算机数值方法语言Fortran解答)Pg.lp343导论 框架1---- -----偏微分方程常常发生在实践
    发表于 08-29 14:31

    偏微分方程式数值解之计算机Fortran算法详解附图(续i)

    偏微分方程式数值解之计算机Fortran算法详解附图(续i) 内容与附图页码一致,续如下:*********************** 粤港澳大湾区 2020-8-29
    发表于 08-29 20:44

    偏微分方程式数值解之计算机Fortran算法详解附图(续ii)

    偏微分方程式数值解之计算机Fortran算法详解附图(续ii) 内容与附图页码一致,续如下: ******************************粤港澳大湾区2020-08-29
    发表于 08-29 21:14

    微分方程的MAtLAB解法

    摘要:对一些不能求解解析解的常微分方程偏微分方程进行精确求解是非常困难的,探讨了用MATLAB方法对此类方程进行求解,结合实例介绍了MATLAB数值计算的方法,先将物体的运
    发表于 01-08 21:24 61次下载

    微分方程复习,常微分方程pdf

    微分方程复习,常微分方程pdf:微分方程的一般概念线性常微分方程的性质一阶线性常微分方程二阶线性常系数
    发表于 04-23 22:08 0次下载

    基于偏微分方程的闪光照相图像修补算法

    针对闪光照相底片图像可能含有缺陷的问题,提出了一种基于偏微分方程的闪光照相图像修补算法,该算法在曲率驱动扩散(CDD)方法的基础上,引入变系数的狆?Laplac
    发表于 03-05 14:17 22次下载

    基于分数阶偏微分方程在图像处理中应用设计

    分数阶偏微分方程在图像处理中的应用已受到了广泛的关注,尤其在图像去噪和图像超分辨率(SR)重建方面,目前的研究成果已显示了分数阶应用的优势与效果。对分数阶微积分在图像处理中的作用进行了分析;介绍
    发表于 12-06 10:50 1次下载

    异性四阶偏微分方程耦合二阶偏微分方程的图像放大算法

    针对增强图像中的弱边缘、细节纹理和消除二阶偏微分方程在图像平滑部分的阶梯效应问题,提出一种各向异性四阶偏微分方程耦合二阶偏微分方程的图像放大算法。算法通过像素的局部方差自适应约束阈值,实现图像
    发表于 01-12 14:38 0次下载

    模拟集成电路之频率响应分析零极点

    零极点的理解是模拟电路最关键的基础之一,信号与系统都会讲自然响应,自然响应就是偏微分方程的通解部分,而受迫响应则是偏微分方程的特解。本文将详解零极点与频率响应之间的关系。
    发表于 02-21 10:26 5.1w次阅读
    <b class='flag-5'>模拟</b>集成电路之频率响应分析零极点

    谷歌AI:学习更好的偏微分方程仿真方法

    研究人员已经开始探索使用ML在高性能计算方面提供持续改进的可能,以解决偏微分方程和科学计算中的困难计算问题。
    的头像 发表于 07-30 10:20 3238次阅读

    关于MATLAB连续模型求解方法介绍和分析

    对于复杂的微分方程模型的求解, 可以借助 MATLAB 偏微分方程工具箱中的专用求解器。以下将以一个实例来看看如何借助偏微分方程工具箱来实现一个微分方程的求解与数值仿真。
    的头像 发表于 09-16 11:41 3424次阅读
    关于MATLAB连续模型求解方法介绍和分析

    Matlab/Simulink建模详解:一阶时变偏微分方程的求解

    这一次日笃小编来教大家如何在simulnk里面,求解偏微分方程(Partial Differential Equation-PDE)。
    的头像 发表于 06-25 16:03 1702次阅读
    Matlab/Simulink建模详解:一阶时变<b class='flag-5'>偏微分方程</b>的求解