热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

tensorflow如何做幂律分布_如何简单粗暴地上手TensorFlow2.0?

整理|夕颜出品|AI科技大本营(ID:rgznai100)【导读】TensorFlow2.0于近期正式发布后,立即受到学术界与科研界的广泛关注与好评。此前࿰

ba936f1236d24316d3dcffb15061b9ba.png

d3359c5322a213bb56655ef9ce005b38.png

整理 | 夕颜出品 | 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 的概述,还含有基础、部署、大规模训练与加速、扩展,以及附录部分。

5a874e3d4b1ead7ef701025a23be1930.png 18df20de15b47e3fe2c57031c558e100.png 

b3fe81429a721b017579cb3c8c354ada.png

前言

此前,TensorFlow 所基于的传统 Graph Execution 的弊端,如入门门槛高、调试困难、灵活性差、无法使用 Python 原生控制语句等早已被开发者诟病许久。一些新的基于动态图机制的深度学习框架(如 PyTorch)也横空出世,并以其易用性和快速开发的特性而占据了一席之地。尤其是在学术研究等需要快速迭代模型的领域,PyTorch 等新兴深度学习框架已经成为主流。作者所在的数十人的机器学习实验室中,竟只有其一人 “守旧” 地使用 TensorFlow。

然而,直到目前,市面上相关的 TensorFlow 相关的中文技术书籍及资料仍然基于传统的 Graph Execution 模式,让不少初学者(尤其是刚学过机器学习课程的大学生)望而却步。由此,在 TensorFlow 正式支持 Eager Execution 之际,有必要出现一本全新的技术手册,帮助初学者及需要快速迭代模型的研究者,以一个全新的角度快速入门 TensorFlow。

同时,本手册还有第二个任务。市面上与 TensorFlow 相关的中文技术书籍大都以深度学习为主线,将 TensorFlow 作为这些深度学习模型的实现方式。这样固然有体系完整的优点,然而对于已经对机器学习或深度学习理论有所了解,希望侧重于学习 TensorFlow 本身的读者而言,就显得不够友好。

于是,作者希望编写一本手册,以尽量精简的篇幅展示 TensorFlow 作为一个计算框架的主要特性,并弥补官方手册的不足,力图能让已经有一定机器学习 / 深度学习知识及编程能力的读者迅速上手 TensorFlow,并在实际编程过程中可以随时查阅并解决实际问题。

1a205c700e996297e63d51a8aeaa7b47.png

适用群体

本书适用于以下读者:

  • 已有一定机器学习 / 深度学习基础,希望将所学理论知识使用 TensorFlow 进行具体实现的学生和研究者;

  • 曾使用或正在使用 TensorFlow 1.X 版本或其他深度学习框架(比如 PyTorch),希望了解 TensorFlow 2.0 新特性的开发者;

  • 希望将已有的 TensorFlow 模型应用于业界的开发者或工程师。

提示:本书不是一本机器学习 / 深度学习原理入门手册。若希望进行机器学习 / 深度学习理论的入门学习,可参考附录中提供的一些入门资料。

cc8b059e7855e9c0222596fba6f78cc9.png

TensorFlow 概述

  • 学生和研究者:模型的建立与训练

  • 开发者和工程师:模型的调用与部署

  • TensorFlow 能帮助我们做什么?

200beac842e1d027b4372d3696782f23.png基础
  • 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 环境

b375761251a0e9853784e1a66d6ef4ab.png部署

  • 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 模型训练 *

33958f4cffdb6b27302b447f15fb644b.png

大规模训练与加速

  • 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 基础使用

e13a12d9c944b38b57913a5eae978f56.png扩展

  • 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 数字分类

3f1e37c7811813466f9e264d40b5b66d.png附录
  • 图模型下的 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 性能优化

  • 参考资料与推荐阅读

  • 术语中英对照表

ebdb7a9409c7b6f3786c0ddbc147c88b.png

答疑区

  • (中文)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

