为什么要学tensflow
深度学习发展迅猛
框架灵活
google开发
公司应用广泛
2.0更加灵活
后面会学习的项目
图像分类
房价预测
泰坦尼克号生存预测
文本分类
文本生成
机器翻译
核心部分
模型训练
tesorboard----> 查看模型训练进度
模型保存和部署
分布式训练-----> 加速训练速度,提升训练效率
TensorFlow常用库:Tfds, tfhub,tensor2tensor
多平台云端环境GPU:Goolgle cloud环境配置,AWS环境配置
kaggle平台:数据使用 和 打比赛
总纲要
tensorflow
tesorflow就是google的开源软件库
深度学习领域最为广泛的开源库
特点
采用 数据流图,用于数值计算
支持多平台——GPU,CPU和移动设备
什么是数据流图
节点: 图中的方框,圆形都是。
主要是 用于 处理数据。对数据进行计算。
线: 节点间的输入输出关系,代表节点间的数据依赖。
张量:线上运输的数据 就是 张量。即为 tensor,也就是n维数据。
0维 数组
1维 向量
2维 矩阵
n维 n维矩阵 (大于等于三维)
最后,图中的节点 被 分配到 各个计算设备上运行。
tensflow 特性
高度灵活性(封装了很多深度学习的封装,也可以写自己的函数)
可移植性(可以在不同平台上部署执行)
产品和科研结合
自动求微分(尤其是反向传播的求解)
多语言支持(python,C++,JAVA,R等)
性能最优化
tensflow版本变化
2015年11月开源
2016年 支持window,分布式tensflow
2017年 keras继承,1.0稳定版本,初始化TPU支持
2018年 TF Hub,TensorFlow.js, Clould TPU板块和管道v1.6,新的分布式API策略,概率编程工具
2019年 1.10版本,1.12API改进,2.0发布
版本1.0和2.0
1.0 主要特性
XLA特性 提升训练速度。58倍
可以在移动设备上运行
引入高级API tf.layers tf.metrics tf.losses
tensorflow调试器
支持docker镜像,引入tensorflow service服务
2.0主要特性
使用 tf.keras 和 eager mode 更加简单模型构造
鲁棒的跨平台部署
清楚不常用API
不仅仅是一个架构图
更像是 一个开发流程
tf2.0开发流程
1 加载数据
2 模型构建
3 模型运行 和 调试
4 分发策略 分布式训练
5 导出模型
6 部署模型
强大跨平台能力
强大研究实验能力
两大深度学习框架 tensorflow VS pytorch
pytorch是Facebook的框架
比较四点
代码对比:
对于tensflow 1.0 来说
import tensflow as tf
print(tf.__version__) # 打印出tensflow的版本
定义变量
x = tf.Variable(0.)
y = tf.Variable(1.)
print(x)
print(y)
定义两个操作
add_op = x.assign(x + y)
div_op = y.assign(y / 2)
上面相当于构建好图了,
下面是执行操作。
必须有绘画概念
打开绘画
初始化
执行
打开绘画
with tf.Session() as sess:
初始化绘画
sess.run(tf.golbal_variables_initializer())
操作执行50次
for iteration in range(50):
使用操作对象执行50次
sess.run(add_op)
sess.run(div_op)
print(x.eval())
使用pytorch
import torch
print(torch.__version__)
x = torch.Tensor([0.])
y = torch.Tebsir([1.])
for iteraion in range(50):
x = x + y
y = y / 2
print(x)
tensor2.0
对于tensflow1.13版本来说,
打开 eager_execution()就相当于2.0操作了
import tensorflow as tf
tf.enable_eager_execution() # 如果是tf2.0,不用这一行
print(tf.__version__)
定义两个变量
循环50次
x = tf.constant(0.)
y = tf.constant(1.)
for interaion in range(50):
x = x+ y
y = y /2
print(x.numpy())
纯python执行
图的创建和调试
全面性
序列化 和 部署
总结:
tf1 难用
tf2 和 pytorch 好用,接近,好调试
tf2 部署,应用最广泛