前言

有人调侃我们说:

  • 程序员不如送外卖。送外卖是搬运食物,自己是搬运代码,都不产出新的东西……
  • 透支体力,又消耗健康,可替代性极强,30岁之后就要面临被优化的危险……
  • 想跳槽,但是更高的平台难进,同级别的平台又是重复……
  • 想利用业余时间学习提升,但是自己能力有限,很难形成知识体系…

这些其实都是初级程序员面临的困境,当你提高自身能力,登上更高的层级之后,无论薪资还是发展都会有很大的提升。

那么问题来了,怎么才能度过初级程序员的瓶颈,进阶成为高薪工程师呢?

我们正处在一个日新月异、飞速变革的时代,层出不穷的新技术每天都在冲击和改变我们的生活。人工智能无疑是其中最受关注、也是影响最深远的技术领域。它为计算机插上了翅膀,演变出许多从前根本无法想象的新技术、新应用。

AlphaGo Zero一台没有任何先验知识的人工智能机器,可以在几天内通过自我博弈成长为世界第一的围棋大师,超越人类几千年积累的经验;风格迁移应用能够自动将用户的照片转变为著名的绘画艺术风格;机器可以在零点几秒内完成翻译,把一种语言译成另一种语言。此外,有关人脸识别、自动驾驶等新技术的应用也都纷纷开始落地。在过去的几年内,人工智能技术不仅在学术上取得了巨大的突破,也开始走向寻常百姓家,真正为人们的生活提供便利。

本文主要为读者介绍这次人工智能浪潮最重要的组成部分一深度学习技术,使用的编程框架是Google公司的TensorFlow。 借助于Google公司巨大的影响力,TensorFlow一-经发布就引起了广泛的关注。

本文的主要特点如下:

●以实践、应用导向。深度学习需要深厚的数理基础,对于初学者来说有一定难度 。本书希望从实践出发,用具体的例子来引导读者学习深度学习技术和TensorFlow编程技巧。我们主要从实用性和趣味性两个方面考量,选择了21个实践项目,其中既有MNIST图像识别入门项目,也有目标检测、人脸识别、时间序列预测实用性项目,还有一些诸如 DeepDream趣味性项目。读者可以在实践中找到乐趣,逐渐进步,让学习深度学习和TensorFlow的过程不再那么痛苦。

●清晰而有深度的介绍。在编写过程中,尽量用简单的语言描述算法的原理,做到清晰而有条理。此外,深度学习是一门]还在快速发展的新技术,限于篇幅,很多内容不能完全展开,在大部分章节的末尾列出了“拓展阅读”材料,有兴趣的读者可以参考进一步学习。

●基于TensorFlow 1.4及以上版本。TensorFlow的发展非常迅速,本书代码全部基于TensorFlow 1.4及以上版本(包括1.4.0、1.4.1和1.5.0),并介绍了TensorFlow的一些新特性,如Time Series模块( 1.3 版本添加)新的MultiRNNCell函数( 1.2版本更改)等。本书的代码会在如下GitHub地址上提供,并会随新的TensorFlow版本的发布而同步更新
:htps:/github.com/hzy46/Deep- Learning-21-Examples。

如何阅读本文?

在阅读本文前,读者应当了解Linux系统的基本操作,并会使用Python进行简单的编程,还需具备基础的机器学习知识。本文的章节安排是依据读者对深度学习的了解循序渐进设立的,建议初学者从前至后阅读。由于深度学习和TensorFlow不易于理解,我建议读者分几遍阅读本文:

●第一遍先简单浏览一下,看一看书中都有哪些实践项目。当对基本的概向念有初步的理解时,就可以尝试配置一下开发环境。

●第二遍,从前至后阅读各章中算法的原理,并运行相应的实践项目。在这个过程中,希望读者能在自己动手的过程中找到学习的乐趣。读者可以对照源代码和书中的内容,深入学习各个模型的细节,此外还可以根据自己的需求对代码进行修改。本文会涉及大量TensorFlow中的函数,由于篇幅限制,不可能将每一个函数都介绍一遍,只介绍了比较重要的函数,读者可以参考TensorFlow的官方文档,查看其他函数的功能说明。

●第三遍,根据需要对照源程序看相关章节。此外,读者还可以参阅章节最后的拓展阅读进一步学习。最后,如果你是一名深度学习和TensorFlow的精通者,也可以根据需要直接跳读到相关章节,查阅你需要的内容。

