我在pytorch
中有一个CNN,我需要在每次迭代中使用L2范数对卷积权重(滤波器)进行归一化。最有效的方法是什么?
基本上,在我的特定实验中,我需要用模型中的归一化值替换过滤器(在训练和测试期间)。
答案 0 :(得分: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
是指模型的卷积层。 请确保,您在dim
函数中适当地输入了torch.norm()
参数。我只是将其设置为2,举一个例子。
例如,如果您使用的是Conv1d
,则权重参数的形状为(out_channels, in_channels, kW)
,则可以设置dim=2
。
答案 1 :(得分:0)