【发布时间】:2021-10-27 00:07:36
【问题描述】:
我正在处理生成合成数据以帮助训练我的模型的任务。这意味着训练是在合成数据 + 真实数据上进行的,并在真实数据上进行测试。
有人告诉我,批量归一化层可能会在训练时试图找到对所有人都有好处的权重,这是一个问题,因为我的合成数据的分布并不完全等于真实数据的分布。因此,我们的想法是拥有批量标准化层权重的不同“副本”。使神经网络对合成数据和真实数据估计不同的权重,并仅使用真实数据的权重进行评估。
有人可以建议我在 pytorch 中实际实现它的好方法吗?我的想法如下,在数据集中的每个训练阶段之后,我都会遍历所有 batchnorm 层并保存它们的权重。然后在下一个纪元开始时,我将再次迭代加载正确的权重。这是一个好方法吗?不过,我不确定在测试时我应该如何处理批量规范权重,因为批量规范对它的处理方式不同。
【问题讨论】:
-
到目前为止,您在实施方面做了哪些尝试?
-
我刚刚尝试了其他方法。在构建模型时,我为每个训练数据集创建了 batchnorm 层的副本。然后我将数据集名称传递给 Forward 函数,并在每次运行时选择正确的层。但是我不确定这是否是一个好的程序并且会起作用
标签: python pytorch dataset conv-neural-network batch-normalization