近几天,有网友给我看个小练习,要求用tensorflow计算的方式来实现一个分形图的输出。通过查看网上资料,大多以官方网站的实例为基础,或进行扩展实现分形图的绘制,而且使用的是PIL库。本文以matplotlib来绘制结果图。代码如下,相关功能见注释。

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt# 获取某每次运行时喂给的数据。
# 由中心点的坐标和边长生成用于得出其四角点坐标的参数
def get_params_iter(square_len=1.0, x=0.0, y=0.0):# 用于从中心点变换四个点的单位矩阵transf = np.array([[-1.0,1.0,1.0,-1.0],[1.0,1.0,-1.0,-1.0]])# 将中心点坐标扩展为4个角点x和y坐标points = np.array([np.full((4,),x), np.full((4,),y)])return square_len, transf, points# 将正方形的四角的四个点坐标数据变换为列表,
# 并在末尾添加首个列表元素(画出完整正方形)
def get_xys(xs,ys):x = list(xs[:])y = list(ys[:])x.append(x[0])y.append(y[0])return x,y
# 迭代次数
times = 5
square_len_num = 1.0xs = None
ys = None# 定义占位数据
square_len = tf.placeholder(tf.float32)
transf = tf.placeholder(tf.float32)
points = tf.placeholder(tf.float32)s, t, p = get_params_iter()# 定义计算图
tr = tf.multiply(transf, square_len)
pts = tf.add(points, tr)with tf.Session() as sess:for i in range(times):# 计算首个正方形对应坐标数据if xs is None:# 喂入数据,执行计算图进行计算res = sess.run(pts, feed_dict={square_len:s, transf:t, points:p})xs, ys = resplt.plot(*get_xys(xs, ys), 'g')else:temp_xs, temp_ys = [], []# 循环求出各顶点对应正方形的顶点坐标for x,y in zip(xs,ys):s, t, p = get_params_iter(square_len_num, x, y)# 喂入数据,计算各正方形顶点坐标res = sess.run(pts, feed_dict={square_len:s, transf:t, points:p})plt.plot(*get_xys(res[0], res[1]), 'g')temp_xs.extend(res[0])temp_ys.extend(res[1])xs = temp_xsys = temp_ys# 边长减半square_len_num /= 2plt.show()

运行结果如下图:

用tensorflow实现一个分形图制作相关推荐

  1. 用TensorFlow搭建一个万能的神经网络框架(持续更新)

    博客作者:凌逆战 博客地址:https://www.cnblogs.com/LXP-Never/p/12774058.html 文章代码:https://github.com/LXP-Never/bl ...

  2. 怎么利用计算机制作分形图片,一个能徒手绘制分形图的人 天才之击

    杨思敏 分形图,以数学方法模拟自然界或科学研究中的现象-核聚变.能量环.圆周率π的存在--它们相似且精密无比,一幅图通常由上千至上万条线条组成,只有计算机才能绘制.而美国的杰森·帕吉特(Jason P ...

  3. 计算机图形学在装饰设计中的应用,混沌分形图在软装饰艺术设计中的应用研究...

    摘要: 分形(Fractal)是在二十世纪70年代兴起的最重要的非线性科学之一,曼德尔布罗特(Mandelbrot)通过数学公式迭代和计算机编程技术构建了以自己名字命名的Mandelbrot集,分形理 ...

  4. tensorflow lstm 预测_图卷积神经网络GCN与递归结构RNN相结合的时间序列预测

    时间序列预测任务可以按照不同的方法执行.最经典的是基于统计和自回归的方法.更准确的是基于增强和集成的算法,我们必须使用滚动周期生成大量有用的手工特性.另一方面,我们可以使用在开发过程中提供更多自由的神 ...

  5. javascript canvas生成分形图练习

    简单的分形图,类似于二叉树 一颗数有两个对称分支,然后每个分支又可以继续生长.用一个数组记录每一层的信息,然后一层一层迭代,每迭代一次树枝就增加一层. 可以控制迭代次数,初始树枝长度 ,长度比例等. ...

  6. TensorFlow 是一个用于人工智能的开源神器

    网址:http://www.tensorfly.cn/ 关于 TensorFlow TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库.节点(No ...

  7. 【POJ3889】Fractal Streets(分形图)

    problem 给你一个原始的分形图 t组数据,对于每组数据,输入3个数n,h,o (n为在第n级,h,o为两个房子的编号) 求在第n级情况下,编号为h和o的两个点之间的距离*10为多少 其中,第n级 ...

  8. 如何用 canvas 画出分形图

    前言 分形是一门以非规则几何形态为研究对象的几何学,由曼德勃 罗(B.B.Mandelbrot)等人创立并命名. 分形图从整体上看,是处处不规律的.但从局部观察,图形的规则性又是相同的,即具有自相似的 ...

  9. 轻松一下:python(turtle模块)绘制分形图

    分形 分形,具有以非整数维形式充填空间的形态特征.通常被定义为"一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状",即具有自相似的性质.分形 ...

最新文章

  1. JavaScript面向对象的支持(7)
  2. C++标准输出流对象
  3. 40题刷爆Keras,人生苦短我选Keras
  4. Apache Lucene 5.0.0即将发布!
  5. Javascript 判断 object 的特定类
  6. 协议实现objective C 协议的实现
  7. Django中urls参数传递
  8. iphone socket讲解
  9. php手机下载功能,phpwind手机客户端1.2版主要功能亮点详解
  10. Python常用的第三方模块(python第三方库)
  11. handlersocket mysql_Mysql插件之HandlerSocket的安装、配置、使用
  12. USB Server应用于前置机案例分析
  13. matlab定积分例子,利用Matlab进行不定积分运算示例巧妙至极.doc
  14. 移动端H5上传图片裁剪
  15. 一句话告诉你为什么有些jQuery插件会有特殊字符(加号、减号、感叹号等)
  16. css3实现鼠标移入图片划过一束光闪过效果
  17. LightOJ 1224 DNA Prefix(字典树)
  18. 订单需求BOM合并 自动计算
  19. 【2022-New】Flutter doctor 检测报错,Android toolchain - develop for Android devices
  20. 易捷行云超大规模云计算中心巡检“零干预”

热门文章

  1. Nodejs 服务端生成验证码
  2. 8888帅气图片网络红人打造第一期
  3. 附录A-3 立项可行性分析报告1
  4. 4.3 期货每日早盘操作建议
  5. Python 实现英文新闻摘要自动提取(1)
  6. java结巴分词如何提高运行速度_结巴分词 java 高性能实现,优雅易用的 api 设计,性能优于 huaban jieba 分词...
  7. 查找二叉排序树的双亲节点,并输出路径
  8. x1 php168,新手快速入门教程
  9. 网站容器化升级---各模块分别运行一个容器
  10. C#语言 Asp.net旅游网站在线旅游信息网站(旅游系统旅游网站)旅游管理系统旅游景区旅游网站