问题标签 [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 投票
1 回答
121 浏览

machine-learning - 减少(与延迟)神经网络中的过度拟合

在神经网络中,正则化(例如 L2、dropout)通常用于减少过拟合。例如,下图显示了典型的损失与时期,有和没有辍学。实线 = 训练,虚线 = 验证,蓝色 = 基线(无辍学),橙色 = 有辍学。绘图由 Tensorflow 教程提供。 有/无辍学的损失 权重正则化的行为类似。

正则化延迟了验证损失开始增加的时期,但正则化显然不会降低验证损失的最小值(至少在我的模型和上面的图的教程中)。

如果我们在验证损失最小时使用提前停止来停止训练(以避免过度拟合),并且如果正则化只是延迟最小验证损失点(与降低最小验证损失值相比),那么似乎正则化不会导致网络具有更大的泛化性,但只会减慢训练速度。

如何使用正则化来减少最小验证损失(以改进模型泛化)而不是仅仅延迟它?如果正则化只是延迟最小验证损失而不是减少它,那么为什么要使用它呢?

0 投票
1 回答
247 浏览

tensorflow - 为什么 Keras Dropout 中的非零值会发生变化?

假设我有一个张量:

我对其应用辍学:

每次我运行它时,我都有 1 到 3 个不完全归零的值rate=0.1。它实际适用的费率范围是多少?为什么非归零值会发生变化?

可视化 Celius Stingher 的答案:

0 投票
1 回答
108 浏览

python - 带有阶段的 TensorFlow 自定义训练

我需要使用 Tensorflow/Keras 创建一个自定义训练循环(因为我想拥有多个优化器并告诉每个优化器应该处理哪些权重)。

尽管这个教程那个教程对这个问题也很清楚,但他们忽略了一个非常重要的点:我如何预测训练阶段以及如何预测验证阶段?

假设我的模型有Dropout层或BatchNormalization层。无论是在训练还是在验证中,它们肯定以完全不同的方式工作。

我如何调整这些教程?这是一个虚拟示例(可能包含一两段伪代码):

0 投票
1 回答
495 浏览

python - 如何使用 tensorflow 实现 dropout

我在 tensorflow 3-knn 实现中应用了 dropout。但是由于占位符的变量keep_prob,我得到了一个错误。

TypeError:无法将 feed_dict 键解释为张量:无法将 int 转换为张量。

我编写了 2 个函数:forward_propagation(实现前向传播)和模型(在模型上训练参数)。这是两个功能的简短实现:

为了训练模型,我如何影响 keep_prob 值从“模型”函数到“forward_propagation”函数?

0 投票
2 回答
615 浏览

tensorflow - 在估算器中同时使用 batch_norm 和 dropout 是否相关?

我读到批量归一化和 dropout 是避免神经网络过度拟合的两种不同方法。在以下相同的估计器中使用两者是否相关?

0 投票
1 回答
3032 浏览

python-3.x - 辍学和批量标准化 - 层的顺序重要吗?

我正在构建一个神经网络模型,我的问题是,dropout 和批量归一化层的顺序是否真的会影响模型?如果我使用 ROC-AUC 分数作为我的测量指标,那么将 dropout 层放在批量标准化层之前(反之亦然)实际上会对模型的输出产生任何影响。

我希望输出具有较大的(ROC-AUC)分数,并且想知道它是否会受到层排序的任何影响。

0 投票
1 回答
36 浏览

tensorflow - 无法使用 get_tensor_by_name 恢复 Dropout

我试图保存和恢复一些张量。

在保存会话中:

保存后,我尝试恢复会话

但我得到了错误:

“名称‘def:0’指的是一个不存在的张量。操作‘def’在图中不存在。”

请帮忙。

0 投票
0 回答
718 浏览

python - 在神经网络中关闭或忽略pytorch中的神经元

我想建立一个前馈神经网络并在一小部分输入特征上对其进行训练(过度拟合)。为此,我使用了 dropout 正则化,因为它遵循小部分训练的逻辑,然后在整个特征上测试模型(在训练期间关闭并打开测试)。

但由于我对过度拟合感兴趣,我认为 dropout 对我来说不是一个好的解决方案。那么如何在训练期间以与 Dropout 正则化相同的方式关闭某些输入节点,但这次我不想随机关闭它们,而是选择在训练期间将忽略哪些特征?

0 投票
0 回答
1038 浏览

pytorch - Pytorch model.train() 和 model.eval() 行为怪异

我的模型是基于 CNN 的模型,具有多个 BN 层和 DO 层。所以最初,我不小心把 model.train() 放在循环之外,如下所示:

作为记录,上面的代码训练良好并且在验证集上表现不错:

然而,在查看代码时,我意识到我犯了一个错误,因为上面的代码会在第一次迭代后关闭 BN 层和 DO 层。

所以,我在循环中移动了这条线: model.train() :

此时,模型的学习效果相对较差(看起来像模型过度拟合,您可以在以下输出中看到)。它具有更高的训练准确度,但在验证集上的准确度显着降低(考虑到 BN 和 DO 的通常影响,此时它开始变得很奇怪):

所以我心想:“我猜 BN 层和 DO 层对我的模型有负面影响”,因此将它们删除。然而,模型在移除 BN 和 DO 层后表现不佳(事实上,模型似乎没有学到任何东西):

在这一点上,我非常困惑。我更进一步,进行了另一个实验。我将 BN 层和 DO 层放回模型中并测试了以下内容:

效果不佳:

我多次进行了上述实验,结果与我上面发布的输出相差不远。(我正在使用的数据非常简单)。

总而言之,该模型在非常特殊的环境中效果最佳。

  1. Batch Normalization 和 Dropout 添加到模型中。(这很好)。
  2. 仅在第一个时期使用 model.train() 训练模型。(奇怪..结合3)
  3. 在剩余的迭代中使用 model.eval() 训练模型。(也很奇怪)

老实说,我不会像上面那样设置培训程序(我认为没有人会),但出于某种原因它运作良好。有没有人经历过类似的事情?或者,如果您能指导我了解模型为什么会这样,将不胜感激!

提前致谢!!

0 投票
1 回答
4965 浏览

machine-learning - dropout中in-place是什么意思

就地:如果设置为True,将就地执行此操作。

我想问一下dropout中的in-place是什么意思。它有什么作用?执行这些操作时性能有何变化?

谢谢