文章目录
一、课程导学
1、课程项目
图像分类、房价预测、泰坦尼克生存预测
文本分类、文本生成、机器翻译
2、核心内容
模型训练
模型的保存与部署
分布式训练
tensorboard可视化调参
常用库:Tfds/tfhub、tensor2tensor等
3、多平台云端环境GPU&kaggle数据集
两个云端环境:Google cloud环境配置、AWS环境配置
kaggle数据集:Kaggle 10 Monkeys、Kaggle cifar10、Kaggle文本分类、Kaggle Titanic生存预测
4、课程章节
前五章(基础知识):
- 1、Tensorflow简介
tensorflow是什么
tensorflow历史
tensorflow vs pytorch
环境配置
- 2、Tensorflow keras实战
tf框架:keras、回调函数
项目:图像分类、房价预测
知识点:分类问题、回归问题、损失函数、神经网络、激活函数、批归一化、Dropout、Wide & deep模型、超参数搜索
- 3、Tensorflow基础API使用
Tf框架:基础数据类型、自定义模型与损失函数、自定义求导、tf.function、图结构
项目:图像分类、房价预测
- 4、Tensorflow dataset使用
Tf框架:csv文件读取、tfrecord文件生成与读取、tf.data使用
项目:房价预测
- 5、Tensorflow Estimator使用与tf1.0
Tf框架:estimator使用、特征列使用、tf1.0基本使用
项目:泰坦尼克预测
后五章(高阶知识):
- 6、卷积神经网络
Tf框架:卷积实现
项目:图像分类、Kaggle 10 Monkeys、Kaggle cifar10
理论:卷积、数据增强、迁移学习
- 7、循环神经网络
Tf框架:LSTM实现
项目:文本分类、文本生成、Kaggle文本分类
理论:序列式问题、循环网络、LSTM、双向LSTM
- 8、Tensorflow分布式(工程上应用)
Tf框架:分布式实现
项目:图像分类
理论:分布式原理与策略
- 9、Tensorflow模型保存与部署(工程上应用)
Tf框架:模型保存、导出tflite、部署
项目:图像分类
- 10、机器翻译与tensor2tensor使用
Tf框架:transformer实现、tensor2tensor使用
项目:机器翻译
理论:序列到序列模型、注意力机制、可缩放点积注意力、多头注意力
5、掌握能力
问题建模能力、特征工程能力、搭建模型能力、独立解决项目能力
6、前置知识
python基础语法
熟悉Linux环境:Ubuntu
机器学习和深度学习基础知识
二、Tensorflow简介?
1、TensorFlow是什么?
- google的开源软件库
- 采取数据流图(节点+线,节点表示数学操作,线表示数据流向),用于数值计算
- 支持多种平台——GPU、CPU、移动设备
(1)、数据流图
- 节点——处理数据
- 线——节点间的输入输出关系
- 线上运输张量(tensor)
- 节点被分配到各种计算设备上运行
(2)、TensorFlow的特性
- 高度的灵活性(体现在数据流图上,另外对神经网络的很多操作进行了封装)
- 真正的可移植性(可以在很多设备运行、配置到服务器 or 手机 or Docker)
- 产品和科研结合
- 自动求微分(反向传播)
- 多语言支持(c++,java,JavaScript)
- 性能最优化
2、TensorFlow版本变迁
(1)、TensorFlow1.0——主要特性
- 支持XLA——Accelerate Linear Algebra(计算更快)
- 提升训练速度58倍
- 可以在移动设备运行
- 引入更高级别API——tf.layers/tf.metrics/tf.losses/tf/keras
- 支持Tensorflow调试器
- 支持docker镜像、引入tensorflow serving服务
(2)、Tensorflow1.0——架构
(3)、TensorFlow2.0——主要特性
- 1、使用tf.keras和eager mode(动态图模式)进行更简单的模型构建
- 使用tf.data加载数据
- 使用tf.keras构建模型,也可使用premade estimator来验证模型
- 使用tensorflow hub进行迁移学习
- 使用eager mode运行和调试
- 使用分发策略来进行分布式训练
- 导出到SavedMode
- 使用TensorFlow Serve、Tensorflow Lite、Tensorflow.js部署模型
- 2、鲁棒的跨平台模型部署
- TensorFlow服务
- 直接通过HTTP/RESR或GRPC/协议缓冲区
- TensorFlow Lite——可部署到Android、iOS和嵌入式系统上
- TensorFlow.js——在JavaScript中部署
- 其他语言
- C、Java、Go、C#、Rust、Julia、R等
- 3、强大的研究试验
- Keras功能API和子类API、允许创建复杂的拓扑结构
- 自定义训练逻辑、使用tf.GraddientTape和tf.custom_gradient进行更细粒度的控制
- 底层API自始至终可以与高层结合使用、完全的可定制
- 高级扩展:Ragged Tensor、Tensor2Tensor等
- 4、清除不推荐使用的API和减少重复来简化API
(4)、Tensorflow2.0——架构
3、TensorFlow vs. Pytorch
(1)、入门难易
- Tensorflow1.*
- 静态图(无eager mode)
- 学习额外概念
- 如图、会话、变量、占位符等
- 写样本代码
- Tensorflow2.0
- 动态图(eager mode默认打开)
- Eager mode避免1.0缺点,直接集成在Python中
- Pytorch
- 动态图
- Numpy的扩展,直接集成在Python中
动态图与静态图的区别:
Tensorflow1.0、pytorch、Tensorflow2.0代码比较:
实现计算1 + 1 / 2 + 1 / 2 ^ 2 + 1 / 2 ^ 3 + … + 1 / 2 ^ 50
# Tensorflow1.0实现
import tensorflow as tf
# 构建计算图
x = tf.Variable(0.)
y = tf.Variable(1.)
add_op = x.assign(x + y) # x = x + y
div_op = y.assign(y / 2) # y = y / 2
# TensorFlow1.0中必须先打开会话,才能计算数据流图
with tf.Session() as sess:
sess.run(tf.global_variables_initializer()) # 初始化会话
for iteration in range(50):
sess.run(add_op)
sess.run(div_op)
print(x.eval()) # 也可用sess.eval(x)
# Pytorch实现
import torch
x = torch.Tensor([0.])
y = torch.Tensor([1.])
for iteration in range(50):
x = x + y
y = y / 2
print(x)
# Tensorflow2.0实现
import tensorflow as tf
tf.enable_eager_execution() # 打开eager mode,不可逆
x = tf.constant(0.)
y = tf.constant(1.)
for iteration in range(50):
x = x + y
y = y / 2
print(x.numpy())
(2)、图创建和调试
(3)、全面性
(4)、序列化与部署
4、TensorFlow环境配置
(1)、本地配置
(2)、云端配置
- 为什么要在云上配置?
- 规格统一,节省自己的机器
- 有直接配置好环境的镜像
- 云环境
- google cloud配置——送300到免费体验
- Amazon云配置
- 实战
- 从0配置
- 从镜像配置