美文网首页
1.tensorflow版本的变迁

1.tensorflow版本的变迁

作者: 李涛AT北京 | 来源:发表于2019-06-21 20:16 被阅读0次

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 服务(服务器)
      • 直接通过HTTP/REST或GRPC/协议缓冲区
    • TensorFlow Lite
      • 可以部署在Android, IOS和嵌入式系统
    • TensorFlow.js
      • 在javascript中部署模型
    • 其他语言
      • 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 来验证模型
    • 使用tensorflow hub 进行迁移学习
  • 使用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

相关文章

网友评论

      本文标题:1.tensorflow版本的变迁

      本文链接:https://www.haomeiwen.com/subject/uqouqctx.html