问题标签 [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.
machine-learning - 减少(与延迟)神经网络中的过度拟合
在神经网络中,正则化(例如 L2、dropout)通常用于减少过拟合。例如,下图显示了典型的损失与时期,有和没有辍学。实线 = 训练,虚线 = 验证,蓝色 = 基线(无辍学),橙色 = 有辍学。绘图由 Tensorflow 教程提供。 权重正则化的行为类似。
正则化延迟了验证损失开始增加的时期,但正则化显然不会降低验证损失的最小值(至少在我的模型和上面的图的教程中)。
如果我们在验证损失最小时使用提前停止来停止训练(以避免过度拟合),并且如果正则化只是延迟最小验证损失点(与降低最小验证损失值相比),那么似乎正则化不会导致网络具有更大的泛化性,但只会减慢训练速度。
如何使用正则化来减少最小验证损失(以改进模型泛化)而不是仅仅延迟它?如果正则化只是延迟最小验证损失而不是减少它,那么为什么要使用它呢?
tensorflow - 为什么 Keras Dropout 中的非零值会发生变化?
假设我有一个张量:
我对其应用辍学:
每次我运行它时,我都有 1 到 3 个不完全归零的值rate=0.1
。它实际适用的费率范围是多少?为什么非归零值会发生变化?
可视化 Celius Stingher 的答案:
python - 如何使用 tensorflow 实现 dropout
我在 tensorflow 3-knn 实现中应用了 dropout。但是由于占位符的变量keep_prob,我得到了一个错误。
TypeError:无法将 feed_dict 键解释为张量:无法将 int 转换为张量。
我编写了 2 个函数:forward_propagation(实现前向传播)和模型(在模型上训练参数)。这是两个功能的简短实现:
为了训练模型,我如何影响 keep_prob 值从“模型”函数到“forward_propagation”函数?
tensorflow - 在估算器中同时使用 batch_norm 和 dropout 是否相关?
我读到批量归一化和 dropout 是避免神经网络过度拟合的两种不同方法。在以下相同的估计器中使用两者是否相关?
python-3.x - 辍学和批量标准化 - 层的顺序重要吗?
我正在构建一个神经网络模型,我的问题是,dropout 和批量归一化层的顺序是否真的会影响模型?如果我使用 ROC-AUC 分数作为我的测量指标,那么将 dropout 层放在批量标准化层之前(反之亦然)实际上会对模型的输出产生任何影响。
我希望输出具有较大的(ROC-AUC)分数,并且想知道它是否会受到层排序的任何影响。
tensorflow - 无法使用 get_tensor_by_name 恢复 Dropout
我试图保存和恢复一些张量。
在保存会话中:
保存后,我尝试恢复会话
但我得到了错误:
“名称‘def:0’指的是一个不存在的张量。操作‘def’在图中不存在。”
请帮忙。
python - 在神经网络中关闭或忽略pytorch中的神经元
我想建立一个前馈神经网络并在一小部分输入特征上对其进行训练(过度拟合)。为此,我使用了 dropout 正则化,因为它遵循小部分训练的逻辑,然后在整个特征上测试模型(在训练期间关闭并打开测试)。
但由于我对过度拟合感兴趣,我认为 dropout 对我来说不是一个好的解决方案。那么如何在训练期间以与 Dropout 正则化相同的方式关闭某些输入节点,但这次我不想随机关闭它们,而是选择在训练期间将忽略哪些特征?
pytorch - Pytorch model.train() 和 model.eval() 行为怪异
我的模型是基于 CNN 的模型,具有多个 BN 层和 DO 层。所以最初,我不小心把 model.train() 放在循环之外,如下所示:
作为记录,上面的代码训练良好并且在验证集上表现不错:
然而,在查看代码时,我意识到我犯了一个错误,因为上面的代码会在第一次迭代后关闭 BN 层和 DO 层。
所以,我在循环中移动了这条线: model.train() :
此时,模型的学习效果相对较差(看起来像模型过度拟合,您可以在以下输出中看到)。它具有更高的训练准确度,但在验证集上的准确度显着降低(考虑到 BN 和 DO 的通常影响,此时它开始变得很奇怪):
所以我心想:“我猜 BN 层和 DO 层对我的模型有负面影响”,因此将它们删除。然而,模型在移除 BN 和 DO 层后表现不佳(事实上,模型似乎没有学到任何东西):
在这一点上,我非常困惑。我更进一步,进行了另一个实验。我将 BN 层和 DO 层放回模型中并测试了以下内容:
效果不佳:
我多次进行了上述实验,结果与我上面发布的输出相差不远。(我正在使用的数据非常简单)。
总而言之,该模型在非常特殊的环境中效果最佳。
- Batch Normalization 和 Dropout 添加到模型中。(这很好)。
- 仅在第一个时期使用 model.train() 训练模型。(奇怪..结合3)
- 在剩余的迭代中使用 model.eval() 训练模型。(也很奇怪)
老实说,我不会像上面那样设置培训程序(我认为没有人会),但出于某种原因它运作良好。有没有人经历过类似的事情?或者,如果您能指导我了解模型为什么会这样,将不胜感激!
提前致谢!!
machine-learning - dropout中in-place是什么意思
就地:如果设置为
True
,将就地执行此操作。
我想问一下dropout中的in-place是什么意思。它有什么作用?执行这些操作时性能有何变化?
谢谢