一、TensorFlow基础
1、Tensor(张量)
张量是矩阵向任意维度的推广,TensorFlow的运算都是基于张量进行的
Tensorflow的基本类型
零维张量称为“标量”
一维张量称为“向量”
二维张量称为“矩阵”
2、Flow流
流解释为数据流动或计算,TensorFlow的运作方式是通过产生数据流图来进行运算,又称作“计算图”。计算图的节点用来表示数学运算,边则表示节点间的关联性。图2-5是数学式ReLU(XW+b)的计算图。
二、TensorFlow2.0的变化
Eager Execution
动态图模式表示立即执行的意思,在该模式下执行运算会立即返回数值,让开发者的调试更加便利和快速。
Keras
TensorFlow2.0加入了Keras 作为内建的高级 API后有了更高的兼容性。内建Keras可通过tf.keras方式来调用其功能,具有指令简洁、可以自由组合且容易扩展的模块化API等特性,使得神经网络更容易搭建。
tf.data
使用tf.data建立数据输入管道(Input Pipeline),速度更快,更简单。
TensorFlow Hub
共享模型权重的Library,可以从 Hub上加载预先训练好的模型 (Model),也可以将自己训练好的模型上传到Hub,以分享给其他人。
Distribution Strategy
新的 API可用于更加轻松地完成在多台设备上的分布式训练,例如CPU、GPU或TPU。
SavedModel
TensorFlow2.0已经规范好网络模型的存储格式,使我们可以将训练好的网络模型放到想要执行的平台上,例如手机、树莓派或网页,同时也支持不同的程序设计语言,例如C、Java、Go或C#等。
图2-6展示了当前TensorFlow 2.0已经能包办从训练模型到部署模型的流程,即读取数据、训练模型、保存模型以及把模型部署到各种设备的平台上。
三、Eager Execution
TensorFlow2.0引入了 Eager Execution动态图模式,一旦执行运算就会立刻返回数值,这有别于以往的静态图模式,需要建立计算图才能执行。
Eager Execution模式的优点如下:
(1)立即返回数值,方便调试。
(2)不必定义计算图。
(3)不必初始化参数。
(4)无须tf.Session.run 就可以返回运算结果。
1、TensorFlow1.x和TensorFlow2.0的比较
TensorFlow 1.x code
a = tf.constant(1)#建立一个常数Tensor
print(a) #显示Tensor信息
#建立一个Session
sess =tf.Session()
#通过sess.run取数值并显示出来
print( "a = {} ".format (sess.run(a)))
#关闭session释放资源
sess.close()
# 结果如下
Tensor("Const 5:0",shape=(), dtype=int32) #Shape=()表示标量,dtype=int32表示整数
a=1
a = tf.constant(1) #建立一个常数Tensor
print(a) #显示Tensor常数信息,Shape=()表示标量,dtype=int32表示整数
TensorFlow 2.0 code
a = tf.constant(1) #建立一个常数Tensor
print(a) #显示Tensor常数信息,Shape=()表示标量,dtype=int32表示整数
# 结果如下
tf.Tensor(1, shape=(), dtype=int32)
2、TensorFlow基本运算
一维Tensor的运算
二维Tensor的运算
将Tensor格式转为NumPy格式