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

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

Сообщение Anonymous »

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

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

mu, sigma, pred = model.forward(input)
Где, скажем, mu — это (

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

batch_size x 30
) в форме тензора, аналогично сигма (

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

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»