A machine learning platform for everyone to solve problems.
- 概述
- TensorFlow是一个开源代码软件库,用于进行高性能数值计算,借助灵活的架构,用户可以轻松地将计算工作部署到多种平台(CPU、GPU、TPU)和设备(桌面设备、服务器集群、移动设备、边缘设备等),最初由Google Brain团队(隶属于Google的AI部门)中的研究人员和工程师开发,可为机器学习和深度学习提供强力支持。
import tensorflow as tf
# 创建一个常量运算,将作为一个节点加入到默认计算图中
hello = tf.constant('Hello, World!')
# 创建一个TF对话
sess = tf.Session()
# 运行并获得结果
print(sess.run(hello))
out:b'Hello, World!'
输出前面的'b'表示bytes literals(字节文字)
2.TensorFlow计算模型-计算图
- TensorFlow概念
TensorFlow = Tensor + Flow
Tensor:张量——数据结构:多维数组
Flow:流——计算模型:张量之间通过计算而转换的过程
TensorFlow是一个通过计算图的形式表述计算的编程系统,每一个计算都是计算图上的一个节点,节点之间的边描述了计算之间的关系。
# 一个简单的计算图
node1 = tf.constant(3.0, tf.float32, name='node1')
node2 = tf.constant(4.0, tf.float32, name='node2')
node3 = tf.add(node1, node2)
print(node3)
Tensor("Add:0", shape=(), dtype=float32)
输出的结果不是一个具体的数字,而是一个张量的结构
3.Tensor 张量
- TensorFlow中,所有的数据都是通过张量的形式来表示
- 从功能的角度,张量可以理解为多维数组
- 零阶张量表示标量(scalar),也就是一个数
- 一阶张量表示向量(vector),也就是一维数组
- n阶张量表示一个n维数组
- 张量并没有真正保存数字,保存的是计算过程
- 张量的属性
- Tensor("Add:0", shape=(), dtype=float32)
- 名字(name)
- 'node:src_output':node节点名称,src_output来自节点的第几个输出
- 形状(shape)
- 张量的维度信息,shape=(),表示是标量
- 类型(type)
- 每一个张量会有一个唯一的类型
- TensorFlow会对参与运算的所有张量进行类型的检查,发现类型不匹配时会报错
- 名字(name)
- Tensor("Add:0", shape=(), dtype=float32)
- 张量的形状
- 描述张量维度的三个术语:阶(rank)、形状(shape)、维数(dimension number)
- 获取张量的元素
- 阶为1的张量等价于向量
- 阶为2的张量等价于矩阵,通过t[i, j]获取元素
- 阶为3的张量,通过t[i,j,k]获取元素
- 张量的类型
- 实数:tf.float32, tf.float64
- 整树:tf.int8,tf.int16,tf.int32,tf,int64,f.uint8
- 布尔值:tf.bool
- 复数:tf.complex64,tf.complex128
- 默认类型:
- 不带小数点的数会被默认为int32
- 带小数点的会被默认为float32
- Operation 操作
- 计算图中的节点就是操作
- 一次加法是一个操作
- 构建一些变量的初始值也是一个操作
- 每个运算操作都有属性,它在构建图的时候需要确定下来
- 操作可以和计算设备绑定,指定操作在某个设备上执行
- 操作之间存在顺序关系,操作之间的依赖就是“边”
- 计算图中的节点就是操作