因为本文内容包含的知识点实在是太多了,所以小编只把部分章节的知识点拿出来粗略的介绍了一下,每个小节里面都有更加细化的内容,大家仔细品读理解其中的真谛!!

目录

主要内容

本文以实践为导向,深入介绍了深度学习技术和TensorFlow框架编程内容。

通过本文,读者可以训练自己的图像识别模型、进行目标检测和人脸识别、完成一个风格迁移应用,还可以使用神经网络生成图像和文本,进行时间序列预测、搭建机器翻译引擎,训练机器玩游戏。

全文共包含21个项目,分为深度卷积网络、RNN网络、深度强化学习三部分,21章的内容。

读者可以在自已动手实践的过程中找到学习的乐趣,了解算法和编程框架的细节,让学习深度学习算法和TensorFlow的过程变得轻松和高效。

本文代码基于TensorFlow 1.4及以上版本,并介绍了TensorFlow中的一些新特性。

本文适合有一定机器学习基础的学生、研究者或从业者阅读,尤其是希望深入研究TensorFlow和深度学习算法的数据工程师,也适合对人工智能、深度学习感兴趣的在校学生,以及希望进入大数据应用的研究者。

第1章MNIST机器学习入门

当我们学习编程语言时,第一课通常会学习一个简单的“Hello World"程序,而MNIST手写字符识别可以算得上是机器学习界的“Hello World”。

MNIST是由Yann LeCun等人建立的一个手写字符数据集。它简单易用,是一个很好的入]范例。本章会以MNIST数据库为例,用TensorFlow读取数据集中的数据,并建立一个简单的图像识别模型,同时介绍TensorFlow 的几个核心概念。

第2章CIFAR-10与lmageNet图像识别

本章的主要任务还是图像识别,使用的数据集是CIFAR-10-- 这是 一个更接近普适物体的彩色图像数据集。主要通过CIFAR-10学习两方面的内容:一是TensorFlow中的数据读取原理,三是深度学习中数据增强的原理。最后还会介绍更加通用且复杂的ImageNet数据集和相应的图像识别模型。

第3章打造自己的图像识别模型

本章关注的重 点是如何使用TensorFlow 在自己的图像数据上训练深度学习模型,主要涉及的方法是对已经预训练好的ImageNet 模型进行微调( Fine-tune )。本章将会从四个方面讲解:数据准备、训练模型、在测试集上验证准确率、导出模型并对单张图片分类。

第4章Deep Dream模型

Deep Dream是Google公司在2015年公布的一项有趣的技术。在训练好的卷积神经网络中,只需要设定几个参数,就可以通过这项技术生成一张图像。生成出的图像不仅令人印象深刻,而且还能帮助我们理解卷积神经网络背后的运行机制。本章介绍Deep Dream的基本原理,并使用TensorFlow实现Deep Dream生成模型。

第5章深度学习中的目标检测

在前面的章节中,关注的大多数是图像识别问题:输入一张图像, 输出该图像对应的类别。本章将讨论目标检测问题。目标检测的输入同样是一张图像,但输出不单单是图像的类别,而是该图像中所含的所有目标物体以及它们的位置。通常使用矩形框来标识物体的位置,如图5-1所示。深度学习已经被广泛应用在目标检测问题.上,在性能上也远远超过了传统方法。本章会先介绍深度学习中的几个经典的目标检测方法,再以Google公司开源的TensorFlow Object Detection API为例,介绍如何在TensorFlow中进行目标检测。

第6章人脸检测和人脸识别

人脸检测( Face Detection )和人脸识别技术是深度学习的重要应用之一。

本章首先会介绍MTCNN算法的原理,它是基于卷积神经网络的一种高精度的实时人脸检测和对齐技术。接着,还会介绍如何利用深度卷积网络提取人脸特征,以及如何利用提取的特征进行人脸识别。最后会介绍如何在TensorFlow中实践上述算法。

第7章图像风格迁移

所谓图像风格迁移,是指利用算法学习著名画作的风格,然后再把这种风格应用到另外- -张图片上的技术。著名的图像处理应用Prisma 是利用风格迁移技术,将普通用户的照片自动变换为具有艺术家的风格的图片。本章会介绍这项技术背后的原理,此外,还会使用TensorFlow实现一个快速风格迁移的应用。

第8章GAN和DCGAN入门

