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 部署模型