深度学习框架tensorflow——华为AI学习笔记16
1. 什么是tensorflow
google开源的深度学习框架,能很好地支持深度学习算法,能适应各种平台且稳定性很高,也有很好的维护和更新。
它分成tensor和flow两部分
它在github上的star数量和深度学习框架评分中都遥遥领先(可能已经过时)
2. 版本
2015.9 0.1版,是alphaGo用的深度学习框架
2017.2 1.0版本
2019.3 2.0版本,对1.0做了优化,但有些地方不完全兼容
由于学习视频比较老,仍用了1.14的版本教学
3. 能做什么?
语音识别
自动驾驶等等
4. 特点
4.1. 灵活可扩展
4.2. 多语言
本身是用C++写的,但支持多种语言
4.3. GPU
支持GPU,能够快速地计算
4.4. 多平台
跨平台性非常好
4.5. 运算性能强
4.6. 支持分布式运算
5. 架构
应用层:训练相关库、预测相关库
客户端:python/C++/Java/Go
核心API
计算分布:分布式计算图、本地计算图
数据操作层:Const/Var/matmul/Conv2D
硬件:CPU/GPU
6. 基础概念
6.1. 组成
6.1.1. 张量
tensor,数据载体
6.1.2. flow,计算图
数据流图,即变量计算图,比如定义z=x+y,并不计算,要调用后才计算
定义好数据后像流水一样一步步运行
6.1.3. 算子
6.1.4. 会话
定义计算图后要开启一个会话才会计算
6.1.5. 变量
使用占位符,后续再补充,或者直接定义变量
6.1.6. API
tensorflow里提供的一些算法和函数
7. 如何搭建神经网络
7.1. 定义输入节点
输入层的定义
会用到6.1.5.的变量
7.2. 定义”学习参数“的变量
主要是学习中用到的超参数,比如梯度下降中的学习率,批训练中的batch_size等
7.3. 定义运算
就是上面说的计算图,它们属于隐藏层
比如全连接神经网络就是一个矩阵运算,可以定义在计算图里面
tf.layers.dense,其实就是一个wx+b的过程
也可以是CNN、RNN等
tf.layers.conv2d
tf.layers.max_pooling2d,这是最大池化,还有平均池化,最小池化等
tf.nn.rnn_cell.BasicRNNCell,这些现在一般很少用
tf.contrib.rnn.BasicLSTMCell,长短记忆神经网络,比较复杂,效果也比较好,解决了传统神经网络梯度消失问题,但计算量增加了很多
tf.contrib.rnn.GRUCell,相对上一个不会差很多,但减少了计算量
7.4. 优化函数/优化目标
实际上就是梯度下降函数和损失函数
7.5. 初始化所有变量
运算前需要初始化所有变量,包括前面定义的超参数和计算图
7.6. 模型训练
是一个反复迭代的训练过程,把我们定义的优化函数更新到最优
7.7. 测试模型
拿准备好的测试集进行测试
7.8. 使用模型
需要本地保存并在后续使用中导入
- 点赞
- 收藏
- 关注作者
评论(0)