916f8db47db83af6ddc2a2ef90a89607.png作者乃北大学霸

最后,我们有必要介绍一下《简单粗暴TensorFlow 2.0》的作者李锡涵。     

d13224c8c4290f9d1e55859fa34024f4.png       (图片来源:领英)

据领英资料显示,李锡涵是来自北大信息科学技术学院的准理科硕士生,担任见习顾问和研究助理,2016年本科毕业于浙大竺可桢学院,并在 2015 年以交换生的身份进入交通大学。

李锡涵曾在微软亚研院机器学习组实习,在谷歌还是机器学习方面的GDE(Google Developers Expert),目前的研究重点是基于图的现实场景中多主体强化学习的应用。

【END】

64c24592517a5133d75eca04cfd4eb3c.png

 热 文 推 荐 

☞程序员如何通过 Git 来更好地提交消息?

☞国产嵌入式操作系统发展思考

☞起底方舟编译器的引用计数!

☞国产数据库激荡 40 年

☞2019 年诺贝尔物理学奖揭晓!三得主让宇宙“彻底改观”!

☞【戳进来有福利】|【技巧帖】3个Tips提升云性能

☞人体姿态估计的过去、现在和未来

☞Python新工具:用三行代码提取PDF表格数据

12365c19243fe8c6be50373b2209e1ce.png你点的每个“在看”,我都认真当成了喜欢



推荐阅读
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
  • 由于同源策略的限制,满足同源的脚本才可以获取资源。虽然这样有助于保障网络安全,但另一方面也限制了资源的使用。那么如何实现跨域呢,以下是实现跨域的一些方法。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • 华为鸿蒙系统官网2.0报名方法及适用设备
    本文介绍了华为鸿蒙系统官网2.0报名的适用设备、报名方法以及三种方式,包括在应用商店下载开发者联盟app、在官网中进行报名、在微信公众号中申请体验HarmonyOS 2.0 手机开发者Beta版本。同时提醒错过测试机会的用户可以等待后续的正式版发布。 ... [详细]
  • EzPP 0.2发布,新增YAML布局渲染功能
    EzPP发布了0.2.1版本,新增了YAML布局渲染功能,可以将YAML文件渲染为图片,并且可以复用YAML作为模版,通过传递不同参数生成不同的图片。这个功能可以用于绘制Logo、封面或其他图片,让用户不需要安装或卸载Photoshop。文章还提供了一个入门例子,介绍了使用ezpp的基本渲染方法,以及如何使用canvas、text类元素、自定义字体等。 ... [详细]
  • 在IDEA中运行CAS服务器的配置方法
    本文介绍了在IDEA中运行CAS服务器的配置方法,包括下载CAS模板Overlay Template、解压并添加项目、配置tomcat、运行CAS服务器等步骤。通过本文的指导,读者可以轻松在IDEA中进行CAS服务器的运行和配置。 ... [详细]
  • 判断编码是否可立即解码的程序及电话号码一致性判断程序
    本文介绍了两个编程题目,一个是判断编码是否可立即解码的程序,另一个是判断电话号码一致性的程序。对于第一个题目,给出一组二进制编码,判断是否存在一个编码是另一个编码的前缀,如果不存在则称为可立即解码的编码。对于第二个题目,给出一些电话号码,判断是否存在一个号码是另一个号码的前缀,如果不存在则说明这些号码是一致的。两个题目的解法类似,都使用了树的数据结构来实现。 ... [详细]
  • 文章目录题目:二叉搜索树中的两个节点被错误地交换。基本思想1:中序遍历题目:二叉搜索树中的两个节点被错误地交换。请在不改变其结构的情况下 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了源码分析--ConcurrentHashMap与HashTable(JDK1.8)相关的知识,希望对你有一定的参考价值。  Concu ... [详细]
  • Python15行代码实现免费发送手机短信,推送消息「建议收藏」
    Python15行代码实现免费发 ... [详细]
author-avatar
射手座的双子55
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有