如何用TensorFlow生成令人惊艳的分形图案

今天来介绍一个小项目:在TensorFlow中生成分形图案。分形本身只是一个数学概念,与机器学习并无太大关系,但是通过分形的生成,我们可以了解怎么在TensorFlow中进行数学计算,以及如何进行基本的流程控制,是学习TensorFlow的一个非常好的练手项目。

在开始之前,需要说明的是,TensorFlow官方也提供了一个生成分形图案的教程(地址:www.tensorflow.org/tutorials/mandelbrot),然而官方教程中生成的图像实在是太丑了,而且只能生成一种图案,我对官方的代码做了一些改进,并且加入了多种类型的分形,此外,不仅可以生成图像,还可以制作gif动画,代码已经放到了Github上:https://github.com/hzy46/tensorflow-fractal-playground,主要的程序只有50行,欢迎大家参考。

Mandelbrot集合

Mandelbrot集合是分形中最经典的一个例子。考虑迭代公式  (z和c都是复数)。当  为0时,得到的值可以组成一个数列,依次为  。当该数列发散到无穷时,对应的点就属于Mandelbrot集合。

如  时,显然数列永远是0,并不发散,因此0不属于Mandelbrot集合。

又如  时,对应的数列为  ,数字越来越庞大,因此3i就属于Mandelbrot集合。

在二维平面上,将所有不属于Mandelbrot集合的点标记为黑色,将所有属于Mandelbrot集合的点按照其发散速度赋予不同的颜色,就可以得到Mandelbrot的经典图像:

上面这张图完全是使用TensorFlow进行计算的,类似的图大家应该在网上也见过好多了,在TensorFlow中,我们定义下面的计算步骤:

xs = tf.constant(Z.astype(np.complex64))

zs = tf.Variable(xs)

