问题标签 [dropout]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
410 浏览

keras - 这是一个很好的模型,验证损失保持低于训练曲线,或多或少恒定的差距,因为两者都在减少?

添加 dropout 层使 val 损失保持低于训练损失,在此期间存在恒定的泛化差距是否例外? train 和 val 损失曲线

这是架构:

0 投票
0 回答
1052 浏览

pytorch - 在 pytorch RNN 中的时间步之间添加 dropout

我正在训练内置的 pytorch rnn 模块(例如,torch.nn.LSTM),并希望在每个时间步之间添加固定的每小批量丢失(如果我理解正确,Gal 丢失)。

最简单的是,我可以展开网络并在单个批次上计算我的前向计算,如下所示:

但是,假设 python 中的循环非常慢,我宁愿利用 pytorch 的能力来完全处理一批多个序列,一次调用(如rnn(batch,state)常规前向计算)。

即,我更喜欢看起来像这样的东西:

(注意:Pytorch 的 rnns 确实有一个dropout参数,但它是用于层之间的辍学而不是时间步长之间的,所以不是我想要的)。

我的问题是:

  1. 我是否正确理解 Gal 辍学?

  2. 我想要的界面是否可用?

  3. 如果不是,是否会简单地实现一些drop_neurons(rnn), return_dropped(rnn)函数,将 rnn 的权重矩阵和偏置向量中的随机行归零,然后在更新步骤之后返回它们之前的值是否等效?(这会在层之间施加与步骤之间相同的丢失,即完全删除整个小批量的一些神经元,我不确定这样做是否“正确”)。

0 投票
1 回答
320 浏览

python - Keras Dropout 卷积滤波器

我知道dropout 对神经网络的卷积滤波器内核的影响与对 FC 层的影响不同

但是,如果您放弃整个过滤器,同样的事实是否适用?

让我们假设一个网络结构,如:Input、Conv2D、Conv2D、...、Conv2D、Conv2D、Sigmoid。所以整个网络中没有全连接层。

问题1 应用conv filter dropouts来避免filter之间的co-adaptation来提高filter可视化的结果是否合理。

问题 2 有没有一种快速的方法在 keras 中做 dropout 过滤器。

0 投票
1 回答
65 浏览

python - 辍学是否适用于 Keras 中的正则化项?

我有一个自定义的正则化术语my_reg

是否Dropout(0.5)也适用于my_reg培训过程中?如果不是,我怎样才能使它成为真的?提前致谢!

0 投票
2 回答
1170 浏览

machine-learning - 反转 dropout 如何补偿 dropout 的影响并保持预期值不变?

我正在从deeplearning.ai课程中学习神经网络中的正则化。在 dropout 正则化中,教授说如果应用了 dropout,计算的激活值将小于不应用 dropout 时(测试时)。所以我们需要扩展激活以保持测试阶段更简单。

我理解这个事实,但我不明白缩放是如何完成的。这是一个用于实现反向 dropout 的代码示例。

在上面的代码中,为什么激活被除以0.8或将节点保留在层中的概率(keep_prob)?任何数字示例都会有所帮助。

0 投票
0 回答
311 浏览

tensorflow - Tensorflow OD API - 微调模型时使用 dropout

我正在尝试用我自己的数据微调 SSD MobileNet v2(来自模型动物园)。在 pipeline.config 我看到它use_dropout设置为 false。这是为什么?我认为应该使用 dropout 来防止过度拟合。

是因为批量标准化吗?在这篇论文中,它说:

3.4 Batch Normalization 对模型进行正则化

当使用 Batch Normalization 进行训练时,可以看到一个训练示例与 mini-batch 中的其他示例一起出现,并且训练网络不再为给定的训练示例生成确定性值。在我们的实验中,我们发现这种效果有利于网络的泛化。虽然 Dropout (Srivastava et al., 2014) 通常用于减少过度拟合,但在批量归一化网络中,我们发现它可以被移除或降低强度。

0 投票
1 回答
5719 浏览

python - 如何在 Keras 模型中停用使用 training=True 调用的 dropout 层?

