浙江大学城市学院 浙江大学城市学院

深度学习应用开发TensorFlow实践

所属微专业:

图片
课程概述

一、     课程目标


本课程将全面介绍基于TensorFlow深度学习框架的人工智能应用开发技术。课程不仅会讲解机器学习的基础理论和主流的模型及算法(包括线性回归、神经网络、卷积神经网络、循环神经网络、生成对抗网络等),而且会重点讲解如何基于TensorFlow框架,针对不同的应用场景进行深度学习模型的选择、构建和应用。让学习者能快速具备人工智能问题求解的基本思想和初步的人工智能应用软件开发能力。


二、     课程特点


不干涩地讲深层次理论和算法,也不是纯粹介绍TensorFlow的编程。而是针对大多数潜在学员的特点(有基本的编程能力,对开发人工智能应用感兴趣,学过一些基本概率统计和线性代数,但谈不上有深厚的数学功底和人工智能理论基础),通过针对典型的人工智能应用场景,设计系列针对性案例来引导学习过程。主要案例包括价格预测、手写数字识别、图像识别、文本情感分析、动画自动上色等,在案例讲解过程中深入浅出地介绍相关理论,并会从中讲解TensorBoard可视化、模型的断点续训等实用技巧。

本课程将主要内容根据学习阶段分为四部分:筑基篇、启航篇、进阶篇和扩展篇。筑基篇包括人工智能简介、开发环境搭建和Python开发语言快速入门、TensorFlow编程基础等三讲内容;启航篇从单个神经元的线性回归应用开始,直到完成多层神经网络应用开发,共有四讲内容;进阶篇主要围绕深度网络,从卷积神经网络CNN开始,历经循环神经网络RNN、生成对抗网络GAN等应用开发,涵括迁移学习等内容;扩展篇则包括Keras框架、TensorFlow.js、TensorFlow Lite移动应用开发等高级话题。


证书要求

合格线:60分

优秀线:80分

预备知识

有基本的编程能力,学过一些基本概率统计和线性代数

不需要有深厚的数学功底和人工智能理论基础

授课大纲

第0讲 课程导学

0.1 课程的定位、面向的学员对象

0.2 课程内容安排

0.3 课程要求和考核

筑基篇

第1讲 人工智能简介

1.1 感受人工智能时代的到来

1.1.1 人机对战(深蓝、Alpha Go、Alpha Zero、王者荣耀……)

1.1.2 计算机视觉(图像识别与分类、人脸、医学影像、交通、图像艺术风格转换、……)

1.1.3 自然语言处理(文本情感分析、语音识别、自动客服、翻译、自动创作……)

1.1.4 智能诊断、推荐系统(Watson、广告推荐、天气预报……)

1.1.5 机器人和智能控制(人形机器人、机器狗、物流机器人、自动驾驶、智能工厂……)

1.2 人工智能发展概述,跌宕起伏的60年

1.2.1 人工智能起源

1.2.2 第一次人工智能热潮与图灵测试

1.2.3 第二次人工智能热潮与专家系统

1.2.4 第三次人工智能热潮:深度学习携手大数据

1.2.5 从技术成熟度看人工智能发展史

1.3 机器学习简介

1.3.1 什么是机器学习(有监督学习、无监督学习、半监督学习、强化学习)

1.3.2 机器学习典型求解问题类型(回归和分类)

1.4 深度学习简介

1.4.1 神经元

1.4.2 人工神经网络

1.4.3 深度神经网络

1.5 深度学习框架简介

1.5.1 TensorFlow

1.5.2 PyTorch

1.5.3 Coffe

1.5.4 Paddle Paddle

1.6 本讲小结与作业

1.6.1 本讲小结

1.6.2 作业和思考题

第2讲 工欲善其事必先利其器:TensorFlow开发环境搭建与Python快速入门

2.1 Anaconda开发环境搭建

2.1.1下载及安装Anaconda开发工具

2.1.2 熟悉Anaconda开发工具(Jupyter Notebook 、Spyder)

2.1.3 深度学习应用开发的黄金搭档:Python程序设计语言

2.2 人生苦短,我用Python :Python程序设计语言快速入门(如果已有Python编程基础的学员可以略过)

2.2.1 变量与运算

2.2.2 控制结构

2.2.3 函数

2.2.4 元组、列表与字典类型

2.2.5

2.2.6 文件

2.3 Python的计算生态:模块与包

2.3.1 Python的科学计算库:Numpy

