http://product.dangdang.com/25207334.html

内容 简 介

本书总的指导思想是在掌握深度学习的基本知识和特性的基础上,培养使用TensorFlow进行实际编程以解决图像处理相关问题的能力。全书力求深入浅出,通过通俗易懂的语言和详细的程序分析,介绍TensorFlow的基本用法、高级模型设计和对应的程序编写。

本书共22章,内容包括Python类库的安装和使用、TensorFlow基本数据结构和使用、TensorFlow数据集的创建与读取、人工神经网络、反馈神经网络、全卷积神经网络的理论基础、深度学习模型的创建、模型的特性、算法、ResNet、Slim、GAN等。本书强调理论联系实际,重点介绍TensorFlow编程解决图像识别的应用,提供了大量数据集,并以代码的形式实现了深度学习模型,以供读者参考。

本书既可作为学习人工神经网络、深度学习、TensorFlow程序设计以及图像处理等相关内容的程序设计人员培训和自学用书,也可作为高等院校和培训机构相关专业的教材。

前  言

我们处于一个变革的时代!

给定一个物体,让一个3岁的小孩描述这个物体是什么,似乎是一件非常简单的事情。然而将同样的东西放在计算机面前,让它描述自己看到了什么,这在不久以前还是一件不可能的事。

让计算机学会“看”东西,这是一个专门的学科——计算机视觉所正在做的工作。借助于人工神经网络和深度学习的发展,近年来计算机视觉在研究上取得了重大突破。通过模拟生物视觉所构建的卷积神经网络模型在图像识别和分类上取得了非常好的效果。

而今,借助于深度学习的发展,使用人工智能去处理常规劳动、理解语音语义、帮助医学诊断和支持基础科研工作,这些曾经是梦想的东西似乎都在眼前。

写作本书的原因

TensorFlow作为最新的、应用范围最为广泛的深度学习开源框架自然引起了广泛的关注,它吸引了大量程序设计和开发人员进行相关内容的开发与学习。掌握TensorFlow程序设计基本技能的程序设计人员成为当前各组织和单位热切寻求的热门人才。他们的主要工作就是利用获得的数据集设计不同的人工神经模型,利用人工神经网络强大的学习能力提取和挖掘数据集中包含的潜在信息,编写相应的TensorFlow程序对数据进行处理,对其价值进行进一步开发,为商业机会的获取、管理模式的创新、决策的制定提供相应的支持。随着越来越多的组织、单位和行业对深度学习应用的重视,高层次的TensorFlow程序设计人员必将成为就业市场上紧俏的人才。

目前来说,TensorFlow虽然被谷歌开源公布只有不到两年时间,但是其在工业、商业以及科学研究上的应用量很大,使之成为时下最热门的深度学习框架。由于国内翻译和知识传播的滞后性等多方面的原因,国内对这方面的介绍较为欠缺,缺少最新 TensorFlow框架使用和设计的相关内容,从而造成了知识传播的延迟。学习是为了掌握新知识、获得新能力,不应是学习已经被摒弃的内容。

其次,与其他应用框架不同,TensorFlow并不是一个简单的编程框架,深度学习也不是一个简简单单的名词,而是需要相关研究人员对隐藏在其代码背后的理论进行学习、掌握一定的数学知识和理论基础的。笔者具有长期一线理科理论教学基础,可以将其中的理论知识以非常浅显易懂的语言进行介绍和描述,这点是市面上的某些相关书籍所无法比拟的。

本书是为了满足广大TensorFlow程序设计和开发人员学习最新的TensorFlow程序代码要求而出版的。本书对涉及的深度学习的结构与编程代码做了循序渐进的介绍与说明,以解决实际图像处理为依托,从理论开始介绍TensorFlow程序设计模式,多角度、多方面地对其中的原理和实现提供翔实的分析,并结合实际案例编写的应用程序设计,使读者能够在开发者的层面掌握TensorFlow程序设计方法和技巧,为开发出更强大的图像处理应用打下扎实的基础。

