TensorFlow是目前主流深度学习框架之一,其库中几乎包含了所有机器学习和深度学习相关的辅助函数和封装类,官方文档如下图所示。在其框架下做各种神经网络算法的开发可以极大减轻工作量,在入门阶段可以不需要深入理解相关优化算法、分布式的底层细节也可以完成对于深度学习神经网络的搭建、训练、评估、测试和部署步骤。TensorFlow最初是由谷歌脑研究组的研究员和工程师们开发出来的,主要用于进行机器学习和深度神经网络方面的研究,后来逐渐发展成为广泛通用的深度学习主流框架之一。
TensorFlow主要采用数据流图规划计算流程、进行数值计算,节点表示数学操作,线表示在节点之间相互传递信息的多维数组;记录多维数组信息量的数据为张量.TensorFlow提供了Python、C++和JavaScript等易于快速开发编程语言的接口,并且还配置有TensorBoard可视化工具。TensorFlow具有灵活的架构,支持在多种平台上进行计算,如CPU,GPU,TPU、云服务器和移动设备,具有灵活、快速和适应性广泛的优越性。
数据流图是使用节点(Node)和有向线(Edge)来描述的数学计算,又称计算图。在用TensorFlow进行科学计算时,通常先创建一个计算图,然后将数据载入计算图中进行计算。
张量是计算图中节点之间相互传递数据的表现形式。一维数组、二维数组和N维数组等都可以看做张量,表示操作的输出量。
tf.Tensor(op,value_jndex,dtype)
参数 | 描述 |
---|---|
op | Tensor操作节点 |
value_index | 生成Tensor的节点索引 |
dtype | Tensor数据类型 |
张量的属性
属性 | 描述 |
---|---|
Tensor.device | 计算Tensor的硬件 |
Tensor.dtype | Tensor数据类型 |
Tensor.graph | 包含Tensor的计算图 |
Tensor.name | Tensor命名空间 |
Tensor.op | Tensor操作节点 |
Tensor.shape | Tensor形状 |
TensorFlow中张量常见数据类型
数据类型 | Python API |
---|---|
32位浮点数 | tf.float32 |
64位浮点数 | tf.float64 |
64位有符号整型 | tf.int64 |
32位有符号整型 | tf.int32 |
可变长字节数组 | tf.string |
布尔型 | tf.bool |
8位无符号整型 | tf.unit8 |
张量在计算图中主要的用途是对中间计算结果的引用和获取数据流图计算结果。在构建深层网络时计算复杂度很大,计算图中包含大量的中间结果,只用张量可以极大地提升代码的可读性。
用TensorFlow完成矩阵计算,并使用TensorBoard可视化数据流图
步骤一:使用TensorFlow做矩阵计算
新建一个python文件,命名为task4.py,代码如下所示
import tensorflow as tf
A=tf.constant([[1,4,7],[2,5,8],[3,6,9]],name='matrix_A')
B=tf.constant([[2,1,2],[-1,1,4],[3,0,-1]],name='matrix_B')
C=tf.constant([[1,-1,0],[2,2,2],[1,4,5]],name='matrix_C')
node_matmul=tf.matmul(A,B,name='node_matmul')
node_add=tf.add_n([node_matmul,C],name='node_add')
with tf.Session() as sess:
writer=tf.summary.FileWriter('./log_4',sess.graph)
Y=sess.run(node_add)
print(Y)
writer.close()
代码解析:
步骤二:运行程序
在命令行中输入命令——python task4.py ,运行结果如下所示:
步骤三:使用TensorBoard可视化矩阵计算数据流图
使用TensorBoard显示矩阵计算的数据流图,命令行输入:
tensorboard --logdir log_4