2.3.2 Python的数据分析处理库:Pandas

2.3.3 Python的可视化库:Matplotlib

2.4 本讲小结与作业

2.4.1 本讲小结

2.4.2 作业和思考题

第3讲 磨刀不误砍柴工:TensorFlow 编程基础

3.1 TensorFlow的基础概念

3.1.1 TensorFlow数据模型–张量

3.1.2 TensorFlow计算模型–计算图

3.1.3 TensorFlow运行模型–会话

3.2 TensorFlow的基本运算

3.2.1 变量

3.2.2 占位符

3.2.3 数据的提交与获取

3.2.4 常用运算函数

3.3 综合案例:计算1+2+3+..+n之和

3.3.1 Python中的实现

3.3.2 TensorFlow中的实现

3.4 本讲小结与作业

3.4.1 本讲小结

3.4.2 作业和思考题

启航篇

第4讲 线性回归问题?用一个神经元搞定!

4.1 一切从一个神经元开始

4.1.1 最简单的神经网络:一个神经元的感知机

4.2 线性回归问题求解思路,以y=2x+1为例

4.2.1 一元线性回归问题和模型方程

4.2.2 确定损失大小

4.2.3 通过训练进行迭代优化:最小化损失

4.2.4 线性回归问题的机器学习框架

4.3 线性回归问题的TensorFlow实现

4.3.1 人工数据集生成及使用Matplotlib库实现数据可视化

4.3.2 构建模型、定义损失函数和确定优化方法

4.3.3 迭代训练和训练过程数据可视化

4.3.4 模型结果和应用

4.4 本讲小结与作业

4.4.1 本讲小结

4.4.2 作业和思考题

第5讲 不玩虚的,房价预测问题:多元线性回归及TensorFlow编程进阶

5.1 真实问题没有那么简单,波士顿房价预测问题

5.1.1 波士顿房价预测,真实的多元线性回归问题

5.1.2 数据集划分:模型的训练、验证和测试

5.1.3 善用工具,利用TensorBoard进行训练过程可视化

5.2 波士顿房价数据集获取及初步分析

5.2.1 波士顿房价数据集获取

5.2.2 波士顿房价数据初步分析

5.3 模型构建

5.3.1 多元线性方程模型

5.3.2 数据的矩阵化表示与运算

5.4 模型优化与训练

5.4.1 选择损失函数

5.4.2 选择优化函数

5.4.3 设置超参数

5.5 训练过程

5.5.1 变量初始化

5.5.2 数据集划分:训练集、验证集和测试集

5.5.3 循环填充数据

5.5.4 可视化训练过程(python写折线图)

5.5.5 结果输出

5.6 模型的测试和应用

5.6.1 模型测试

5.6.2 模型应用

5.7 TensorBoard:训练数据可视化

5.7.1 TensorBoard:模型调试的利器

5.7.1 TensorBoard使用方法

5.8 加入TensorBoard日志信息的模型

5.8.1 加入TensorBoard代码

5.8.2 通过TensorBoard查看训练过程数据

5.9 本讲小结与作业

5.9.1 本讲小结

5.9.2 作业和思考题

第6讲 MNIST手写数字识别:分类应用入门

6.1 MNIST手写数字识别案例介绍

6.1.1 手写数字识别的分类问题

6.1.2 MNIST数据集简介

6.2 分类算法思想

6.2.1 从线性回归到逻辑回归分类

6.2.2 分类(逻辑回归)的框架

6.2.3 Softmax分类器

6.3单个神经元的MNIST手写数字识别TensorFlow实现

6.3.1 加载数据

6.3.2 构建回归模型

6.3.2.1 定义学习参数(权重和偏置项)

6.3.2.2 定义输出节点

6.3.2.3 定义激活函数(Sigmod函数)

6.3.2.4 定义反向传播的结构

6.3.3 训练模型并可视化训练过程

6.3.4 测试模型

6.4 模型的保存和读取

6.4.1 保存模型

6.4.2 读取模型

6.4.3 加了模型保存的模型

6.5 本讲小结与作业

6.5.1 本讲小结

6.5.2 作业和思考题

第7讲 MNIST手写数字识别进阶:多层神经网络与应用

7.1 从单个神经元到多层神经网络,解决非线性问题

7.1.1 单个神经元(感知机)的缺陷

7.1.2 通过多层神经网络模型提高识别率

7.2 建立多层神经网络

7.3.1 定义多次网络结构

7.3.2 构建神经网络模型

