Tensorflow是什么?

Google的开源软件库:

  • 采取数据流,用于数值计算。
  • 支持多种平台 —— GPU、CPU、移动设备。(方便的无缝切换,不用更改大部分的代码)
  • 最初用于深度学习,变得越来越通用。(tensorflow并不只是适用于深度学习,大部分还是深度学习,只要是能抽象为数据流图的问题,都能使用它来解决)



数据流图:

  • 节点 —— 处理数据
    对数据进行计算,每个框框(方形,圆形)都表示一个节点。

  • 线 —— 节点输入输出的关系
    节点与节点之间的数据依赖。(如偏最上面的三个绿色节点,Cross Entropy 依赖 Softmax 和Cross Labels 的输出,通过计算得出新的值,如果前两个节点没有计算完,后面的节点是无法计算的。)

  • 线上运输张量(tensor)
    线上运输的数据,所有的n维构成了数据的集合,0维数据 ——> 数字,1维数据 ——> 向量,二维
    ——> 矩阵,大于等于3维的数据 ——> 高位矩阵。
    让tensor(张量)在数据流图中flow(流动)——>tensorflow

  • 节点被分配到各种计算设备上运行



特性:

  • 高度的灵活性
    可以表示为数据流图的都可使用,主要同于神经网络,卷积等都使用了封装。也可写自己的封装,就像panda函数那样。

  • 真正的可移植性
    可在很多设备上执行,如 CPU、GPU、移动设备。你在电脑里训练了一个model,可部署在服务器上,手机上,Docker上。

  • 多语言支持
    python、c++、java、R、javascript

  • 产品和科研结合

  • 自动求微分

  • 性能最优化



TF1.0 — 架构:




TF2.0 — 架构:




TF2.0 — 简化的模型开发流程:

  • 使用 tf.data 加载数据

  • 使用 tf.keras 构建模型,也可以使用 premade estimator 来验证模型

  • 使用 tensorflow hub 进行迁移学习

  • 使用 eager mode 进行运行和调试

  • 使用分发策略来进行分布式训练

  • 导出到 SavedModel

  • 使用 Tensorflow Serve、Tensorflow Lite、Tensorflow.js 部署模型