Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
d2l-zh
提交
ee644452
D
d2l-zh
项目概览
OpenDocCN
/
d2l-zh
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
d2l-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ee644452
编写于
9月 30, 2017
作者:
Z
zh-angle-i
提交者:
Mu Li
9月 29, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix typo (#65)
上级
fdf45db8
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
5 addition
and
10 deletion
+5
-10
chapter02_supervised-learning/dropout-scratch.md
chapter02_supervised-learning/dropout-scratch.md
+5
-10
未找到文件。
chapter02_supervised-learning/dropout-scratch.md
浏览文件 @
ee644452
...
...
@@ -55,19 +55,16 @@ dropout(A, 1.0)
了解了丢弃法的概念与实现,那你可能对它的本质产生了好奇。
如果你了解集成学习,你可能知道它在提升弱分类器准确率上的威力。一般来说,在集成学习里,我们可以对训练数据集有放回地采样若干次并分别训练若干个不同的分类器;测试时
,把这些分类器的结果集成一下作为最终分类结果。
如果你了解集成学习,你可能知道它在提升弱分类器准确率上的威力。一般来说,在集成学习里,我们可以对训练数据集有放回地采样若干次并分别训练若干个不同的分类器;测试时,把这些分类器的结果集成一下作为最终分类结果。
事实上,丢弃法在模拟集成学习。试想,一个使用了丢弃法的多层神经网络本质上是原始网络的子集(节点和边)。举个例子,它可能长这个样子。
![](
../img/dropout.png
)
我们在之前的章节里介绍过
[
随机梯度下降算法
](
linear-regression-scratch.md
)
:我们在训练神经网络模型时一般随机采样一个批量的训练数
据。丢弃法实质上是对每一个这样的数据集分别训练一个原神经网络子集的分类器。与一般的集成学习不同,这里每个原神经网络子集的分类器用的是同一套参数。因此丢弃法只是在
模拟集成学习。
据。丢弃法实质上是对每一个这样的数据集分别训练一个原神经网络子集的分类器。与一般的集成学习不同,这里每个原神经网络子集的分类器用的是同一套参数。因此丢弃法只是在模拟集成学习。
我们刚刚强调了,原神经网络子集的分类器在不同的训练数据批量上训练并使用同一套参数。因此,使用丢弃法的神经网络实质上是对输入层和隐含层的参数做了正则化:学到的参数
得使原神经网络不同子集在训练数据上都尽可能表现良好。
我们刚刚强调了,原神经网络子集的分类器在不同的训练数据批量上训练并使用同一套参数。因此,使用丢弃法的神经网络实质上是对输入层和隐含层的参数做了正则化:学到的参数使得原神经网络不同子集在训练数据上都尽可能表现良好。
下面我们动手实现一下在多层神经网络里加丢弃层。
...
...
@@ -85,8 +82,7 @@ train_data, test_data = utils.load_data_fashion_mnist(batch_size)
## 含两个隐藏层的多层感知机
[
多层感知机
](
mlp-scratch.md
)
已经在之前章节里介绍。与
[
之前章节
](
mlp-scratch.md
)
不同,这里我们定义一个包含两个隐含层的模型
,两个隐含层都输出256个节点。我们定义激活函数Relu并直接使用Gluon提供的交叉熵损失函数。
[
多层感知机
](
mlp-scratch.md
)
已经在之前章节里介绍。与
[
之前章节
](
mlp-scratch.md
)
不同,这里我们定义一个包含两个隐含层的模型,两个隐含层都输出256个节点。我们定义激活函数Relu并直接使用Gluon提供的交叉熵损失函数。
```
{.python .input n=2}
num_inputs = 28*28
...
...
@@ -113,8 +109,7 @@ for param in params:
## 定义包含丢弃层的模型
我们的模型就是将层(全连接)和激活函数(Relu)串起来,并在应用激活函数后添加丢弃层。每个丢弃曾的元素丢弃概率可以分别设置。一般情况下,我们推荐把更靠近输入层
的元素丢弃概率设的更小一点。这个试验中,我们把第一层全连接后的元素丢弃概率设为0.2,把第二层全连接后的元素丢弃概率设为0.5。
我们的模型就是将层(全连接)和激活函数(Relu)串起来,并在应用激活函数后添加丢弃层。每个丢弃层的元素丢弃概率可以分别设置。一般情况下,我们推荐把更靠近输入层的元素丢弃概率设的更小一点。这个试验中,我们把第一层全连接后的元素丢弃概率设为0.2,把第二层全连接后的元素丢弃概率设为0.5。
```
{.python .input n=4}
drop_prob1 = 0.2
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录