Как правильно нормализовать веса во время обучения в PyTorch, не минуя Autograd?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как правильно нормализовать веса во время обучения в PyTorch, не минуя Autograd?

Сообщение Anonymous »

Я реализую нейронную сеть в PyTorch, и мне нужно нормализовать веса определенных слоев во время прямого прохода. В частности, я хочу нормализовать веса по норме L2 для некоторых слоев. Вот упрощенная версия моего кода:

Код: Выделить всё

import torch
import torch.nn.functional as F

class MyModel(torch.nn.Module):
def __init__(self, layers, activation_function):
super(MyModel, self).__init__()
self.layers = torch.nn.ModuleList(layers)
self.act_fun = activation_function

def forward(self, X):
output = X
for i, layer in enumerate(self.layers):
if i > 0:
# Normalize the weights
layer.weight.data = F.normalize(layer.weight, p=2, dim=1)
if i < len(self.layers) - 1:
output = self.act_fun(layer(output))
else:
output = layer(output)
return output.squeeze()
Меня беспокоит следующее:
  • Совместимость Autograd: напрямую изменяя Layer.weight.data, я обхожу автоград PyTorch система? Будет ли это препятствовать правильному вычислению градиентов во время обратного распространения ошибки?
  • Правильные обновления градиента: будет ли нормализация веса учитываться при вызове loss.backward(), или мне нужно обработать это по-другому обеспечить правильное вычисление градиента?
  • Рекомендации: существует ли рекомендуемый способ нормализации весов слоев во время обучения в PyTorch, который поддерживает совместимость с autograd и обеспечивает правильное обновление градиента?
Я читал, что непосредственное изменение .data может вызвать проблемы с отслеживанием градиента, но я не уверен, как правильно реализовать нормализацию веса в этом контексте.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ypassing-a
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»