GAN的全称为Generative Adversarial Networks,意为对抗生成网络。原始的GAN是一种无监督学习方法,它巧妙地利用“ 对抗”的思想来学习生成式模型,一旦训练完成后可以生成全新的数据样本。DCGAN将GAN的概念扩展到卷积神经网络中,可以生成质量较高的图片样本。GAN和DCGAN在各个领域都有广泛的应用,本章会先向读者介绍它们的原理,再介绍如何在TensorFlow中使用DCGAN生成图像,关于GAN和DCGAN的更多项目会在接下来的章节中进行介绍。

第9章pix2pix模型与自动上色技术

前一章介绍了GAN的基本原理以及如何使用GAN来生成样本,还有用于生成图像样本的一种特殊的GAN结构一- -DCGAN。本章 会介绍cGAN,与原始GAN使用随机噪声生成样本不同,cGAN可以根据指定标签生成样本。接着会介绍pix2pix模型,它可以看作是cGAN的一种特殊形式。最后会做一个实验:在TensorFlow中使用pix2pix 模型对灰度图像自动上色。

第10章分辨率:如何让图像变得更清晰

所谓超分辨率,就是指用某种方法提高图像的分辨率,从而让图像变得更加清晰。本章会使用上一章的pix2pix项目代码实现简单的4倍超分辨率重建,此外还会深入讲解pix2pix的代码实现。

第11章CycleGAN与非配对图像转换

前面已经介绍过了cGAN和对应的pix2pix模型,它们能够解决一类“图像翻译”问题。但是pix2pix模型要求训练样本必须是“严格成对”的,这种样本往往比较难以获得。本章会介绍CycleGAN, CycleGAN不必使用成对样本也可以进行“图像翻译”。还会介绍TensorFlow中CycleGAN的实现。

第12章RNN基本结构与Char RNN文本生成

从本章起,将开始学习循环神经网络( RNN)以及相关的项目。这一-章首先会向大家介绍RNN经典的结构,以及它的几个变体。接着将在TensorFlow中使用经典的RNN结构实现一个有趣的项目: Char RNN。CharRNN可以对文本的字符级概率进行建模,从而生成各种类型的文本。

第13章序列分类问题详解

在上一章中,主要介绍了RNN的几种结构,并且介绍了如何利用CharRNN进行文本生成。Char RNN对应着N VSN的RNN结构。在本章中,将专注于另一种RNN结构: N VS 1。这种结构的输入为序列,输出为类别,因此可以解决序列分类问题。常见的序列分类问题有文本分类、时间序列分类、音频分类等等。本章会使用TensorFlow制作- -个最简单的两类序列分类器。

第14章词的向量表示: word2vec与词嵌入

本章将暂时放下RNN的学习,聊- - 聊如何在TensorFlow中实现词嵌入。

所谓词嵌入,通俗来讲,是指将-一个词语(word)转换为一个向量(vector)表示,所以词嵌入有时又被叫作word2vec”。本章会先简单介绍为什么要把词转换为向量,接着会介绍两种词嵌入的方法CBOW和Skip-Gram,最后会以Skip-Gram为例,详细介绍怎么在TensorFlow中实现它。

第15章在TensorFlow中进行时间序列预测

常常会碰到各种各样时间序列预测问题,如商场人流量的预测、商品价格的预测、股价的预测,等等。TensorFlow 1.3版本新引入了一个TensorFlowTime Series 库(以下简称为TFTS),它可以帮助在TensorFlow中快速搭建高性能的时间序列预测系统,并提供包括AR、LSTM在内的多个模型。本章会通过实例的形式,详细地介绍TFTS库的使用方法。

第16章神经网络机器翻译技术

机器翻译是指用机器将一种语言自动翻译成另外一种语言的技术。传统的机器翻译一般采取基于规则或基于词组统计规律的方法。2013年以来,随着深度学习技术的发展,神经网络机器翻译( Neural Machine Translationn)技术开始兴起。与传统方法不同的是,神经网络机器翻译首先将源语言的句子向量化,转化成计算机可以“理解”的形式,再生成另一种语言的译文。

这种方法和人类的做法类似,可以产生更贴合原意也更加符合语法规范的翻译。目前,各大商业公司都开始使用神经网络机器翻译代替原来的机器翻译系统。

本章会首先介绍神经网络机器翻译技术的原理,再介绍如何使用TensorFlow NMT训练一个中英翻译引擎。

第17章看图说话:将图像转换为文字

