点击上方“AI算法与图像处理”,选择加"星标"或“置顶”
重磅干货,第一时间送达
来源:
AI科技大本营
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/b0de9d7850bfdf5b410ef9658b34d81f.jpeg)
(图片付费下载自视觉中国)
整理 | 夕颜
出品 | AI科技大本营(ID:rgznai100)
【导读】 TensorFlow 2.0 于近期正式发布后,立即受到学术界与科研界的广泛关注与好评。此前,AI 科技大本营曾特邀专家回顾了 TensorFlow 2.0 从初版到最新版本的发展史。今天,我们将介绍一本全面详解 TensorFlow 2.0 的手册。这本手册是 Google Summer of Code 2019 项目之一,从基础安装与环境配置、部署,到大规模训练与加速、扩展,全方位讲解 TensorFlow 2.0 的入门要点,并附录相关资料供读者参考。
这是一本简明的 TensorFlow 2.0 入门指导手册,基于 Keras 和 Eager Execution(即时运行)模式,力图让具备一定机器学习及 Python 基础的开发者们快速上手 TensorFlow 2.0。
本手册的所有代码基于 TensorFlow 2.0 正式版及 beta1 版本。
中文指南:
https://tf.wiki/
GitHub链接
:https://github.com/snowkylin/tensorflow-handbook
文中的所有示例代码
:https://github.com/snowkylin/tensorflow-handbook/tree/master/source/_static/code/zh
本手册所有章节如下图,不仅包含 TensorFlow 的概述,还含有基础、部署、大规模训练与加速、扩展,以及附录部分。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/1626acfdc4373bf3c1ff50b0d1dcf434.png)
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/5b46ff22acecc21548a17c11e5ef3434.png)
前言
此前,TensorFlow 所基于的传统 Graph Execution 的弊端,如入门门槛高、调试困难、灵活性差、无法使用 Python 原生控制语句等早已被开发者诟病许久。一些新的基于动态图机制的深度学习框架(如 PyTorch)也横空出世,并以其易用性和快速开发的特性而占据了一席之地。尤其是在学术研究等需要快速迭代模型的领域,PyTorch 等新兴深度学习框架已经成为主流。作者所在的数十人的机器学习实验室中,竟只有其一人 “守旧” 地使用 TensorFlow。
然而,直到目前,市面上相关的 TensorFlow 相关的中文技术书籍及资料仍然基于传统的 Graph Execution 模式,让不少初学者(尤其是刚学过机器学习课程的大学生)望而却步。由此,在 TensorFlow 正式支持 Eager Execution 之际,有必要出现一本全新的技术手册,帮助初学者及需要快速迭代模型的研究者,以一个全新的角度快速入门 TensorFlow。
同时,本手册还有第二个任务。市面上与 TensorFlow 相关的中文技术书籍大都以深度学习为主线,将 TensorFlow 作为这些深度学习模型的实现方式。这样固然有体系完整的优点,然而对于已经对机器学习或深度学习理论有所了解,希望侧重于学习 TensorFlow 本身的读者而言,就显得不够友好。
于是,作者希望编写一本手册,以尽量精简的篇幅展示 TensorFlow 作为一个计算框架的主要特性,并弥补官方手册的不足,力图能让已经有一定机器学习 / 深度学习知识及编程能力的读者迅速上手 TensorFlow,并在实际编程过程中可以随时查阅并解决实际问题。
适用群体
本书适用于以下读者:
-
已有一定机器学习 / 深度学习基础,希望将所学理论知识使用 TensorFlow 进行具体实现的学生和研究者;
-
曾使用或正在使用 TensorFlow 1.X 版本或其他深度学习框架(比如 PyTorch),希望了解 TensorFlow 2.0 新特性的开发者;
-
希望将已有的 TensorFlow 模型应用于业界的开发者或工程师。
提示
本书不是一本机器学习 / 深度学习原理入门手册。若希望进行机器学习 / 深度学习理论的入门学习,可参考附录中提供的一些入门资料。
TensorFlow 概述
-
学生和研究者:模型的建立与训练
-
开发者和工程师:模型的调用与部署
-
TensorFlow 能帮助我们做什么?
基础
-
TensorFlow 安装与环境配置
TensorFlow 的最新安装步骤可参考官方网站上的说明(https://tensorflow.google.cn/install)。TensorFlow 支持 Python、Java、Go、C 等多种编程语言以及 Windows、OSX、Linux 等多种操作系统,此处及后文均以 Python 3.7 为准。
提示
本章介绍在一般的个人电脑或服务器上直接安装 TensorFlow 2.0 的方法。关于在容器环境(Docker)、云平台中部署 TensorFlow 或在线上环境中使用 TensorFlow 的方法,见附录 使用 Docker 部署 TensorFlow 环境和在云端使用 TensorFlow 。软件的安装方法往往具有时效性,本节的更新日期为 2019 年 10 月。
-
-
一般安装步骤
-
GPU 版本 TensorFlow 安装指南
-
GPU 硬件的准备
-
NVIDIA 驱动程序的安装
-
CUDA Toolkit 和 cnDNN 的安装
-
-
第一个程序
-
IDE 设置
-
TensorFlow 所需的硬件配置 *
-
-
TensorFlow 基础
本章介绍 TensorFlow 的基本操作。
-
-
TensorFlow 1+1
-
自动求导机制
-
基础示例:线性回归
-
NumPy 下的线性回归
-
TensorFlow 下的线性回归
-
-
-
TensorFlow 模型建立与训练
本章介绍如何使用 TensorFlow 快速搭建动态模型。
-
-
模型(Model)与层(Layer)
-
基础示例:多层感知机(MLP)
-
数据获取及预处理:tf.keras.datasets
-
模型的构建:tf.keras.Model 和 tf.keras.layers
-
模型的训练:tf.keras.losses 和 tf.keras.optimizer
-
模型的评估:tf.keras.metrics
-
-
卷积神经网络(CNN)
-
使用 Keras 实现卷积神经网络
-
使用 Keras 中预定义的经典卷积神经网络结构
-
-
循环神经网络(RNN)
-
深度强化学习(DRL)
-
Keras Pipeline *
-
Keras Sequential/Functional API 模式建立模型
-
使用 Keras Model 的 compile 、 fit 和 evaluate 方法训练和评估模型
-
-
自定义层、损失函数和评估指标 *
-
自定义层
-
自定义损失函数和评估指标
-
-
-
TensorFlow 常用模块
-
tf.train.Checkpoint :变量的保存与恢复
-
TensorBoard:训练过程可视化
-
tf.data :数据集的构建与预处理
-
数据集对象的建立
-
数据集对象的预处理
-
数据集元素的获取与使用
-
实例:cats_vs_dogs 图像分类
-
-
@tf.function :Graph Execution 模式 *
-
@tf.function 基础使用方法
-
@tf.function 内在机制
-
AutoGraph:将 Python 控制流转换为 TensorFlow 计算图
-
使用传统的 tf.Session
-
-
tf.TensorArray :TensorFlow 动态数组 *
-
tf.config:GPU 的使用与分配 *
-
指定当前程序使用的 GPU
-
设置显存使用策略
-
单 GPU 模拟多 GPU 环境
-
-
部署
-
TensorFlow 模型导出
-
使用 SavedModel 完整导出模型
-
Keras Sequential save 方法(Jinpeng)
-
-
TensorFlow Serving
-
TensorFlow Serving 安装
-
TensorFlow Serving 模型部署
-
Keras Sequential 模式模型的部署
-
自定义 Keras 模型的部署
-
-
在客户端调用以 TensorFlow Serving 部署的模型
-
Python 客户端示例
-
Node.js 客户端示例(Ziyang)
-
-
-
TensorFlow Lite(Jinpeng)
-
模型转换
-
Android 部署
-
Quantization 模型转换
-
总结
-
-
TensorFlow in JavaScript(Huan)
-
TensorFlow.js 简介
-
浏览器中使用 TensorFlow.js 的优势
-
TensorFlow.js 性能对比
-
-
TensorFlow.js 环境配置
-
在浏览器中使用 TensorFlow.js
-
在 Node.js 中使用 TensorFlow.js
-
在微信小程序中使用 TensorFlow.js
-
-
TensorFlow.js 模型部署
-
通过 TensorFlow.js 加载 Python 模型
-
使用 TensorFlow.js 模型库
-
-
TensorFlow.js 模型训练 *
-
大规模训练与加速
-
TensorFlow 分布式训练
当我们拥有大量计算资源时,通过使用合适的分布式策略,可以充分利用这些计算资源,从而大幅压缩模型训练的时间。针对不同的使用场景,TensorFlow 在 tf.distribute.Strategy 中为我们提供了若干种分布式策略,从而能够更高效地训练模型。
-
-
单机多卡训练:MirroredStrategy
-
多机训练:MultiWorkerMirroredStrategy
-
-
使用 TPU 训练 TensorFlow 模型(Huan)
2017 年 5 月,Alpha Go 在中国乌镇围棋峰会上,与世界第一棋士柯洁比试,并取得了三比零全胜战绩。之后的版本 Alpha Zero 可以通过自我学习 21 天即可以达到胜过中国顶尖棋手柯洁的 Alpha Go Master 的水平。
Alpha Go 背后的动力全部由 TPU 提供,TPU 使其能够更快地 “思考” 并在每一步之间看得更远。
-
TPU 简介
-
什么是 TPU
-
为什么使用 TPU
-
TPU 性能
-
-
TPU 环境配置
-
免费 TPU:Google Colab
-
Cloud TPU
-
-
TPU 基础使用
扩展
-
TensorFlow Hub 模型复用(Jinpeng)
-
TensorFlow Datasets 数据集载入
-
Swift for TensorFlow (S4TF) (Huan)
-
S4TF 简介
-
为什么要使用 Swift 进行 Tensorflow 开发
-
-
S4TF 环境配置
-
本地安装 Swift for Tensorflow
-
在 Colaboratory 中快速体验 Swift for Tensorflow
-
在 Docker 中快速体验 Swift for TensorFlow
-
-
S4TF 基础使用
-
在 Swift 中使用标准的 TensorFlow API
-
在 Swift 中直接加载 Python 语言库
-
语言原生支持自动微分
-
MNIST 数字分类
-
-
-
TensorFlow in Julia(Ziyang)
-
TensorFlow.jl 简介
-
为什么要使用 Julia ?
-
-
TensorFlow.jl 环境配置
-
在 docker 中快速体验 TensorFlow.jl
-
在 julia 包管理器中安装 TensorFlow.jl
-
-
TensorFlow.jl 基础使用
-
MNIST 数字分类
-
-
附录
-
图模型下的 TensorFlow
-
TensorFlow 1+1
-
基础示例:线性回归
-
-
使用 Docker 部署 TensorFlow 环境
-
在云端使用 TensorFlow
-
在 Colab 中使用 TensorFlow
-
在 Google Cloud Platform(GCP)中使用 TensorFlow
-
在 Compute Engine 建立带 GPU 的实例并部署 TensorFlow
-
使用 AI Platform 中的 Notebook 建立带 GPU 的在线 JupyterLab 环境
-
-
在阿里云上使用 GPU 实例运行 Tensorflow(Ziyang)
-
-
部署自己的交互式 Python 开发环境 JupyterLab
-
TensorFlow 性能优化
-
参考资料与推荐阅读
-
术语中英对照表
答疑区
-
(中文)TensorFlow 中文社区 “简单粗暴 TensorFlow” 版面:https://www.tensorflowers.cn/b/48 (中文的疑问和建议请来此处,将以中文回答和讨论。欢迎使用中文的开发者们前来 TensorFlow 中文社区交流讨论)
-
(英文)https://github.com/snowkylin/tensorflow-handbook/releases (英文的疑问或建议可在 GitHub issue 中提出,会以英文回答)
PDF 下载(旧版):
-
中文版:https://www.tensorflowers.cn/t/6230 (同时也有英文版下载)
-
英文版:https://github.com/snowkylin/tensorflow-handbook/releases
搜索页面:https://tf.wiki/search.html
作者乃北大学霸
最后,我们有必要介绍一下《简单粗暴TensorFlow 2.0》的作者李锡涵。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/b13d9b0e1a34e8dadb15d7b54b38b398.jpeg)
据领英资料显示,李锡涵是来自北大信息科学技术学院的准理科硕士生,担任见习顾问和研究助理,2016年本科毕业于浙大竺可桢学院,并在 2015 年以交换生的身份进入交通大学。
李锡涵曾在微软亚研院机器学习组实习,在谷歌还是机器学习方面的GDE(Google Developers Expert),目前的研究重点是基于图的现实场景中多主体强化学习的应用。
有热门推荐?
1.
2.
4.
6.
7.
8.
9.
加群交流
欢迎小伙伴加群交流,目前已有交流群的方向包括:AI学习交流群,目标检测,秋招互助,资料下载等等;加群可扫描并回复感兴趣方向即可
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/2cba20d74577dec51dc9daf89a6a59e5.png)
你点的每个“在看”,我都认真当成了喜欢