本书的优势

l 本书在方向上偏重于使用卷积神经网络以及其相关变化的模型,在TensorFlow框架上进行图像特征提取、图像识别以及具体应用,这在市面上鲜有涉及。

l 本书并非枯燥的理论讲解,而是大量最新文献的归纳总结。在这点上,本书与其他编程书籍有本质区别。本书的例子都是来自于现实世界中对图像分辨和特征竞赛的优胜模型,通过介绍这些例子可以使读者更深一步地了解和掌握其内在的算法和本质。

l 本书作者有长期研究生和本科教学经验,通过通俗易懂的语言对全部内容进行讲解,深入浅出地介绍反馈神经网络和卷积神经网络理论体系的全部知识点,并在程序编写时使用官方推荐的TensorFlow最新框架进行程序设计,帮助读者更好地使用最新的模型框架,理解和掌握TensorFlow程序设计的精妙之处。

l 作者认为,掌握和使用深度学习的人才应在掌握基本知识和理论的基础上,重视实际应用程序开发能力和解决问题能力的培养。因此,本书结合作者在实际工作中遇到的大量实际案例进行分析,抽象化核心模型并给出具体解决方案,全部程序例题均提供了相应代码,以供读者学习。

本书的内容

本书共分为22章,所有代码均采用Python语言编写,这也是TensorFlow框架推荐使用语言。

第1章介绍深度学习的基本内容,初步介绍深度学习应用于计算机视觉和发展方向,介绍使用深度学习解决计算机视觉问题的应用前景,旨在说明使用深度学习和人工智能实现计算机视觉是未来的发展方向,也是必然趋势。

第2章介绍Python的安装和最常用的类库。Python语言是易用性非常强的语言,可以很方便地将公式和愿景以代码的形式表达出来,而无须学习过多的编程知识。Python专用类库threading并不常见,只是要为后文的数据读取和TensorFlow专用格式的生成打下基础。

第3章全面介绍机器学习的基本分类、算法和理论基础,这里介绍了不同的算法,例如回归算法和决策树算法的具体实现和应用。这些是深度学习的基础理论部分,通过这些向读者透彻而准确地展示深度学习的结构与应用,为更进一步掌握深度学习在计算机视觉中的应用打下扎实的基础。

第4章主要介绍Python语言的使用。通过介绍和实现不同的Python类库,帮助读者强化Python的编程能力、学习相应类库。这些都是在后文中反复使用的内容。同时借用掌握的知识学习数据的可视化展示技能。这项技能在数据分析中虽是基本技能,但具有非常重要的作用。

第5~6章是对OpenCV类库使用方法的介绍。本书以图像处理为重点,对图像数据的读取、编辑以及加工是本书的重中之重。OpenCV是Python中专门用以对图像处理的类库,通过基础讲解和进阶介绍使读者掌握这个重要类库的使用。学会对图像的裁剪、变换和平移的代码编写。第5章以例子的形式对卷积核的基础内容做了一个介绍,并用Python语言实现了卷积核的功能。卷积核是本书中非常重要的基础部分,也是图像处理中非常重要的组成部分,通过编写相应的程序去实现卷积核对图像的处理、掌握和理解卷积神经网络有很大帮助。

第7~8章是TensorFlow的入门基础,通过一个娱乐性质的网站向读者展示TensorFlow的基本应用,用图形图像的方式演示神经网络进行类别分类的拟合过程,在娱乐的同时了解其背后的内容。

第9章是本书的一个重点,也是神经网络的基础内容。本章的反馈算法是解决神经网络计算量过大的里程碑算法。笔者通过详细认真的讲解,使用通俗易懂的语言对这个算法进行介绍,并通过独立编写代码的形式为读者实现这个神经网络中最重要的算法内容。本章的内容看起来不多,但是非常重要。

