TensorFlow2.0入门到进阶系列——1_TensorFlow简介
1_TensorFlow简介
- 1、TensorFlow是什么
- 1.1、Google开源软件库
- 1.2、数据流图
- 1.3、特性
- 2、TensorFlow版本变迁与tf1.0架构
- 2.1 、TensorFlow版本变迁
- 2.1、TensorFlow1.0—主要特性
- 2.2、TensorFlow1.0—架构
- 3、TensorFlow2.0架构
- 3.1、TensorFlow2.0—主要特性
- 3.2、TensorFlow2.0—架构
- 3.3、TensorFlow2.0—简化的模型开发流程
- 3.4、TensorFlow2.0—强大的跨平台能力
- 3.5、TensorFlow2.0—强大的研究实验
- 4、TensorFlow vs PyTorch
- 4.1、入门时间
- 4.1、图创建和调试
- 4.1、全面性
- 4.1、序列化与部署
- 5、TensorFlow环境配置
- 5.1、本地配置
- 5.1、云端配置
1、TensorFlow是什么 1.1、Google开源软件库
- 采用数据流图,用于数值计算;
- 支持多种平台——GPU、CPU、移动设备;
- 最初用于深度学习,如今越来越通用
- 节点:处理数据
- 线:节点间的输入输出关系
- 线上运输张量
- 节点被分配到各种计算设备上运行
- 高度的灵活性
- 真正的可移植性
- 产品和科研结合
- 自动求微分(反向传播等)
- 多语言支持
- 性能最优化
文章图片
2.1、TensorFlow1.0—主要特性
- XLA—Accelerate Linear Algebra
- 提升训练速度58倍
- 可以在移动设备运行
- 引入更高级别的API—tf.layers/tf.metrics/tf.losses/tf.keras
- TensorFlow调试器
- 支持docker镜像,引入tensorflow serving服务
文章图片
3、TensorFlow2.0架构 3.1、TensorFlow2.0—主要特性
- 使用tf.keras和eager mode进行更加简单的模型构建;
- 鲁棒的跨平台模型部署;
- 强大的研究实验;
- 清除不推荐使用的API和减少重复来简化API。
文章图片
3.3、TensorFlow2.0—简化的模型开发流程
- 使用tf.data加载数据;
- 使用tf.keras构建模型,也可以使用premade estimator来验证模型
- 使用tensorflow hub进行迁移学习;
- 使用eager mode进行运行和调试;
- 使用分发策略来进行分布式训练;
- 导出到SavedModel;
- 使用Tensorflow Serve、Tensorflow Lite、Tensorflow.js部署模型。
- 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等。
- TensorFlow 1.*
- 静态图
- 学习额外概念
- 图、会话、变量、占位符等
- 写样本代码
- TensorFlow 2.0
- 动态图
- Eager mode避免1.0缺点,直接集成在python中
- PyTorch
- 动态图
- Numpy的扩展,直接集成在python中
图结构
- 静态图
- 效率高
- 动态图
- 调试容易
- tf 1.0
文章图片
文章图片
- pytorch
文章图片
- tf 1.0写2.0代码(打开 tf.enable_eager_execution())
TensorFlow 1.0 打开 enable_eager就和TensorFlow 2.0一样了
文章图片
- tf 2.0
文章图片
- python代码实现
文章图片
- TensorFlow 1.*
- 静态图、难以调试,需要学习tfdbg调试
- TensorFlow 2.0 与 pytorch
- 动态图,python自带调试工具
- pytorch缺少
- 沿维翻转张量(np.flip,np.flipud,np.fliplr)
- 检查无穷与非数值张量(np.is_nan,np.is_inf)
- 快速傅里叶变换(np.fft)
- 随着时间变化,越来越接近
- TensorFlow支持更加广泛
- 图保存为protocol buffer
- 跨语言
- 跨平台
- pytorch支持比较简单
- 用anacanda 自行百度
- Google_cloud
- AWS
推荐阅读
- 2018-02-06第三天|2018-02-06第三天 不能再了,反思到位就差改变
- 一个小故事,我的思考。
- 第三节|第三节 快乐和幸福(12)
- 你到家了吗
- 遇到一哭二闹三打滚的孩子,怎么办┃山伯教育
- 死结。
- 赢在人生六项精进二阶Day3复盘
- 子龙老师语录
- 异地恋中,逐渐适应一个人到底意味着什么()
- 即将到手三百万