TensorFlow2.0入门到进阶系列——1_TensorFlow简介

1、TensorFlow是什么

1.1、Google开源软件库

  • 采用数据流图,用于数值计算;
  • 支持多种平台——GPU、CPU、移动设备;
  • 最初用于深度学习,如今越来越通用

1.2、数据流图

  • 节点:处理数据
  • 线:节点间的输入输出关系
  • 线上运输张量
  • 节点被分配到各种计算设备上运行

1.3、特性

  • 高度的灵活性
  • 真正的可移植性
  • 产品和科研结合
  • 自动求微分(反向传播等)
  • 多语言支持
  • 性能最优化

2、TensorFlow版本变迁与tf1.0架构

2.1 、TensorFlow版本变迁

TensorFlow2.0入门到进阶系列——1_TensorFlow简介

2.1、TensorFlow1.0—主要特性

  • XLA—Accelerate Linear Algebra
    • 提升训练速度58倍
    • 可以在移动设备运行
  • 引入更高级别的API—tf.layers/tf.metrics/tf.losses/tf.keras
  • TensorFlow调试器
  • 支持docker镜像,引入tensorflow serving服务

2.2、TensorFlow1.0—架构

TensorFlow2.0入门到进阶系列——1_TensorFlow简介

3、TensorFlow2.0架构

3.1、TensorFlow2.0—主要特性

  • 使用tf.keras和eager mode进行更加简单的模型构建;
  • 鲁棒的跨平台模型部署;
  • 强大的研究实验;
  • 清除不推荐使用的API和减少重复来简化API。

3.2、TensorFlow2.0—架构

TensorFlow2.0入门到进阶系列——1_TensorFlow简介

3.3、TensorFlow2.0—简化的模型开发流程

  • 使用tf.data加载数据;
  • 使用tf.keras构建模型,也可以使用premade estimator来验证模型
    • 使用tensorflow hub进行迁移学习;
  • 使用eager mode进行运行和调试;
  • 使用分发策略来进行分布式训练;
  • 导出到SavedModel;
  • 使用Tensorflow Serve、Tensorflow Lite、Tensorflow.js部署模型。

3.4、TensorFlow2.0—强大的跨平台能力

  • Tensorflow服务
    • 直接通过HTTP/REST或GRPC/协议缓冲区;
  • Tensorflow Lite——可部署在Android、iOS和嵌入式系统上;
  • Tensorflow.js——在javascript中部署模型;
  • 其他语言
    • C、Java、Go、C#、Rust、Julia、R等。

3.5、TensorFlow2.0—强大的研究实验

  • keras功能API和子类API,允许创建复杂的拓扑结构;
  • 自定义训练逻辑,使用tf.GradientTape和tf.custom_gradient进行更细粒度的控制;
  • 低层API自始至终可以与高层结合使用,完全的可定制;
  • 高级扩展:Ragged Tensors、Tensor2Tensor等。

4、TensorFlow vs PyTorch

4.1、入门时间

  • TensorFlow 1.*

    • 静态图
    • 学习额外概念
      • 图、会话、变量、占位符等
    • 写样本代码
  • TensorFlow 2.0

    • 动态图
    • Eager mode避免1.0缺点,直接集成在python中
  • PyTorch

    • 动态图
    • Numpy的扩展,直接集成在python中
      图结构
  • 静态图

    • 效率高
  • 动态图

    • 调试容易
  • tf 1.0
    TensorFlow2.0入门到进阶系列——1_TensorFlow简介
    TensorFlow2.0入门到进阶系列——1_TensorFlow简介

  • pytorch
    TensorFlow2.0入门到进阶系列——1_TensorFlow简介

  • tf 1.0写2.0代码(打开 tf.enable_eager_execution())

注:
TensorFlow 1.0 打开 enable_eager就和TensorFlow 2.0一样了
TensorFlow2.0入门到进阶系列——1_TensorFlow简介

  • tf 2.0
    TensorFlow2.0入门到进阶系列——1_TensorFlow简介
  • python代码实现
    TensorFlow2.0入门到进阶系列——1_TensorFlow简介

4.1、图创建和调试

  • TensorFlow 1.*
    • 静态图、难以调试,需要学习tfdbg调试
  • TensorFlow 2.0 与 pytorch
    • 动态图,python自带调试工具

4.1、全面性

  • pytorch缺少
    • 沿维翻转张量(np.flip,np.flipud,np.fliplr)
    • 检查无穷与非数值张量(np.is_nan,np.is_inf)
    • 快速傅里叶变换(np.fft)
  • 随着时间变化,越来越接近

4.1、序列化与部署

  • TensorFlow支持更加广泛
    • 图保存为protocol buffer
    • 跨语言
    • 跨平台
  • pytorch支持比较简单

5、TensorFlow环境配置

5.1、本地配置

  • 用anacanda 自行百度

5.1、云端配置

  • Google_cloud
  • AWS