第10章对TensorFlow的数据输入输出做了详细的介绍。从读取CSV文件开始,到教会读者制作专用的TensorFlow数据格式TFRecord,这在目前市面上的书籍中鲜有涉及。使用TensorFlow框架进行程序编写、数据的准备和规范化是重中之重,因此本章也是较为重要的一个章节。

第11~12章是应用卷积神经网络在TensorFlow框架上进行学习的一个基础教程,经过前面章节的准备和介绍,采用基本理论——卷积神经网络进行手写体的辨识是深度学习最基本的技能,也是非常重要的一个学习基础。并且在程序编写的过程中,作者向读者展示了参数调整对模型测试结果的重要作用。这是目前市面上相关书籍没有涉及到的内容,非常重要。

第13~14章是卷积神经网络算法的介绍和应用。在这两章内容中,笔者详细介绍卷积神经网络的应用,特别是在图像识别中的应用,由单纯的手写体数值的识别发展到对显示物体的识别。借助于图像识别比赛的数据集,使用在比赛中得奖的卷积神经网络模型,使读者掌握卷积神经网络的变种。卷积神经网络的理论基础就是卷积的正向和反向过程,一般正向过程较好理解和学习,但是对于反向运算,基本上没有涉及,有的话也仅仅是对公式的复制和摘抄。本书在14章中详细地介绍卷积神经网络反向过程的运算和计算方法,通过大量例子的表述,第一次非常详细地描述了卷积神经网络的反向运算。这是相关书籍中欠缺的内容。

第15章通过一个完整的例子演示使用卷积神经网络进行图像识别的流程。例子来自于ImageNet图像识别竞赛,所采用的模型也是比赛中获得准确率最高的模型。通过对项目每一步的详细分析,手把手地教会读者如何使用卷积神经网络进行图像识别。

第16章介绍VGGNet的组成结构,着重介绍VGGNet的网络调参以及在其后执行Finetuning的能力。本章将第15章的例子复用VGG16实现,给读者提供一个以不同的视角和不同的模型方法解决问题的思路。

第17章针对目前深度学习就业者给出的一些面试题的答案,这些问题可以帮助招聘者分析谁是高水平的面试者,也能帮助就业者完善自己的技术概念和知识,找准自己的定位,为将来升职加薪铺平道路。

第18章介绍深度学习网络ResNet模型,它是在网络中使用大量残差模块作为网络的基本组成部分,主要作用是使得网络随着深度的变化增加,而不会产生权重衰减和梯度衰减或者消失等这些问题。除了ResNet模型,本章还介绍了新兴的卷积神经模型,包括SqueezeNet和Xception。

第19~20章开始进入TensorFlow学习的高级阶段,重点介绍的是一个API——Slim,它是一个用于定义、训练和评估较为复杂模型的轻量级开发类库。这两章不光介绍了它的使用方法,还通过它制作了一个多层感知机MLP、一个卷积神经网络CNN,最后还使用Slim预训练模型进行Finetuning。

第21章介绍全卷积神经网络图像分割,先讲解分割的理论基础和实现方法,然后给出了全卷积神经网络进行图像分割的分步流程与编程基础,最后给出了使用VGG16全卷积网络进行图像分割的实战。

第22章讲解的是GAN——对抗生成网络,本章理论虽然看似枯燥,但笔者用一个“生成器”和一个“辨别器”共同在一个网络中不停地进行“对抗”来比喻,降低了阅读的难度。最终还通过使用GAN生成手写体数字的案例让读者真正学会GAN的应用。

除此之外,全书对于目前图像识别最流行和取得最好成绩的深度学习模型做了介绍,这些都是目前的深度学习的热点和研究重点。

本书的特点

l 本书不是纯粹的理论知识介绍,也不是高深技术研讨,完全是从实践应用出发,用最简单、典型的示例引申出核心知识,最后还指出了通往“高精尖”进一步深入学习的道路。

l 本书没有深入介绍某一个知识块,而是全面介绍TensorFlow涉及的图像处理的基本结构和上层程序设计,系统综合地讲解深度学习的全貌,使读者在学习的过程中把握好方向。