所谓Image Caption,是指从图片中自动生成一段描述性文字 ,有点类似于小时候做过的“看图说话”。对于人来说,完成Image Caption是简单而自然的一件事,但对于机器来说,这项任务却充满了挑战性。原因在于,要完成Image Caption,机器不仅要能检测出图像中的物体,而且要理解物体之间的相互关系,最后还要用合理的语言表达出来,这里面每一个步 骤都颇具难度。

本章将首先介绍Image Caption 的几篇经典的论文,接着会介绍Google公司官方的TensorFlow实现。

第18章强化学习入门之Q

从本章开始,将开始学习强化学习( Reinforcement Learning )以及相关的实践案例。强化学习是机器学习的一个重要分支,它主要研究如何在环境中做出合适的动作以最大化某些奖励。这一章将会用一个简单的例子介绍强化学习的基本概念,以及一个基础算法一-Q Learning。

第19章强化学习入门之SARSA算法

SARSA(
State-Action-Reward-State-Action )算法同样是一种基本的强化学习的算法。它同Q Learning一样,都是在智能体行动过程中迭代式地学习Q函数,但是SARSA算法采取了和Q Learning不同的迭代更新策略。本章将通过修改上一章的程序来实现SARSA算法。

第20章深度强化学习: Deep Q Learning

在前面的章节中,学习了强化学习的两个基础算法: Q Learning 和SARSA。

本章将介绍Q Learning的升级版: Deep Q Network,简称DQN。DQN算法采用深度神经网络来表示2函数,通常也被称为Deep Q Learming,即“深度Q Learning算法”。在这一章中,会先介绍DQN算法的原理,再来介绍DQN算法的TensorFlow实现。

第21章策略梯度(Policy Gradient) 算法

不管是Q Learning算法、SARSA算法,还是Deep Q Learning,它们本质上都是学习一个价值函数Q(state, action)。 在环境中决策时,需要首先确定当前的状态,然后根据Q(state, action)选择一 个价值比较高的动作执行 。

本章要讲的策略梯度( Policy Gradient )方法和以上做法不同,它不再去学习价值函数Q,而是直接通过模型(如神经网络)输出需要采取的动作。在本章中,会先介绍策略梯度算法的原理,然后介绍如何使用TensorFlow 实现它。

总结

本文以TensorFlow为工具,从基础的MNIST手写体识别开始,介绍基础的卷积神经网络、循环神经网络,包括正处于前沿的对抗生成网络、深度强化学习等课题。

本文中所有内容由21个可以动手实验的项目组织起来,并在其中穿插TensorFlow的教学内容,让读者可以在实践中轻松地入门深度学习,掌握TensorFlow的使用方法,并积累丰富的深度学习实战经验!!!

通过本文,可以学到:

  • 在动手实践中快速进入深度学习领域。
  • 通过实验快速掌握TensorFlow的操作方法。
  • 掌握卷积神经网络、循环神经网络、对抗生成网络和深度强化学习等知识。
  • 积累丰富的深度学习实战项目,如图像分类、目标检测、人脸识别、图像生成、文本生成、序列分类、时间序列预测等。
  • 学习TensorFlow的一些新特性,如Time Series 模块、RNNCell等。

