dropout相关内容
我正在尝试在 Pytorch 上使用 Mc Dropout 实现贝叶斯 CNN,主要思想是,通过在测试时应用 dropout 并运行多次前向传递,您可以获得来自各种不同模型的预测.我找到了 Mc Dropout 的一个应用,但我真的不明白他们是如何应用这种方法的,以及他们究竟是如何从预测列表中选择正确的预测的 这是代码 def mcdropout_test(模型):模型.train()测试
..
这是我定义的模型,它是一个带有 2 个完全连接层的简单 lstm. 导入副本进口火炬将 torch.nn 导入为 nn导入 torch.nn.functional 作为 F导入 torch.optim 作为 optim类 mylsm(nn.Module):def __init__(self,input_dim, output_dim, hidden_dim,linear_dim):超级(my
..
通过使用 pyTorch 有两种方法可以退出torch.nn.Dropout 和 torch.nn.functional.Dropout. 我很难看出它们的使用之间的区别: 何时使用什么? 这有什么不同吗? 当我切换它们时,我没有看到任何性能差异. 解决方案 技术差异已在另一个答案中显示.然而,主要区别在于 nn.Dropout 是一个火炬模块本身,它具有一些便利性
..
谁能解释不同辍学风格之间的区别?从 文档 中,我假设不是删除一些单位为零(dropout),GaussianDropout 将这些单位乘以某种分布.然而,在实际测试时,所有单元都被触及.结果看起来更像经典的 GaussianNoise. tf.random.set_seed(0)层 = tf.keras.layers.GaussianDropout(.05, input_shape=(2,))数
..
来自 Keras 文档: dropout:在 0 和 1 之间浮动.输入的线性变换. recurrent_dropout:在 0 和 1 之间浮动.drop 用于循环状态的线性变换. 谁能指出每个辍学发生在图片下方的哪个位置? 解决方案 我建议看一下(第一部分)这篇论文.常规 dropout 应用于输入和/或输出,这意味着从 x_t 到 h_t 的垂直箭头.在您的情况下,
..
在神经网络中,正则化(例如 L2、dropout)通常用于减少过拟合.例如,下图显示了典型的损失与 epoch,有和没有 dropout.实线 = 训练,虚线 = 验证,蓝色 = 基线(无 dropout),橙色 = 有 dropout.绘图由 Tensorflow 教程提供.权重正则化的行为类似. 正则化延迟了验证损失开始增加的时期,但正则化显然不会减少验证损失的最小值(至少在我的模型和上
..
model.eval() 方法修改某些模块(层),这些模块(层)在训练和推理期间需要以不同的方式表现.文档中列出了一些示例: 这仅对某些模块有 [an] 影响.如果它们受到影响,请参阅特定模块的文档以了解其在培训/评估模式下的行为的详细信息,例如Dropout、BatchNorm 等 是否有一份详细的清单,列出了哪些模块受到影响? 解决方案 除了 @iacob 提供的信息:
..
此代码尝试使用 dropout 的自定义实现: %reset -f进口火炬将 torch.nn 导入为 nn# 导入火炬视觉# 导入 torchvision.transforms 作为转换进口火炬将 torch.nn 导入为 nn将 torch.utils.data 导入为 data_utils将 numpy 导入为 np导入 matplotlib.pyplot 作为 plt导入 torch.n
..
我在 tensorflow (tf.keras.layers.Dropout) 中实现的模型上使用了 dropout 层.我在训练期间设置了“training=True",在测试时设置了“training=False".性能很差.我也在测试期间不小心更改了“training=True",结果变得更好了.我想知道发生了什么?为什么它会影响训练损失值?因为我不会对培训进行任何更改,并且整个测试过程都在
..
来自 Pytorch 的 dropout 层更改了未设置为零的值.使用 Pytorch 的文档示例:(source): 导入火炬将 torch.nn 导入为 nnm = nn.Dropout(p=0.5)输入 = 火炬.ones(5, 5) print(input)张量([[1., 1., 1., 1., 1.],[1., 1., 1., 1., 1.],[1., 1., 1., 1., 1.
..
model.eval()方法修改某些模块(层),这些模块在训练和推理过程中必须表现出不同的行为.文档: 这仅对某些模块有[an]作用.请参阅特定模块的文档,以了解其在培训/评估模式下的行为的详细信息(如果受到影响),例如 Dropout , BatchNorm 等 是否列出了受影响的模块的详尽列表? 解决方案 除了 @iacob 提供的信息之外: 基类模块条件 其他规范
..
我有一个模型,该模型由3个LSTM层,一个批处理规范层以及最后一个致密层组成.这是代码: def build_uncomplied_model(hparams):输入= tf.keras.Input(形状=(无,hparams ["n_features"]))x = return_RNN(hparams ["rnn_type"])(hparams ["cell_size_1"],return_
..
从辍学论文: “的想法是在测试时使用单个神经网络而不会出现辍学现象.该网络的权重是受过培训的按比例缩小的版本重量.如果在训练期间以概率p保留一个单元,则在测试时间,该单位的输出权重乘以p为如图2所示.这确保了对于任何隐藏的单元而言,预期的输出(在训练时用于掉落单位的分布下)为与测试时的实际输出相同." 我们为什么要保留预期的输出?如果我们使用ReLU激活,则权重或激活的线性缩放会导致网
..
在神经网络中,通常使用正则化(例如L2,辍学)来减少过度拟合.例如,下图显示了典型的损失与时期,有和没有辍学.实线=训练,虚线=验证,蓝色=基线(无辍学),橙色=有辍学.情节由Tensorflow教程提供. 很明显,如果辍学的结果是延迟收敛,那么它就没有多大用处.但是,当然,它总是 不能正常工作(正如您的情节清楚表明的那样),因此默认情况下不应使用 (可以说是这里的教训)...
..
我正在尝试在Pytorch上使用Mc Dropout实施贝叶斯CNN,主要思想是,通过在测试时应用辍学并遍历许多前向传递,您可以从各种不同的模型中获得预测.我找到了Mc Dropout的一个应用程序,但我真的没有得到他们如何应用此方法以及他们如何从预测列表中选择正确的预测 这是代码 def mcdropout_test(model):model.train()test_loss = 0正确
..
谁能解释不同辍学风格之间的区别?从文档中,我认为不是删除一些单元为零(丢失),GaussianDropout将这些单位乘以某种分布.但是,在实际测试中,所有单元都被触及.结果看起来更像是经典的高斯噪声. tf.random.set_seed(0) layer = tf.keras.layers.GaussianDropout(.05, input_shape=(2,)) data = np.
..
我有两个训练有素的模型(model_A和model_B),并且两个模型都有辍学层.我冻结了model_A和model_B并将它们与新的密集层合并以获得model_AB(但是我还没有删除model_A和model_B的退出层). model_AB的权重将是不可训练的,除了增加的致密层. 现在我的问题是:当我训练model_AB时,model_A和model_B中的辍学层是否处于活动状态(即神经
..
我希望查看训练tf.keras模型的最终输出.在这种情况下,它将是来自softmax函数的一系列预测,例如[0,0,0,1,0,1]. 此处的其他线程建议使用model.predict(training_data),但这不适用于我的情况,因为我在训练和验证时使用了辍学功能,因此神经元被随机丢弃,并使用相同的数据再次进行预测结果不同. def get_model(): input
..
这是我定义的模型,它是一个具有2个完全连接层的简单lstm。 导入副本 import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim class mylstm(nn.Module): def __init __(self,input_dim
..
通过使用pyTorch,有两种辍学方法 torch.nn.Dropout和torch.nn.functional.Dropout. 我很难看到它们之间的区别: 什么时候使用什么? 有什么不同吗? 切换它们时,我看不到任何性能差异. 解决方案 技术差异已在其他答案中显示.但是主要区别在于nn.Dropout是一个手电筒模块,具有一些便利: 用于说明某些差异的简短
..