l 本书在写作上浅显易懂,没有深奥的数学知识,而是采用较为形象的形式,使用大量图像示例描述应用的理论知识,让读者在轻松愉悦的阅读下掌握相关内容。

l 本书旨在引导读者进行更多技术上的创新,每章都会用示例描述的形式帮助读者更好地理解本章的学习内容。

l 本书代码遵循重构原理,避免代码污染,真心希望读者能写出优秀、简洁、可维护的代码。

本书适合人群

本书配套示例源代码下载地址(注意数字与字母大小写)如下:

https://pan.baidu.com/s/1jHFg2uq

如果下载有问题或者对本书有任何疑问,请联系booksaga@163.com,邮件主题为“TensorFlow”。

本书适合人群

本书既适合学习人工神经网络、深度学习以及TensorFlow程序设计等相关内容的程序设计人员阅读,也可以作为高等院校相关专业的教材。建议在学习本书内容的过程中,理论联系实际,独立进行一些代码的编写,采取开放式的实验方法,即读者自行准备实验数据和实验环境,解决实际问题,最终达到理论联系实际的目的。

本书作者

本书作者现任计算机专业教师,担负数据挖掘、Java程序设计、数据结构等多项本科及研究生课程,研究方向为数据仓库与数据挖掘、人工智能、机器学习,在研和参研多项科研项目。在写作过程中得到了家人和朋友的大力支持,在此对他们一并表示感谢。

王晓华

2017年11月

《TensorFlow深度学习应用实践》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. FastJson--阿里开源的速度最快的Json和对象转换工具

    示例 import java.util.ArrayList; import java.util.List; import java.util.HashMap; import java.util.Map ...

  2. 基于telegraf+influxdb+grafana进行postgresql数据库监控

    前言 随着公司postgresql数据库被广泛应用,尤其是最近多个项目在做性能测试的时候都是基于postgresql的数据库,为了确定性能瓶颈是否会出现在数据库中,数据库监控也被我推上了日程.在网上找 ...

  3. 《Django By Example》Chap 4中出现的 “RelatedObjectDoesNotExist”错误

    models.py

  4. MyBatis中批量插入数据对插入记录数的限制

    <基于Mybatis框架的批量数据插入的性能问题的探讨>(作者:魏静敏 刘欢杰 来源:<计算机光盘软件与应用> 2013 年第 19 期)中提到批量插入的记录数不能超过1000 ...

  5. 初学ssm框架的信息

    ssm框架,就是Spring ,SpringMVC ,mybstis 的简称,我们是从mybstis 开始学起的,mybatis的作用作为一个连接数据库的框架,可以很好配置连接好数据库, 有mybat ...

  6. Webpack 2 视频教程 006 - 使用快捷方式进行编译

    原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...

  7. SLAM入门之视觉里程计(4):基础矩阵的估计

    在上篇文章中,介绍了三位场景中的同一个三维点在不同视角下的像点存在着一种约束关系:对极约束,基础矩阵是这种约束关系的代数表示,并且这种约束关系独立与场景的结构,只依赖与相机的内参和外参(相对位姿).这 ...

  8. volatile关键字是如何起作用的?

    关键字volatile是Java虚拟机提供的最轻量级的同步机制,但是在平时的项目里面,遇到需要多线程的时候更多地使用的是synchronized关键字来进行同步.个人而言,更多的原因是对volatil ...

  9. js 数组API之every、some用法

    every 判断数组中是否每个元素都满足条件 只有都满足条件才返回true: 只要有一个不满足就返回false: arr.every(function(value,index,array){retur ...

  10. vue2.0 配置build项目打包目录、资源文件(assets\static)打包目录

    vue项目默认的打包路径:根目录下的dist文件夹下: 但是在项目开发中,我们肯定希望项目提交到svn目录或者git目录下,否则每次复制过去,太麻烦了: 那怎么配置打包路径呢?下面来看看: 我们找到打 ...