Я не уверен, правильно ли я понял ваш вопрос.Но если бы меня попросили нормализовать вес слоя 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
.