腾讯T4级架构师用21个项目带你吃透379页深度学习TensorFlow实践pdf相关推荐

  1. 地球那么大的开放世界游戏怎么做?腾讯云高级架构师为开发者设计了一套方案

    Unity全球开发者大会Unite Shanghai 2019在上海召开,期间诸多技术专家来到现场为开发者分享主题多元的技术演讲以及行业趋势分析. 腾讯云互联网行业架构师余多,在大会期间进行了&quo ...

  2. 6年拉力工作经验,学了阿里P8级架构师的7+1+1落地项目,跳槽阿里年薪直接40W+

    前言 统一说明一下,楼主是研究生,一般的985毕业,之前在工作了6年,做过的大项目数不胜数, 比如再造淘宝项目落地实战,某滴网约车项目,多人在线即时对战网游服务器,和家云服务平台,前后端分离某喵微信商 ...

  3. 适合阿里P8级架构师提升学习的再造淘宝阿里团队代码落地实战项目

    前言 蓦然回首自己做开发已经十年了,这十年中我获得了很多,技术能力.培训.出国.大公司的经历,还有很多很好的朋友.但再仔细一想,这十年中我至少浪费了五年时间,这五年可以足够让自己成长为一个优秀的程序员 ...

  4. 腾讯云首席架构师黄希彤:云时代的编程模式

    [CSDN现场报道]5月13日-15日,由全球最大中文IT社区CSDN主办的"2016中国云计算技术大会"(Cloud Computing Technology Conferenc ...

  5. 腾讯云tca架构师含金量及架构师具备的能力

    您是it行业内的人吗,您是从事it技术相关的工作吗.那么您一定知道架构师这个职位,您肯定也知道腾讯云tca架构师认证,腾讯云tca架构师有多少含金量呢?这个证数值不值得广大技术人员和开发人员报考,小编 ...

  6. 腾讯云tca架构师 分数要求不能算太高

    腾讯云tca架构师 分数要求不能算太高,只要求答对百分之七十的题目就可以获得该证书了,但是也并非那么容易,如果你想要裸考,个人认为你要不是计算机专业的学生,通过的几率也是很小的,只有认真地学过腾讯云t ...

  7. 腾讯云tca架构师认证题库内容全面吗?腾讯云tca架构师要具备哪些能力?

    现在科技的发展非常快速,有的时候已经到了让人难以相信的程度,比如大家当前比较关注的云计算领域,它的变化非常大,很多朋友都来没有弄明白是怎么一回事呢,但是这个市场发展的前景是非常好的,有很多朋友都想去参 ...

  8. 腾讯云tca架构师认证题库

    腾讯云tca架构师认证题库 74.(2.0分)下列关于如何使用CDB for MySQL提高业务负载能力的描述中,正确的有哪些项? A. 选择适合自己的数据库配置,包括数据库版本.实例规格.数据存储空 ...

  9. 安卓交流社区!阿里P8架构师的Android大厂面试题总结,详细的Android学习指南

    面试了一位工作12年的程序员, 这位老哥有3年java开发经验,2年H5,7年Android开发经验,简历上写着精通Java,Android,熟悉H5开发.没有具体的技术点. 说实话我很期待这位老哥的 ...

  10. 唯品会、滴滴、沪江架构师,关于微服务粒度、高可用、持续交互的实践分享交流(下)...

    架构师小组交流会:每期选择一个时下最热门的技术话题进行实践经验分享. 本期小组交流会邀请到了沪江黄凯.唯品会郑明华.滴滴赵伟.七牛云肖勤,对微服务粒度.高可用.持续交互展开了交流. 本期接着上期唯品会 ...

最新文章

  1. 通过Ajax方式上传文件(input file),使用FormData进行Ajax请求
  2. Kali Linux 安全渗透教程lt;第三更gt;1.2 安全渗透所需工具
  3. 记录通用权限管理系统组件使用心得体会,写技术博客赢IPad2
  4. 赛道一双周冠军分享:我不是TFboy,所以新写了baseline
  5. tornado autoreload 模式
  6. Martin Fowler谈微服务的优缺点
  7. HTML文档解析器 NekoHTML
  8. 什么是动作分析?动作分析的方法有哪些?
  9. android 照片同步到iphone,简明教程教你同步安卓设备照片到iCloud照片流
  10. html+txth换行,文本文档换行符号
  11. Java学习笔记Day2:流程控制
  12. 从VMware的vCenter中读取事件
  13. 百度网盘离线下载分析及实现
  14. 如何获取OpenAI API Key
  15. 高等数学:第五章 定积分(2)换元积分法 分部积分法 广义积分
  16. html调用一言api,纯 JavaScript 实现网站一言功能
  17. WebGoat安装及使用说明
  18. 4、Arduino_esp32 ADC使用
  19. 实木地板被机器人弄成坑_实木地板被修家具的压出凹痕看了心里难过怎么办
  20. iphone的图书iBooks如何设置垂直滚动看书

热门文章

  1. java泛型(1) 认识泛型
  2. 基于单片机仿指针显示的电子时钟设计(毕业设计资料)
  3. 人机融合智能时代的人心思考
  4. Android Studio 中Locat使用包名过滤无法显示的问题
  5. 解决AndroidStudio Locat侧边栏消失
  6. 贵州等保测评机构工程师(DJCP)目录-贵州等级保护测评机构工程师名单
  7. 免费节假日API第一时间更新2019年节假日放假安排 可怜的五一
  8. PS中字间距VA单位的解释
  9. 微信文件夹储存在什么位置?如何修改保存路径
  10. 安装老版本flash - 解决”正尝试安装的adobe flash player不是最新版本“的办法