Chp 1 TensorFlow 基础
- TensorFlow 来由:在计算图的边中流动(flow)的数据被称为Tensor
- Client通过session的接口与master及多个worker相连,master负责指导所有worker按流程执行计算图,而每个worker可以与多个设备相连;
- TemsorFlow有单机版和分布式版两种实现
- 不同设备间的数据通信通过设置发送节点和接收节点实现
- 容器(container)是TensorFlow中一种特殊的管理长期变量的机制,如Variable就保存在容器中,每一个进程会有一个默认的容器一直存在直至进程结束,使用容器甚至可以允许不同的计算图的不同session之间共享一些状态值
- 支持的几种高度优化的第三方计算库: 线性代数计算库:Eigen 矩阵乘法计算库:BLAS、cuBLAS(CUDA BLAS)
- 加速训练的三种并行方式:数据并行、模型并行、流水线并行
Chp 2 TensorFlow和其他深度学习框架的对比
- TensorFlow
其数据流式图支持非常自由的算法表达,可以很轻松的实现除深度学习以外的机器学习方法,只要可以将计算表示成计算图的形式
灵活的移植性
极快的编译速度
功能强大的可视化组件TensorBoard
缺点:计算图必须构建为静态图 - Caffe
容易上手
训练速度快
组件模块化,可以方便的拓展到新的模型和学习任务上
第一个主流的工业级深度学习框架 - 其他待读
Chp 3 TensorFlow 第一步
-
Softmax regression 工作原理:将可以判定为某类的特征相加,然后将这些特征转化为判定是这一类的概率
-
bias 反映的是数据本身的一些倾向,例如在MNIST数据集中,如果大部分数字都是0,那么0的特征对应的bias就会较大
-
使用TensorFlow进行算法设计、训练的四大核心步骤:
1、 定义算法公式,也就是神经网络forward时的计算
2、 定义loss,选定优化器,并指定优化器优化的loss
3、 迭代地对数据进行训练
4、 在测试集或验证集上对准确率进行评测
搭建网络的大体步骤如下:
- 读入数据集
- 创建InteractiveSession-将当前session注册为默认session
- 创建placeholder-存放输入数据,第一个参数是数据类型,第二个参数是输入Tensor的shape
- 创建Variable对象-存储模型参数,因为其是持久化的,可以长期存在并在每轮迭代中被更新;对简单模型而言,模型参数的初始化不太重要,因为模型训练时会自动学习合适的值,但是对复杂的卷积网络、循环网络或较深的全连接网络而言,初始化的方法十分重要
- 搭建网络框架,tf.nn中包含了大量神经网络组件
- 设置优化器,如:tf.train.GraientDescentOptimizer(0.5).minimize(cross_entropy)
- 调用Tensorflow的全局参数初始化器tf.global_variables_initializer().run()
- 迭代地执行train_step
- 评测
- 计算图、数据流:定义Computational Graph时,执行到这些代码时计算并未发生,只有调用run方法并feed数据时才真正执行