【问题标题】:How to normalize convolutional weights in pytorch?如何在pytorch中标准化卷积权重?
【发布时间】:2019-09-20 07:54:33
【问题描述】:

我在pytorch 中有一个 CNN,我需要在每次迭代中使用 L2 范数对卷积权重(过滤器)进行归一化。最有效的方法是什么?

基本上,在我的特定实验中,我需要用模型中的归一化值替换过滤器(在训练和测试期间)。

【问题讨论】:

  • 你想使用 L2 正则化吗?
  • 不,我不想要 L2 正则化。我只想标准化卷积权重。谢谢

标签: python conv-neural-network pytorch


【解决方案1】:

我不确定我是否正确理解了您的问题。但是如果我被要求在每次迭代中对 NN 层的权重进行归一化,我会做如下的事情。

for ite in range(100): # training iteration

    # write your code to train your model
    # update the parameters using optimizer.step() and then normalize

    with torch.no_grad():
        model.conv.weight.div_(torch.norm(model.conv.weight, dim=2, keepdim=True)

这里,model.conv 指的是模型的卷积层。 请确保您在torch.norm() 函数中正确地给出了dim 参数。我只是将它设置为 2 给你一个例子。

例如,如果你使用Conv1d,那么权重参数的形状就是(out_channels, in_channels, kW),那么你可以设置dim=2

【讨论】:

  • 感谢您的回答。我用更多细节编辑了这个问题。我需要在训练期间进行归一化,因为我希望模型使用它们来更新权重。
猜你喜欢
  • 2019-05-28
  • 2021-09-10
  • 1970-01-01
  • 1970-01-01
  • 2017-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-26
相关资源
最近更新 更多