7.3.3 训练和评估模型

7.3 神经网络的优化

7.2.1梯度下降算法

7.2.2 学习率的设置

7.2.3 激活函数的选择

7.2.4 过拟合问题

7.2.5 正则化

7.2.6 Dropout

7.4 可视化神经网络训练平台:TensorFlow游乐场

7.4.1 TensorFlow游乐场简介

7.4.2 数据集类型

7.4.3 特征与神经网络模型可视化构建

7.4.4 神经网络训练过程解读

7.4.5 使用神经网络解决分类问题的基本步骤

7.5 本讲小结与作业

7.5.1 本讲小结

7.5.2 作业和思考题

进阶篇

第8讲 图像识别问题:卷积神经网络与应用

8.1 CIFAR-10图像识别案例描述

8.2 从神经网络到卷积神经网络:解决参数太多的问题

8.2.1 全连接网络的参数太多问题

8.2.2 什么是卷积

8.2.3 局部感知域

8.2.4 参数共享

8.2.5 多卷积核

8.3 卷积神经网络的基本结构

8.3.3 卷积层

8.3.4 池化层

8.3.5 多层结构

8.4 TensorFlow对卷积神经网络的支持

8.4.1 TensorFlow的卷积操作

8.4.2 TensorFlow的池化操作

8.5 CIFAR-10图像识别案例的TensorFlow实现

8.5.1 CIFAR-10数据的读取

8.5.2 构建卷积网络结构

8.5.3 训练过程

8.6 断点续训

8.6.1 保存模型检查点

8.6.2 读取模型检查点

8.6.3 通过Epoch变量实现断点续训

8.7 本讲小结与作业

8.7.1 本讲小结

8.7.2 作业和思考题

第9讲 Deep Dream:理解深度神经网络结构及应用

9.1 Deep Dream:计算机生成梦幻图像

9.2 VGG简介

9.2.1 VGG模型的由来

9.2.2 模型解读

9.3 观测模型各层提取的特征

9.3.1 输出某层提取的特征为图像

9.3.2 把全部层提取的特征批量输出为图像

9.3.3 观察各层的特征图像

9.4 构建Deep Dream系统

9.4.1 读入待处理图像

9.4.2 构建Deep Dream模型

9.4.3 系统运行演示分析

9.5 经典深度模型

9.5.1 AlexNet

9.5.2 Inception Net

9.5.3 ResNet

9.6 本讲小结与作业

9.6.1 本讲小结

9.6.2 作业和思考题

第10讲 猫狗大战:迁移学习及应用

10.1 猫狗大战案例描述

10.2 迁移学习

10.2.1 什么是迁移学习

10.2.2 迁移学习的一般步骤

10.3 图像数据处理

10.3.1 TensorFlow的图像处理函数

10.3.2 图像预处理样例

10.4制作自己的数据集:TFRecord输入数据格式

10.4.1 TFRecord格式介绍

10.4.2 制作TFRecord格式数据集

10.5 针对大量数据的学习:多线程输入数据处理框架

10.5.1 队列与多线程

10.5.2 输入文件队列

10.5.3 组合训练数据(batching)

10.5.4 输入数据处理框架

10.6 实现基于VGG的迁移学习

10.6.1 模型载入

10.6.2 模型的再训练与存储

10.6.3 使用训练过的模型预测图片

10.7 本讲小结与作业

10.7.1 本讲小结

10.7.2 作业和思考题

第11讲 电影评论情感分析:RNN循环网络原理及应用

11.1 电影评论情感分析案例描述

11.2 循环神经网络RNN简介

11.2.1 普通RNN结构

11.2.2 普通RNN的不足:梯度消失与梯度爆炸

11.3 LSTM网络

11.4 自然语言理解NPL的相关概念

11.4.1 语言模型

11.4.2 词向量

11.4.3 中文分词问题

11.6电影评论情感分析案例数据处理

11.6.1 下载和读取IMDb数据集

11.6.2 建立词字典

11.6.3 将影评文字换为数字列表

11.7 使用LSTM模型进行IMDb情感分析

11.7.1 建立模型

11.7.2 模型训练和评估

11.7.3 模型应用:预测《美女与野兽》影评是正面还是负面

11.8 本讲小结与作业

11.8.1 本讲小结

11.8.2 作业和思考题

第12讲 生成Fashion-MNIST图像:生成式对抗网络原理及Tensorflow实现

