Tensorflow教程-曼德布洛特(Mandelbrot)集合
曼德布洛特(Mandelbrot)集合
虽然可视化曼德布洛特(Mandelbrot)集合与机器学习没有任何关系,但这对于将TensorFlow应用在数学更广泛的领域是一个有趣的例子。实际上,这是tensorflow一个非常直截了当的可视化运用。(我们最终也许会提供一种更加精心设计的运用方式来生成真正更加美丽的图像。)
说明:本教程使用了IPython的notebook。
基本步骤
首先,我们需要导入一些库。
# 导入仿真库
import tensorflow as tf
import numpy as np# 导入可视化库
import PIL.Image
from cStringIO import StringIO
from IPython.display import clear_output, Image, display
import scipy.ndimage as nd
现在我们将定义一个函数来显示迭代计算出的图像。
def DisplayFractal(a, fmt='jpeg'):"""显示迭代计算出的彩色分形图像。"""a_cyclic = (6.28*a/20.0).reshape(list(a.shape)+[1])img = np.concatenate([10+20*np.cos(a_cyclic),30+50*np.sin(a_cyclic),155-80*np.cos(a_cyclic)], 2)img[a==a.max()] = 0a = imga = np.uint8(np.clip(a, 0, 255))f = StringIO()PIL.Image.fromarray(a).save(f, fmt)display(Image(data=f.getvalue()))
会话(session)和变量(variable)初始化
为了操作的方便,我们常常使用交互式会话(interactive session),但普通会话(regular session)也能正常使用。
sess = tf.InteractiveSession()
我们可以自由的混合使用NumPy和TensorFlow,这一点非常方便。
# 使用NumPy创建一个在[-2,2]x[-2,2]范围内的2维复数数组Y, X = np.mgrid[-1.3:1.3:0.005, -2:1:0.005]
Z = X+1j*Y
现在我们定义并初始化一组TensorFlow的张量 (tensors)。
xs = tf.constant(Z.astype("complex64"))
zs = tf.Variable(xs)
ns = tf.Variable(tf.zeros_like(xs, "float32"))
TensorFlow在使用之前需要你明确给定变量的初始值。
tf.initialize_all_variables().run()
定义并运行计算
现在我们指定更多的计算...
# 计算一个新值z: z^2 + x
zs_ = zs*zs + xs# 这个新值会发散吗?
not_diverged = tf.complex_abs(zs_) < 4# 更新zs并且迭代计算。
#
# 说明:在这些值发散之后,我们仍然在计算zs,这个计算消耗特别大!
# 如果稍微简单点,这里有更好的方法来处理。
#
step = tf.group(zs.assign(zs_),ns.assign_add(tf.cast(not_diverged, "float32")))
...继续执行几百个步骤
for i in range(200): step.run()
让我们看看我们得到了什么。
DisplayFractal(ns.eval())
结果不错!
原文:ericxk 校对:<a rel="nofollow" href="https://github.com/tensorfly" "="" style="box-sizing: border-box; color: rgb(45, 133, 202); text-decoration: none; background-color: transparent;">tensorfly
Tensorflow教程-曼德布洛特(Mandelbrot)集合相关推荐
- TensorFlow:曼德布洛特(Mandelbrot)集合
TensorFlow:曼德布洛特(Mandelbrot)集合
- TensorFlow 教程 --教程--2.9曼德布洛特(Mandelbrot)集合
虽然可视化曼德布洛特(Mandelbrot)集合与机器学习没有任何关系,但这对于将TensorFlow应用在数学更广泛的领域是一个有趣的例子.实际上,这是tensorflow一个非常直截了当的可视化运 ...
- 神奇的Python-实现曼德布洛特(Mandelbrot)集合(一行代码,matplotlib numpy,tensorflow)分别实现
神奇的Python-实现曼德布洛特(Mandelbrot)集合(一行代码,matplotlib numpy,tensorflow)分别实现 Mandelbrot图实际上是由Mandelbrot集合构成 ...
- 曼德布洛特(Mandelbrot)集合
说明:使用python3.6.tensorflow1.3,windows环境. # 导入仿真库 import tensorflow as tf import numpy as np # 导入可视化库 ...
- python读法1002python读法-Python教程之绘制Mandelbrot集合
原标题:Python教程之绘制Mandelbrot集合 一. 分形与混沌 自然界的很多事物,如树木.云彩.山脉.雪花.海岸线等,都呈现出传统几何学所不能描述的形状,这些形状都有如下的特性: 有着十分精 ...
- python分形几何_Python教程之绘制Mandelbrot集合
原标题:Python教程之绘制Mandelbrot集合 一. 分形与混沌 自然界的很多事物,如树木.云彩.山脉.雪花.海岸线等,都呈现出传统几何学所不能描述的形状,这些形状都有如下的特性: 有着十分精 ...
- 分形几何python代码_Python教程之绘制Mandelbrot集合
原标题:Python教程之绘制Mandelbrot集合 一. 分形与混沌 自然界的很多事物,如树木.云彩.山脉.雪花.海岸线等,都呈现出传统几何学所不能描述的形状,这些形状都有如下的特性: 有着十分精 ...
- python绘制分形图形教程_Python教程之绘制Mandelbrot集合
原标题:Python教程之绘制Mandelbrot集合 一. 分形与混沌 自然界的很多事物,如树木.云彩.山脉.雪花.海岸线等,都呈现出传统几何学所不能描述的形状,这些形状都有如下的特性: 有着十分精 ...
- TensorFlow 教程 --教程--2.1 综述
综述 面向机器学习初学者的 MNIST 初级教程 如果你是机器学习领域的新手, 我们推荐你从本文开始阅读. 本文通过讲述一个经典的问题, 手写数字识别 (MNIST), 让你对多类分类 (multic ...
最新文章
- poj 2352 Stars 线段树(先建后查/边建边查)/树状数组三种方法思路详解,带你深入了解线段树难度⭐⭐⭐★
- Compellent试用手记之二:系统连接
- BCH实用场景增加,Bitwage推出BCH工资单
- access转换成oracle,Access转Oracle工具
- 图像识别 标注(annotation)的反向优化策略
- 请求参数绑定实体类型
- [导入]Ajax初试
- 一款可留言的恋爱计时HTML源码
- iOS开发笔记系列-基础3(多态、动态类型和动态绑定)
- 审批流_审批流的优化从何入手
- lynis check log
- 科大讯飞发布会,我看到的人工智能
- Atitit. 有限状态机 fsm 状态模式
- ansible 建 kubernetes 证书签名请求_Kubernetes 两步验证 - 使用 Serverless 实现动态准入控制
- Cmder安装并解决cmder here报错问题
- Python-爬取历史地震数据并可视化
- echarts全解析及其用法详解
- 推荐windows下 DNS本地化工具 TreeWalk DNS 8.21
- CBA公布对北京首钢处罚结果 相关工作人员遭重罚
- (新)最新抖音无水印解析原理再分析过程,柳暗花明又一村
热门文章
- 用异或对身份证等图片加密的严谨方式
- eclipse版本说明及下载地址
- 2018 Mac下pycharm 安装Django及创建app
- apk开发教程!那些年Android面试官常问的知识点,2年以上经验必看
- 阿乐卡特交换机配置手册
- OpenLayers基础教程——要素的编辑
- CISP-信息安全保障-信息安全保障基础
- 论文翻译 || openpose -- Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields
- euclidea4攻略_Euclidea几何构建11.4通关攻略
- 计算机会计模块考试,会计职称计算机考试模块windowsxp考试试题.doc