#在此注明:本篇博客只标注出关键概念,并未扩展阐述
1.1 Tensorflow是什么?
Google的开源软件库
采取数据流图,用于数值计算
支持多种平台—GPU,CPU,移动设备
最初用于深度学习,变得越来越通用
1.1.1 数据流图
节点—处理数据
线—节点间的输入输出关系
线上运输张量tensor,即:所有n维数据
节点被分配到各种计算设备上运行
1.1.2 特性
高度灵活性
真正的可移植性
产品和科研结合
自动求微分
多语言支持
性能最优化
1.2 Tensorflow版本变迁
1.2.1 Tensorflow1.0—主要特性
XLA—Accelerate Linear Algebra 底层
提升训练速度58倍
可以在移动设备运行
引入更高级别的API—tf.layers/tf.metrics/tf.losses/tf.keras
Tensorflow调试器
支持docker镜像,引入Tensorflow serving服务
使用tf.keras和eager mode进行更加简单的模型构建:主推这两个feature
鲁棒的跨平台模型部署
强大的研究实验
清除不推荐使用的API和减少重复来简化API
Tensorflow2.0—简化的模型开发流程
使用tf.data加载数据
使用tf.keras构建模型,也可以使用premade estimator来验证模型
使用Tensorflow hub进行迁移学习
使用eager mode进行运行和调试
使用分发策略来进行分布式训练
导出到SavedModel
使用Tensorflow Serve、Tensorflow Lite、Tensorflow.js部署模型
Tensorflow2.0—强大的跨平台能力
Tensorflow服务
直接通过HTTP/REST或GRPC/协议缓冲区
Tensorflow Lite—可部署在Android、IOS和嵌入式系统上
Tensorflow.js—在javascript中部署模型
其他语言—C、java、Go、C#、Rust、Julia、R等
Tensorflow2.0—强大的研究实验
Keras功能API和子类API,允许构建复杂的拓扑结构
自定义训练逻辑,使用tf.GradientTape和tf.custom_gradient进行更细粒度的控制
低层API自始至终可以与高层结合使用,完全的可定制
高级扩展:Ragged Tensors、Tensor2Tensor等。
1.3 Tensorflow vs PyTorch
#1+1/2+1/2~2+1/2~3+.....+1/2~50
#Tensorflow1.0
import tensorflow as tf
print(tf.__version__)
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.global_variables_initializer())
for iteration in range(50):
sess.run(add_op)
sess.run(div_op)
print(x.eval())
#Pytorch
import torch
Print(torch.__version__)
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()
print(tf.__version__) #1.13.1
X = tf.constant(0.)
y = tf.constant(1.)
for iteration in range(50):
x = x+y
y = y/2
print(x.numpy())
#python
x = 0
y = 1
for iteration in range(50):
x = x+y
y = y/2
print(x)