seo网站的优化流程,做网站怎么认证微博,nginx wordpress动静分离,如何实现网站的纯静态化一、概念
Dropout是为了解决过拟合#xff0c;当层数加深#xff0c;就有可能过拟合#xff0c;这个时候模型太复杂就会过拟合#xff0c;那么可以让模型变得简单一点#xff0c;所以就可以随机挑一些神经元#xff0c;让某些神经元的输出是0#xff0c;只保留部分神经…一、概念
Dropout是为了解决过拟合当层数加深就有可能过拟合这个时候模型太复杂就会过拟合那么可以让模型变得简单一点所以就可以随机挑一些神经元让某些神经元的输出是0只保留部分神经元的输出给下一层这个过程是随机的。但是在推理的时候这些神经元相当于变得透明不再随机。丢多少的比例就是超参。 二、AlphaDropout
AlphaDropout是Dropout的一个变种在应用Dropout时使用了一个额外的缩放因子alpha。与标准Dropout相比AlphaDropout在将一些输出设置为0的同时也会对剩余输出进行缩放来保持网络权重的期望值不变均值和方差。这种缩放可以增加训练的稳定性。 三、代码
只在第一层加AlphaDropouti可以控制加多少AlphaDropout这里没加注释掉了。
class NeuralNetwork(nn.Module):def __init__(self, layers_num2):super().__init__()self.transforms transformsself.flatten nn.Flatten()# 多加几层self.linear_relu_stack nn.Sequential(nn.Linear(28 * 28, 100), # in_features784, out_features300nn.ReLU(),nn.AlphaDropout(p0.2) # 增加dropoutp0.2表示以0.2的概率将某些神经元置0防止过拟合)# 加19层for i in range(1, layers_num):self.linear_relu_stack.add_module(fLinear_{i}, nn.Linear(100, 100))self.linear_relu_stack.add_module(frelu, nn.ReLU())if i3:# self.linear_relu_stack.add_module(fdropout_{i}, nn.AlphaDropout(p0.2))pass# 增加dropout# 输出层self.linear_relu_stack.add_module(Output Layer, nn.Linear(100, 10))# 初始化权重self.init_weights()def init_weights(self):使用 xavier 均匀分布来初始化全连接层的权重 Wfor m in self.modules():if isinstance(m, nn.Linear):nn.init.xavier_uniform_(m.weight)nn.init.zeros_(m.bias)def forward(self, x):# x.shape [batch size, 1, 28, 28]x self.transforms(x)x self.flatten(x) # 展平后 x.shape [batch size, 28 * 28]logits self.linear_relu_stack(x)# logits.shape [batch size, 10]return logitsprint(f{layer_name:^40}\tparamerters num)
for idx, (key, value) in enumerate(NeuralNetwork(20).named_parameters()):print({:40}\t{:^10}.format(key, np.prod(value.shape)))