内容简介
深度学习是人工智能技术和研究领域之一,通过建立人工神经网络在计算机上实现人工智能。通过学习本书,读者可以了解Python开发环境构建、Python基础、深度学习经典网络、对抗学习、遗传算法与神经网络、计算机视觉和自然语言处理等多个深度学习领域的知识。本书理论与实践并重,配套教学视频,知识体系完整全面,助力读者构建属于自己的深度学习知识体系,了解人工智能的发展趋势和新技术,并可以往自己感兴趣的方向扩展。
本书可作为人工智能初学者的入门书籍,也可作为具备一定知识背景的读者拓展人工智能知识面的学习参考书籍,力求让读者对人工智能的未来应用和发展前景有一个更全面、科学的把握,培养读者的钻研能力,增强读者利用深度学习解决实际问题的能力。
目录
第1章导论
1.1本书学习路线
1.2人工智能与深度学习
1.3深度学习的算法流程
1.3.1特征工程
1.3.2模型评估
1.4总结
第2章Python开发环境搭建
2.1Linux服务器
2.1.1下载与安装
2.1.2使用mobaxterm连接远程服务器
2.1.3在服务器上安装Python开发环境
2.1.4Jupyter Notebook的使用
2.2Windows平台
2.2.1下载Anaconda
2.2.2安装配置
2.2.3安装路径配置
2.2.4系统环境配置
2.2.5在Windows上使用Jupyter Notebook
2.3使用Anaconda国内源
2.3.1更换清华源
2.3.2更换中科大源
2.3.3pip设定较为阿里云源
2.4Python虚拟环境
2.4.1创建Python虚拟环境
2.4.2切换虚拟环境
2.4.3在虚拟环境中安装额外的包
2.4.4虚拟环境的相关命令
2.5PyCharm远程连接服务器
2.5.1下载PyCharm专业版
2.5.2PyCharm连接虚拟环境
2.5.3使用screen进行任务管理
2.6总结
第3章Python基础
3.1Python简介
3.2Python初阶学习
3.2.1变量赋值
3.2.2标准数据类型
3.2.3数据类型转换
3.2.4算术运算符
3.2.5格式化
3.3Python进阶学习
3.3.1循环
3.3.2条件语句
3.3.3文件I/O
3.3.4异常
3.3.5导包
3.4Python高阶学习
3.4.1面向过程编程
3.4.2面向对象编程
3.4.3面向过程与面向对象的区别
3.5正则表达式
3.5.1re.match
3.5.2re.search
3.5.3re.sub
3.5.4re.compile 函数与findall
3.5.5正则表达式的重点
3.6进程与线程
3.6.1多进程的例子
3.6.2多线程例子
3.7总结
第4章深度学习
4.1Keras简介
4.1.1Keras的优点
4.1.2Keras的缺点
4.1.3Keras的安装
4.2全连接神经网络
4.2.1全连接神经网络简介
4.2.2全连接神经网络原理
4.2.3全连接神经网络小结
4.3卷积神经网络
4.3.1全连接神经网络的缺点
4.3.2卷积神经网络原理
4.3.3卷积神经网络与全连接神经网络的区别
4.3.4卷积层
4.3.5局部连接和权值共享
4.3.6池化层
4.3.7训练
4.3.8卷积神经网络的超参数设置
4.3.9卷积神经网络小结
4.4超参数
4.4.1过拟合
4.4.2优化器
4.4.3学习率
4.4.4常见的激励函数
4.4.5常见的损失函数
4.4.6其他超参数
4.4.7超参数设置小结
4.5自编码器
4.5.1自编码器的原理
4.5.2常见的自编码器
4.5.3自编码器小结
4.6RNN与RNN的变种结构
4.6.1RNN与全连接神经网络的区别
4.6.2RNN的优势
4.6.3其他RNN结构
4.6.4LSTM
4.6.5门控循环单元
4.6.6RNN与RNN变种结构小结
4.7代码实践
4.7.1全连接神经网络回归——房价预测
4.7.2全连接神经网络与文本分类
4.7.3卷积神经网络之文本分类
4.7.4卷积神经网络之图像分类
4.7.5自编码器
4.7.6LSTM实例之预测股价趋势
4.8总结
第5章生成对抗网络
5.1生成对抗网络的原理
5.2生成对抗网络的训练过程
5.3实验
5.3.1代码
5.3.2结果分析
5.4总结
第6章遗传算法与神经网络
6.1遗传演化神经网络
6.1.1遗传算法原理
6.1.2遗传算法整体流程
6.1.3遗传算法遇上神经网络
6.1.4演化神经网络实验
6.2遗传拓扑神经网络
6.2.1遗传拓扑神经网络原理
6.2.2算法核心
6.2.3NEAT实验
6.3总结
第7章迁移学习与计算机视觉
7.1计算机视觉
7.1.1图像分类
7.1.2目标检测
7.1.3语义分割
7.1.4实例分割
7.2计算机视觉遇上迁移学习
7.2.1VGG
7.2.2VGG16与图像分类
7.2.3VGG16与目标检测
7.2.4VGG16与语义分割
7.2.5ResNeXt与实例分割
7.3迁移学习与计算机视觉实践
7.3.1实验环境
7.3.2实验流程
7.3.3代码
7.3.4结果分析
7.4总结
第8章迁移学习与自然语言处理
8.1自然语言处理预训练模型
8.1.1Word2Vec
8.1.2BERT
8.1.3RoBERTa
8.1.4ERNIE
8.1.5BERT_WWM
8.1.6NLP预训练模型对比
8.2自然语言处理四大下游任务
8.2.1句子对分类任务
8.2.2单句子分类任务
8.2.3问答任务
8.2.4单句子标注任务
8.3迁移学习与自然语言处理竞赛实践
8.3.1赛题背景
8.3.2赛题任务
8.3.3数据说明
8.3.4环境搭建
8.3.5赛题分析
8.3.6实验代码
8.4总结
参考文献
摘要
第3章
CHAPTER 3
Python基础
Python是有名的工程师Guido van Rossum在1989年为了打发无聊的圣诞节而开发的一种编程语言。相较于晦涩难懂的C、C++语言,Python简洁易懂的代码和众多优秀的基础代码库,让它迅速跃迁为全世界最流行的语言之一。我们用它来开发应用软件无须从零开始,调用已有的库即可实现相应的功能。
3.1Python简介
视频讲解
对于刚刚从事编程工作或者刚开始学习编程的读者来说,Python简直是一种“除了不能生孩子,干什么都行的工具”。它就像是一把枪,只要装上子弹,扣扳机发射就可以了,而C、C++这些语言更像是倚天剑和屠龙刀,需要深厚的内力才能把它用起来。
当然,Python还是有它所不能企及的领域,例如编写操作系统,这个必须由C语言去完成,因为C语言是最贴近硬件的一门语言,用它编写的操作系统运行速度非常快。因此, Python这种被高度封装的语言,由于运行速度较慢,一般适合编写高级应用程序,相对底层的程序还是需要别的语言去完成。
运行速度慢只是Python其中一个缺点,不能加密能算得上它另外一个大缺点了,不过本着互联网开源免费的精神,代码不能加密在笔者看来也算不上缺点。
最后一个缺点就是版本了,目前Python有两个版本,2.X和3.X,它们有些不兼容,至于如何不兼容,笔者在此就不赘述了,因为Python的2.X版将在2020年被官方停止维护。因此,刚刚入门Python这门语言的读者直接上手Python 3.X版本即可。
3.2Python初阶学习
3.2.1变量赋值
1.#/chapter3/3_2_Basis.ipynb
2.a = 1# 单变量赋值
3.c = b = 2# 多变量赋值
4.print(a)
5.print(b, c)
1
2 2
1.# 变量类型
2.name ='Chile'# 字符串
3.miles = 1000.0# 浮点型
4.num = 100# 整形
5.# 打印变量类型
6.print(type(name)) 7.print(type(miles))
8.print(type(num))
3.2.2标准数据类型
1. Python有6个标准的数据类型
(1) Numbers(数字)
(2) String(字符串)
(3) List(列表)
(4) Tuple(元组)
(5) Dictionary(字典)
(6) Set(集合)
其中,List、Tuple、Dictionary和Set可以放任意数据类型。
2. 数字
1.# Numbers: int & float
2.a = 1# int
3.b = 1.0# float
3. 字符串
1.# String
2.my_name ='Chile'
3.print(my_name[0])# 打印第0个字符
4.print(my_name[1: 3])# 打印第1个到第2个的字符
5.print(my_name[2:])# 打印第2个到最后1个的字符
6.print(my_name[-1])# 打印倒数第1个字符
C
hi
ile
e
4. 列表
1.# List可以放任意类型的数据类型
2.num_list = [1, 2, 3, 4]
3.str_list = ['Chile', 'b', 'c']
4.mix_list = ['a', 1, 1.0, num_list, str_list]
5.print(num_list)
6.print(str_list)
7.print(mix_list)
[1, 2, 3, 4]
['Chile', 'b', 'c']
['a', 1, 1.0, [1, 2, 3, 4], ['Chile', 'b', 'c']]
5. 元组
1.# Tuple可以放任意类型的数据类型
2.mix_tuple = ('chile', 111, 2.2, 'a', num_list)# 不可赋值 3.print_value()# 调用函数
Chile
3. 无返回值,有参数
1.def print_value(a, b):
2.if a > b:
3.print('a > b')
4.elif a < b:
5.print('a < b')
6.else:
7.print('a == b')
8.
9.# 3种调用方式
10.print_value(1, 2)# 调用函数
11.
12.a = 1
13.b = 2
14.print_value(a, b)# 调用函数
15.
16.print_value(a=1, b=2)# 调用函数
a < b
a < b
a < b
4. 有返回值,有参数
1.def print_value(a_test, b_test):
2.if a > b:
3.return 'a > b'
4.elif a < b:
5.return 'a < b'
6.else:
7.return 'a == b'
8.
9.#3种调用方式
10.print(print_value(1, 2))# 调用函数
11.
12.a = 1
13.b = 2
14.print(print_value(a, b))# 调用函数
15.
16.print(print_value(a_test=1, b_test=2))# 调用函数
a < b
a < b
a < b
3.4.2面向对象编程
面向对象有两个概念: 类(Class)和实例(Instance),类是抽象的模板,例如Phone类; 而实例是根据类创建出来的一个个具体的“对象”,例如huawei和iphone等,每个实例的对象都拥有相同的方法,但各自的数据可能不同。
每一个方法的第1个参数永远是self。
类具有三大特性: 封装、继承与多态。
1. 封装
将属性和方法封装进类,每一个对象的属性和方法是一