TensorFlow框架及使用
Contents
Tensorflow是谷歌开源的一款深度学习工具,与其他深度学习工具(比如caffe、Deeplearning4j等)相比,其受关注度和欢迎程度尤为突出。在谷歌内部,Tensorflow已经广泛用于语音搜索、广告、电商、图片、街景图、翻译、Youtube等众多产品中。
TensorFlow计算模型—计算图(Computation Graph)
- TensorFlow中的所有计算都会被转化为计算图上的节点,节点之间的边描述了计算之间的依赖关系
- TF是一个通过计算图的形式表示计算的编程系统
- TF程序通常分两个阶段:1. 定义计算图中所有的计算; 2. 执行计算
- TF程序自动维护一个默认的计算图,可通过tf.get_default_graph函数获取
- 不同计算图上的张量和运算不共享
|
|
TensorFlow数据模型—张量(Tensor)
- TF管理数据的形式
张量:可简单地理解为多维数组
- 零阶张量为标量,表示一个数
- 一阶张量为一个一维数组
- n阶张量为一个n维数组
TF中的张量并没有真正保存数据,而是存储的运算结果的引用,即张量保存的是如何得到结果的计算过程
- 张量主要保存三个属性:名字(name)、维度(shape)、类型(dtype)。以如下张量为例Tensor(“a_3:0”, shape=(2,), dtype=float32)
- “a_3:0”: a_3表示计算图中节点的名称,而冒号后面的”0”表示当前张量来自该节点第一个输出(编号从0开始)
- shape=(2,): 表示张量为一个一维数组,数组长度为2
- dtype=float32: Tensorflow会对参与运算的所有张量进行类型的检查,当发现类型不匹配时会报错
张量的使用大致可分为两类:
- 作为中间计算结果的引用,提高程序的可读性
通过张量获得计算结果,即真实的数据tf.Session().run()
Your CPU supports instructions that this TensorFlow binary was not compiled
Python环境下使用sesson.run会有如上提示,主要意思就是提示你可以通过**加速CPU,暂时可以使用如下命令忽略12import osos.environ['TF_CPP_MIN_LOG_LEVEL']='2'
Tensorflow运行模型—会话(Session)
- Session用于管理TF程序运行时的所有资源
- 两种模式:
- 明确调用会话生成函数和关闭会话函数
- 通过Python上下文管理器使用会话
- TF不会自动生成默认的会话,需要手动指定。默认的会话被指定后可通过tensor_obj.eval()计算张量的取值
- 交互环境下,使用tf.InteractiveSession,该函数会自动将生成的会话注册为默认会话
|
|
占位符(tf.placeholder)
用于传递真实的样本,创建时不必指定初始值,可在运行时,通过Session.run函数的feed_dict的参数指定(feed_dict可省略)
|
|
变量(tf.Variable)
用于可变的训练变量,如模型的权重或者偏置
- 创建时必须提供初始值
- 变量的值会随在模型的训练而更改
|
|
TensorFlow实现线性回归
|
|