ns = tf.Variable(tf.zeros_like(xs, tf.float32)) with tf.Session():
   tf.global_variables_initializer().run()
   zs_ = tf.where(tf.abs(zs) < R, zs**2 + xs, zs)
   not_diverged = tf.abs(zs_) < R
   step = tf.group(
       zs.assign(zs_),
       ns.assign_add(tf.cast(not_diverged, tf.float32)) 
   for i in range(ITER_NUM): step.run()
   final_step = ns.eval()
   final_z = zs_.eval()

zs就对应我们之前迭代公式的z,而xs就对应迭代公式中的c。为了方便起见,只要计算时数值的绝对值大于一个事先指定的值R,就认为其发散。每次计算使用tf.where只对还未发散的值进行计算。结合ns和zs_就可以计算颜色,得到经典的Mandelbrot图像。

Julia集合

Julia集合和Mandelbrot集合差不多,但这次我们固定c,转而计算发散的z的值。即c是固定的常数(可以任取),数列变成  。如果该数列发散,对应的z就属于Julia集合。对此,我们只要在原来的程序中修改两行内容,就可以生成Julia集合:

xs = tf.constant(np.full(shape=Z.shape, fill_value=c, dtype=Z.dtype))

zs = tf.Variable(Z)

我们在fill_value=c处指定了Julia集合中的c值,只要使用不同的c值,就可以生成完全不同的Julia集合!

默认:  :

将c值变为  ,并调整颜色(调整方法参考Github页面的说明):

选用  ,图案又变得完全不同:

生成Julia集合的动画

在Julia集合中,每次都对c的值进行微小的改变,并将依次生成图片制作为gif,就可以生成如下所示的动画,对应的代码为julia_gif.py:

这里由于上传gif有大小限制的关系,只展示了一个小尺寸的动画图像。程序中提供了一个width参数,可以修改它以生成更大尺寸,质量更高的动画图像。

探索Mandelbrot集合

(注意:下面的图片可能对密集恐惧症患者不太友好。。。因此慎重翻页。。)

在前面生成的Mandelbrot集合中,我们可以将图像放大,选取某些区域进行生成,就可以得到格式各样造型迥异的分形图案,对应的程序为mandelbrot_area.py。

在Mandelbrot集合中,有很多地方图案比较奇特,如下图中的9个位置。

其中编号为2的地方被称为“Elephant Valley”,因为此处的图案与大象很像,直接运行mandelbrot_area.py就可以得到该区域的图像:

编号为3的地方被称为“Triple Spiral Valley”(三重螺旋),在mandelbrot_area.py修改一下坐标位置为(ratio调整的是颜色):

start_x = -0.090  # x range

end_x = -0.086

start_y = 0.654  # y range

end_y = 0.657

width = 1000

ratio1, ratio2, ratio3 = 0.2, 0.6, 0.6

就可以得到该处的图案:

最后编号为1的地方被称为“Seahorse Valley”(海马山谷),对应的坐标为:

start_x = -0.750  # x range

end_x = -0.747

start_y = 0.099  # y range

end_y = 0.102

width = 1000

ratio1, ratio2, ratio3 = 0.1, 0.1, 0.3

图像如下,确实和海马有一点神似:

生成更多的图案

项目提供了两个jupyter notebook:Mandelbrot.ipynb和Julia.ipynb可以对Mandelbrot集合、Julia集合做更方便的探索。其中,Mandelbrot集的更多坐标位置可以参考Quick Guide to the Mandelbrot Set(http://www.nahee.com/Derbyshire/manguide.html),Julia集中更多有趣的c值可以参考Julia set - Wikipedia(https://en.wikipedia.org/wiki/Julia_set#Quadratic_polynomials)。网上类似的资源还有很多。

本文作者:Non

本文转自雷锋网禁止二次转载,原文链接

时间: 2024-09-22 09:35:04

如何用TensorFlow生成令人惊艳的分形图案的相关文章

马赛克令人惊艳的姿态傲立装修市场(图文)

马赛克原来是一个很漂亮的名词,这个名词来自希腊语MOSAIC,意思为"值得静思.需要耐心的艺术工作".在重视装饰艺术.追求个性化的今天,沉寂多年的马赛克再度引起关注,并以令人惊艳的姿态傲立装修市场. ■从外墙"走"到内墙 上世纪90年代初,室内装修在陕西还没兴起,当时楼房的外立面大多是清水墙,讲究的人,也只是水泥拉毛,比较讲究的人,则会选择瓷砖或者水刷石:最最讲究的人,才会选择用马赛克贴花处理外墙面. 最早,外立面所贴的瓷砖颜色比较单调,只有黑.白.红三种颜色,规格

面对美国的制裁,他交了一份令人惊艳的成绩单

尽管和美国商务部发生纠纷,遭遇制裁,中兴通讯仍在2016年第一季度业绩猛增16%.是什么造就了逆境下的中兴通讯? 制裁始末 2016年3月8日,美国商务部在其网站上发布消息,以违反美国出口管制法规为由将中兴通讯公司等中国企业列入了"实体清单",认为中兴通讯"违反了美国国家安全和外交政策利益",从此禁止中兴通讯在美国购买配件和软件.美国商务部认为中兴通讯违规主要是因为其与伊朗的交易,中兴通讯向伊朗销售了美国制造的高科技产品,同时指责中兴通讯借助中兴康讯.北京 8 星等

古天乐新广告女主角令人惊艳爆发人肉搜索狂潮

古天乐与女主角 近期,古天乐和新一任的"古"女孩拍摄的广告片被 网友热议,特别是"古"女孩袁语昕,更是遭到网友人肉搜索,被誉为台湾版林秒可.据了解,在广告片拍摄现场,连天王古天乐也对她赞不绝口,更是放下天王身段,使尽浑身招数讨她欢心,甚至连拍摄时间也二话不说按照她来制定. "古"女孩成就超人气 网友猜测她或将成为"台湾版"林妙可 据悉,型男古天乐在广告中与"小公主"完美组合,果肉新鲜饱满的鲜果粒让两人在拍摄

惊艳!美专利局曝光三星最新曲面屏专利

[环球科技报道记者陈薇]据国外媒体8月25日报道,美国专利商标局上周审核了三星的新专利--可弯曲式屏幕.这件三星于今年2月提出的专利申请案,较2013年发布的版本更令人惊艳,不仅可以反向折叠,还可以固定折叠后的角度,让手机可以立在桌面上.从图中可以看出,这款屏幕能够达到180度的完全折叠,并且可以在手机的不同部分折叠,比方说单折起按键部分.从这些消息可以看出三星坚持柔性面板的走向,并意欲借此巩固智能型手机市场的龙头地位.

微软智能手表概念图 设计华丽功能惊艳(图)

[环球科技综合报道]据pocket-lint网站8月5日报道, 微软智能手表的一系列概念图 曝光,这款产品将Cortana语音助手作为该表用户体验的核心,功能着实令人惊艳.微软智能手表概念图 设计华丽功能惊艳(图)

很不错呢!谷歌眼镜拍摄出来的那些惊艳美图

class="post_content" itemprop="articleBody"> 日前,美国商业内幕网站刊文介绍了一组由谷歌眼镜所拍摄的照片,显示了令人惊艳的拍照效果以及有可能革新摄影技术的体验-- 报道指出,用户时常抱怨,为什么要带着谷歌眼镜,智能手机能做的不是更多吗?纵使那些真的需要配戴眼镜的人,也更青睐隐形眼镜,实在无法避免的情况下,也会选择时尚炫酷的设计.但这一切,在看过一个名叫 Trey Ratcliff 的新西兰旅行摄影师用谷歌眼镜拍摄的作

【V直播】三专家解读波士顿动力Atlas惊艳后空翻7大技术难点

会后空翻的波士顿动力Atals机器人 三位嘉宾分别是: 段晋军,东南大学博士生,2015年9月-2016年9月在新加坡南洋理工大学访学.研究方向是多机器人协作.基于阻抗模型的灵巧双臂位置力协调控制.增强学习等. 孙广彬,东北大学工学博士,研究方向为多臂.多足机器人智能运动规划.控制及人机协作.2010年9月至2012年9月在卡耐基梅隆大学交流访问,2015年11月至2017年2月在新加坡南洋理工大学从事博士后研究. 梁聪慧,目前是新加坡科技研究局先进制造与技术中心的高级科学家,是一名经验丰富的机

20款效果惊艳的产品宣传网站

  比起纯粹的商务网站,设计师会更青睐允许自由发挥创意的项目.从网页设计的角度上来说,"普通"的网站也正是需要借助创意来脱颖而出,尤其是产品宣传网站,更是有足够的空间来供设计师来发挥他们的狂拽酷炫的创意.实际上如果你正在寻求网站设计创意灵感的话,那么这些宣传网站正是你需要的. 接下来我们要推荐的20个宣传网站中,既有精致的产品宣传页,也有氛围营造得恰如其分的活动宣传页,还有几个创意爆棚的个人宣传网站.这些网站无一不是设计精美的典范,更重要的是其中包含了设计师精心设计的交互和动效.如果你

界面/功能都很惊艳:iPad版Office上手体验

iPad版Office顾名思义是专为iPad设计的Office应用,它包括Word.Excel和PowerPoint三大组件,需要单独安装.目前iPad版Office已经在iTunes中上架,可以免费下载使用.在最初的使用后,我们认为,Office for iPad值得选择,与iPad堪称绝配.如果你还没有决定用不用它,那不妨先读一下本文. Office for iPad功能完备,是微软专为苹果设备从头开发的,如果说在开发过程中有什么东西是阻碍的话,那就是苹果稍显陈旧的移动操作系统了. 微软观察