12.1 生成式对抗网络原理及应用简介

        12.1.1 生成式模型

        12.1.2 GAN的应用

        12.1.3 GAN的原理

        12.1.4 GAN的网络实现

12.2 Fashion-MNIST数据集

        12.2.1 Fashion-MNIST数据集介绍

        12.2.2 Fashion-MNIST数据集的下载及安置

12.3 GAN的Tensorflow实现:利用GAN生成Fashion-MNIST图像

        12.3.1 构建GAN的生成网络

        12.3.2 构建GAN的判别网络

        12.3.3 训练GAN

12.4 CGAN的Tensorflow实现:利用CGAN生成Fashion-MNIST图像

        12.4.1 CGAN的原理

        12.4.2 构建CGAN的生成网络

        12.4.3 构建CGAN的判别网络

        12.4.4 训练CGAN

12.5 延伸阅读

扩展篇

第13讲 泰坦尼克号上的旅客生存概率预测:TensorFlow的高级框架Keras

13.1泰坦尼克号上的旅客生存概率预测问题

13.2 Keras框架

13.2.1 Keras框架简介

13.2.2 使用Keras框架进行深度学习的过程

13.3 泰坦尼克号旅客数据集

13.3.1 数据集下载

13.3.2 使用Pandas库读取并进行预处理

13.3.3 将DataFrame转换为Array

13.3.4 将ndarray特征字段进行标准化

13.3.5 将数据分为训练数据与测试数据

13.4 使用Keras实现神经网络预测泰坦尼克号上的旅客生存概率

13.4.1 数据预处理

13.4.2 建立模型

13.4.3 开始训练

13.4.4 模型应用:预测Jack和Rose的生存概率

13.5 本讲小结与作业

13.5.1 本讲小结

13.5.2 作业和思考题

第14讲 鸢尾花品种识别:TensorFlow.js应用开发

14.1 鸢尾花品种识别案例描述

14.2 在浏览器中进行深度学习:TensorFlow.js简介

14.2.1 酷炫的TensorFow.js的Demo

14.2.2 通过JavaScript语言在浏览器中进行深度学习

14.3 鸢尾花品种识别的TensorFlow.js实现

14.3.1 数据载入

14.3.2 模型构建

14.3.3 训练和优化

14.3.4 过程可视化

14.4 交互式鸢尾花品种识别网页系统开发

14.4.1 页面布局设计

14.4.2 训练模型功能开发

14.4.3 装载训练好的模型

14.4.4 训练结果呈现

14.5 本讲小结与作业

14.5.1 本讲小结

14.5.2 作业和思考题

第15讲 花卉识别App:TensorFlow Lite与移动应用开发

15.1 移动App与人工智能应用

15.2 移动端机器学习应用的问题与解决思路

15.2.1 量化

15.2.2 优化矩阵乘法运算

15.3 用于移动设备的轻量级框架:TensorFlow Lite 简介

15.4 花卉识别App开发:基于MobileNet的TensorFlow Lite移动应用开发

15.4.1 Android系统与Android Studio开发环境

15.4.2 开发环境和代码资源准备

15.4.3 Android端代码导入及解析

15.4.4 下载TensorFlow Lite模型和标签数据

15.4.5 编译及运行

15.5 本讲小结与作业

15.5.1 本讲小结

15.5.2 作业和思考题

 

参考资料

吴明晖、李卓蓉、金苍宏,深度学习应用开发 - 基于TensorFlow的实践,高等教育出版社(待出版)


教材电子版本:

https://minghuiwu.gitbook.io/tfbook/


常见问题

Q :  这门课程对数学要求是否很高?

A :  本门课程偏应用开发,目的是在了解实现原理的基础上会建模、应用。需要了解一些基本的求导数、矩阵点乘、叉乘的概念,但不用做复杂的公式求解和推导。


Q :  这门课对编程要求是否很高?

A :  既然叫应用开发,当然是要编程实现的。本门课程采用Python编程,但只需要基本的编程技能,因此谈不上对编程技巧有太高要求。对于学过C语言或者Java语言,但没有学过Python的学员,还提供了一讲Python快速入门的章节,相信花点功夫就能跟上的。


Q :  这门课对开发机器的要求是否很高,没有GPU的一般电脑能做开发吗?

A :  作为教学案例,所设计的项目对电脑的要求谈不上高,普通配置的笔记本电脑都能顺利运行。只有到后面迁移学习需要训练深度神经网络时,如果有GPU会更快。总体说来是不用担心电脑配置问题影响学习的。