15 丢弃法
丢弃法是在层之间加入噪音,使用有噪音的数据等价于(Tikhonov正则)正则是让权重不要太大,避免出现过拟合
核心是加入噪音后,希望新的期望(平均值)等于原来的值
训练过程:
dropout作用在隐藏层的输出上,结果可能是有一些值丢失,有一些值变大
总结:Dropout将一些输出项随机置0来控制模型复杂度,通常用在多层感知机的隐藏层输出上,丢弃概率是控制模型复杂度的超参数。
mask这一行创建了一个与输入数据 X
形状相同的张量,并使用从均匀分布 U(0,1)
中抽样的随机数填充它。然后,该张量中的每个元素都与 dropout
参数进行比较,结果是一个由布尔值组成的张量。使用 >
运算符后,如果随机数大于 dropout
,对应位置的结果是 True
(转换为浮点数 1.0
),否则是 False
(转换为浮点数 0.0
)。这个结果张量称为 mask
,它表示对应元素是否保留(1.0
)或丢弃(0.0
)。这是dropout正则化随机性的规定。
结果:
每一次的运行结果都是不一样的。
正式代码:
loss大约是在0.4
知识遗忘:
1.创建激活函数:激活函数在神经网络中扮演着至关重要的角色,它们在每个神经元的输出上应用非线性转换。
2.train_ch3
train_ch3
函数的目的是将训练过程封装起来,使得主要的训练逻辑可以一行代码调用。该函数通常会执行以下步骤:
- 迭代训练周期:对于给定的训练周期数(
num_epochs
),重复训练过程。 - 遍历训练集:在每个周期中,函数会遍历训练集(
train_iter
),通常是以批量的形式。 - 前向传播:对于每个批量的数据,执行模型的前向传播(
net
)来计算预测值。 - 计算损失:使用损失函数(
loss
),基于模型的预测和实际的标签,计算损失值。 - 反向传播:根据损失值进行反向传播,计算模型参数的梯度。
- 参数更新:使用优化器(
trainer
)根据计算出的梯度来更新模型的参数。 - 评估模型:在每个周期结束时,或者在训练过程中的一些周期,使用测试集(
test_iter
)来评估模型的性能。 - 打印进度:打印训练进度,包括当前周期数、损失值和评估指标(如准确率)。
简洁实现:
结果分析:dropout
丢弃法是在训练的时候吧神经元丢弃后训练,在预测是神经元没有丢弃
dropout只是用在全连接层,不会用在卷积层
weight decay 和dropout比起来,weightdecay 更常用,因为用的范围更广一些
dropout介入会造成参数收敛变慢