TensorFlow可以做很多有趣的工作,如图像风格迁移,通过神经网络可以将一幅图片的风格迁移到另一幅图片上。下图所示是荷兰后印象派画家梵·高的The Starry Night(《星月夜》),将其作为被迁移的图片。
原始图片为麻省理工学院Stata中心。
自2015年11月发布起,TensorFlow经历了多次的版本变化,如表所示。
TensorFlow版本变化
时间 TensorFlow版本 主要变化
2015年12月 V0.6 TensorFlow支持GPU加速
2016年12月 V0.12 TensorFlow支持Windows
2017年2月 V1.0 加入和改进了一些高级API,包括Keras
2017年11月 V1.5 增加了动态图机制和用于移动端的轻量级TensorFlow Lite版本
2018年5月 V1.6 增加了支持Cloud TPU、模型和pipeline功能
2018年6月 V1.8 增加了TensorFlow的分布式训练功能
2019年3月 V2.0 Alpha 使用Keras和Eager Execution可以轻松建立简单的模型并执行,通过清除不推荐使用的API和减少重复来简化API
为了让读者更好地理解TensorFlow,下面从3个不同的角度对其进行分析。
(1)TensorFlow的计算模型为计算图(Graph),TensorFlow的名字本身由两个单词构成,即Tensor和Flow。Tensor指的是张量,在TensorFlow中,Tensor可以简单地理解为多维数组,而Flow翻译过来是“流”,表达了张量之间通过计算进行相互转换的含义。在TensorFlow中,每一个运算都是一个节点,在整体代码中,系统会维护一个默认的计算图。
(2)TensorFlow的数据模型为张量(Tensor),在TensorFlow中,所有的数据类型都表示为张量。张量是一个多维数组,如果直接打印某一个张量,并不会像打印List或NumPy一样输出它的值,而是会得到一个结构,结构中包括该张量的名称、维度和类型。
(3)TensorFlow的运行模型为会话(Session),在TensorFlow中,有了数据模型以及计算模型后,在代码执行过程中需要使用会话,会话负责管理代码运行时的所有资源。如果没有指定,会话将会自动加入系统生成的默认计算图中,执行其中的运算。