Проблема обратного распространения ошибки через образец в бета-распределении в pytorchPython

Программы на Python
Ответить
Anonymous
 Проблема обратного распространения ошибки через образец в бета-распределении в pytorch

Сообщение Anonymous »

Скажем, я получил несколько альфа и бета в качестве параметров нейронной сети, которые будут параметрами бета-распределения. Теперь я беру выборку из бета-распределения, затем вычисляю некоторые потери и делаю обратное распространение по полученным выборкам. Возможно ли это сделать? учитывая, что после процесса выборки я выполняю .requires_grad_(True) для выборки, а затем вычисляю потери? Это, конечно, работает, но похоже, что потери не сходятся. Есть ли другой способ сделать это в Pytorch?
Скажем, я получаю следующие переменные через некоторую нейронную сеть:
Скажем, я получаю следующие переменные через некоторую нейронную сеть:
Скажем, я получаю следующие переменные: p>

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

mu, sigma, pred = model.forward(input)
Где, скажем, mu — это тензор в форме (batch_size x 30), аналогично sigma — это тензор в форме (batch_size x 30). Я вычисляю альфа и бета, используя мю и сигму, полученные из нейронной сети (обе имеют одинаковую форму). (batch_size x 30)), а затем попробовать его с помощью бета-дистрибутива следующим образом:

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

def sample_from_beta_distribution(alpha, beta, eps=1e-6):
# Clamp alpha and beta to be positive
alpha_positive = torch.clamp(alpha, min=eps)
beta_positive = torch.clamp(beta, min=eps)

# Create a Beta distribution
# This will automatically broadcast to handle the batch dimension
beta_dist = torch.distributions.beta.Beta(alpha_positive, beta_positive)

# Sample from the distribution
# This will return samples of shape [38, 30]
samples = beta_dist.sample()

return samples
Здесь я беру выборки, имеющие ту же форму, что и (batch_size x 30), выполняю над ними некоторые операции, а затем вычисляю потери. Я ожидал, что градиент будет распространяться через это, но похоже, что потери не сходятся.
Любые выводы могут помочь. Обратите внимание: это не так просто, как трюк с перепараметризацией в стандартном нормальном распределении.

Подробнее здесь: https://stackoverflow.com/questions/793 ... in-pytorch
Ответить

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

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

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

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

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