我希望查看训练 tf.keras 模型的最终输出。在这种情况下,它将是来自 softmax 函数的预测数组,例如 [0,0,0,1,0,1]。

这里的其他线程建议使用 model.predict(training_data),但这不适用于我的情况,因为我在训练和验证中使用 dropout,因此神经元被随机丢弃,再次使用相同的数据进行预测会给出不同的结果.

在 tensorflow 中,您可以很容易地在训练后获取模型的输出。这是来自Github 存储库的示例:

我可以从经过训练的模型中获得的唯一输出似乎是一个历史对象。还有一个 myModel.output 对象,但它是一个张量,如果不将数据放入其中,我就无法评估。有任何想法吗?

0 投票
1 回答
750 浏览

tensorflow - 在冻结的 Keras 模型中,dropout 层是否仍然处于活动状态(即 trainable=False)?

我有两个训练有素的模型 (model_Amodel_B),它们都有 dropout 层。我已经冻结model_A并将model_B它们与一个新的密集层合并以获得model_AB(但我没有删除model_A's和model_B's dropout层)。model_AB的权重将是不可训练的,除了添加的密集层。

现在我的问题是:当我训练时,辍学层是否处于活动状态(即丢弃神经元model_A)?model_Bmodel_AB

0 投票
1 回答
2031 浏览

tensorflow - 使用 TensorFlow 2 将 Dropout 添加到 MobileNet

我正在使用 MobileNet 和 TensorFlow 2 来区分 4 个非常相似的玩具。每个玩具我正好有 750 张图片,一个标签包含 750 张“负面”图片,没有任何玩具。

我之前使用过 MobileNet 并取得了相当大的成功,但是关于这种情况的某些事情导致了很多过度拟合(训练/验证准确度之间存在约 30-40% 的差异)。该模型在 3 个 epoch 内很快训练到大约 99.8% 的训练准确度,但验证准确度停留在 75% 左右。验证数据集是 20% 的输入图像的随机集。在查看模型的准确性时,人们对其中一个玩具有很大的偏见,而许多其他玩具被错误地识别为该玩具。

我已经尝试了几乎所有的方法来解决这个问题:

我在添加到 MobileNet 顶部的 Conv2D 层之后添加了 Dropout,并尝试了 0.2 到 0.9 之间的各种丢弃率。

我在 Conv2D 层之前添加了一个额外的 Dropout 层,这似乎稍微改善了一些事情:

我还添加了更多测试数据,尝试在各种照明条件和背景下混合玩具照片,并生成叠加在随机背景上的玩具图像。这些都没有显着影响。

我应该将 dropout 添加到 MobileNet 模型中,而不仅仅是添加到我在它之后添加的层吗?我在 github 上遇到了这样的代码,但我不知道这是否真的是一个好主意 - 或者不知道如何使用 TensorFlow 2 来实现这一点。

这是明智的,还是可行的?

或者,我能想到的唯一其他想法是:

  • 捕获更多图像,以使训练更加困难 - 但我认为每个项目 750 应该足以做得很好。
  • 不要使用 MobileNet,从头开始创建神经网络或使用另一个预先存在的网络。
0 投票
1 回答
458 浏览

keras - 关于使用 keras 功能 API 启用/禁用 dropout 的问题

我正在使用 Keras 功能 API 来构建分类器,并training在预测新实例时使用 dropout 层中的标志来启用 dropout(以便估计不确定性)。为了获得预期的响应,需要多次重复此预测,使用 keras 随机激活密集层中的链接,当然它的计算成本很高。因此,我还希望可以选择在预测阶段不使用 dropout,即使用所有网络链接。有谁知道我该怎么做?以下是我正在做的示例代码。我试着看看predict有任何相关参数,但似乎没有(?)。从技术上讲,我可以在 dropout 层没有训练标志的情况下训练相同的模型,但我不想这样做(或者更好的是我想要一个更干净的解决方案,而不是拥有 2 个不同的模型)。

运行上面的示例,我得到以下输出:

正如预期的那样,相同输入的不同类别概率,因为来自 dropout 层的链接随机(停用)激活。

关于如何使用功能 API 在预测阶段启用/禁用 dropout 有什么建议吗?