整理 | 夕颜出品 | AI科技大本营(ID:rgznai100)
【导读】 TensorFlow 2.0 于近期正式发布后,立即受到学术界与科研界的广泛关注与好评。此前,我们曾特邀专家回顾了 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 的概述,还含有基础、部署、大规模训练与加速、扩展,以及附录部分。
前言
此前,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 的最新安装步骤可参考官方网站上的说明(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 *
自定义层、损失函数和评估指标 *
TensorFlow 常用模块
tf.train.Checkpoint :变量的保存与恢复
TensorBoard:训练过程可视化
tf.data :数据集的构建与预处理
@tf.function :Graph Execution 模式 *
tf.TensorArray :TensorFlow 动态数组 *
tf.config:GPU 的使用与分配 *
指定当前程序使用的 GPU
设置显存使用策略
单 GPU 模拟多 GPU 环境
部署
大规模训练与加速
当我们拥有大量计算资源时,通过使用合适的分布式策略,可以充分利用这些计算资源,从而大幅压缩模型训练的时间。针对不同的使用场景,TensorFlow 在 tf.distribute.Strategy 中为我们提供了若干种分布式策略,从而能够更高效地训练模型。
2017 年 5 月,Alpha Go 在中国乌镇围棋峰会上,与世界第一棋士柯洁比试,并取得了三比零全胜战绩。之后的版本 Alpha Zero 可以通过自我学习 21 天即可以达到胜过中国顶尖棋手柯洁的 Alpha Go Master 的水平。
Alpha Go 背后的动力全部由 TPU 提供,TPU 使其能够更快地 “思考” 并在每一步之间看得更远。
扩展
TensorFlow Hub 模型复用(Jinpeng)
TensorFlow Datasets 数据集载入
Swift for TensorFlow (S4TF) (Huan)
S4TF 简介
S4TF 环境配置
本地安装 Swift for Tensorflow
在 Colaboratory 中快速体验 Swift for Tensorflow
在 Docker 中快速体验 Swift for TensorFlow
S4TF 基础使用
TensorFlow in Julia(Ziyang)
TensorFlow.jl 简介
TensorFlow.jl 环境配置
TensorFlow.jl 基础使用
附录
答疑区
(中文)TensorFlow 中文社区 “简单粗暴 TensorFlow” 版面:https://www.tensorflowers.cn/b/48 (中文的疑问和建议请来此处,将以中文回答和讨论。欢迎使用中文的开发者们前来 TensorFlow 中文社区交流讨论)
(英文)https://github.com/snowkylin/tensorflow-handbook/releases (英文的疑问或建议可在 GitHub issue 中提出,会以英文回答)
PDF 下载(旧版):
搜索页面:https://tf.wiki/search.html
作者乃北大学霸最后,我们有必要介绍一下《简单粗暴TensorFlow 2.0》的作者李锡涵。
(图片来源:领英)
据领英资料显示,李锡涵是来自北大信息科学技术学院的准理科硕士生,担任见习顾问和研究助理,2016年本科毕业于浙大竺可桢学院,并在 2015 年以交换生的身份进入交通大学。
李锡涵曾在微软亚研院机器学习组实习,在谷歌还是机器学习方面的GDE(Google Developers Expert),目前的研究重点是基于图的现实场景中多主体强化学习的应用。
【END】
热 文 推 荐
☞程序员如何通过 Git 来更好地提交消息?
☞国产嵌入式操作系统发展思考
☞起底方舟编译器的引用计数!
☞国产数据库激荡 40 年
☞2019 年诺贝尔物理学奖揭晓!三得主让宇宙“彻底改观”!
☞【戳进来有福利】|【技巧帖】3个Tips提升云性能
☞人体姿态估计的过去、现在和未来
☞Python新工具:用三行代码提取PDF表格数据
你点的每个“在看”,我都认真当成了喜欢