В то время как вычисление апостериорного значения с помощью параметра (скажем, w_mu) по сравнению с использованием параметра. Data (w_mu.data) имеет значение? - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь реализовать Байес Бэкпропом. При вычислении апостериорного значения, если я использую параметр в качестве входных данных, а параметр.data в качестве входных данных, точность результата резко меняется.

    self.w_post = Normal(self.w_mu.data, torch.log(1+torch.exp(self.w_rho)))
    self.b_post = Normal(self.b_mu.data, torch.log(1+torch.exp(self.b_rho)))
    self.log_post = self.w_post.log_prob(self.w).sum() + self.b_post.log_prob(self.b).sum()

Это работает, а следующий блок - нет.

    self.w_post = Normal(self.w_mu, torch.log(1+torch.exp(self.w_rho)))
    self.b_post = Normal(self.b_mu, torch.log(1+torch.exp(self.b_rho)))
    self.log_post = self.w_post.log_prob(self.w).sum() + self.b_post.log_prob(self.b).sum()

Поскольку w_post и b_post не являются параметрами, так почему это влияет на мой ответ. Этот фрагмент кода находится в прямой функции пользовательского линейного слоя.

В то время как значение log_posterior не изменяется в течение эпох. Может ли это быть как-то связано с семенем?

1 Ответ

0 голосов
/ 08 февраля 2020

Я думаю, что оба решения могут быть применены, и это как-то только меняет семя. После нескольких итераций обе модели сходятся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...