Tensorflow 1.X —— 主要特征
- XLA —— Accelerate Linear Algebra
- 引入更高级的API
tf.layers / tf.metrics / tf.losses / tf.keras
- Tensorflow 调试器
- 支持docker 镜像,引入tensorflow serving服务
TensorFlow 1.X ———— 架构
- Keras
- Estimator
- datasets
- Layers
- Distribution engine
TensorFlow 2.0 ———— 主要特性
- 使用tf.Keras和eager mode进行更加简单的模型构建
- 鲁棒的跨平台模型部署
- TensorFlow 服务(服务器)
- TensorFlow Lite
- TensorFlow.js
- 其他语言
- C,JAVA, Go, C#, Rust, Julia, R等
- 强大的研究实验
- Keras功能API和子类API,允许创建复杂的拓扑结构
- 自定义训练逻辑,使用tf.GradientTape和tf.custom_gradient进行更细颗粒度的控制
- 底层API自始至终可以与高层结合使用,完全的可定制。
- 高级扩展:Ragged Tensors, Tensor2Tensor等
- 清楚不推荐使用的API和减少重复来简化API
TensorFlow 2.0 ———— 架构
- 变动1:使用更高级的封装,在tf.Keras和Premade Estimators 与 Distribution Strategy之间减少了tf.layers的高级API,;
- 变动2:在架构中,添加了deployment模块,增加了跨平台的鲁棒性;
TensorFlow 2.0 ————开发流程
- 使用tf.data加载数据
- 使用tf。Keras构建模型,也可以使用premade estimate 来验证模型
- 使用eager mode进行运行和调试
- 使用分发策略来进行分布式训练
- 导出到SavedModel
- 使用TensorFlow Serve,TensorFlow Lite,Tensorflow.js 部署模型
tf 1.x版本,2.0版本,torch 对比
# 实现 1 + 1/2 + 1/2^2 + 1/2^3 + ... + 1/2^n
import warnings
warnings.filterwarnings('ignore')
import tensorflow as tf
print(tf.__version__)
# 1.X 版本实现
x = tf.Variable(0.)
y = tf.Variable(1.)
print(x)
print(y)
# x=x+y
add_op = x.assign(x+y)
# y=y/2
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())
运行结果
1.12.0
<tf.Variable 'Variable_18:0' shape=() dtype=float32_ref>
<tf.Variable 'Variable_19:0' shape=() dtype=float32_ref>
2.0
# torch 实现
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)
运行结果
1.0.1
tensor([2.])
# tf 2.0
import tensorflow as tf
print(tf.__version__)
x = tf.Variable(0.)
y = tf.Variable(1.)
for iteration in range(50):
x=x+y
y=y/2
print(x.numpy())
运行结果
2.0.0-beta1
2.0
网友评论