Как получить лог вероятности в TensorFlow? - PullRequest
3 голосов
/ 07 ноября 2019

Я пытаюсь преобразовать скрипт pytorch в тензорный поток, и мне нужно получить вероятности журнала из категориального распределения. Но вычисленные тензорным потоком логарифмические вероятности отличаются от логарифмических вероятностей Pytorch даже после использования того же начального числа. Это то, что я сделал до сих пор

import torch 
from torch.distributions import Categorical
import tensorflow as tf
import tensorflow_probability as tfp

torch.manual_seed(1)
tf.random.set_seed(1)

probs =[0.4,0.6]
m = Categorical(torch.tensor(probs))
action = m.sample()

n = tfp.distributions.Categorical(probs)
print("pytorch",m.log_prob(action))
print("Tensorflow", tf.math.log(n.prob(action.item())))

1 Ответ

2 голосов
/ 07 ноября 2019
tfp.distributions.Categorical(probs)

принимает журналы в качестве аргумента по умолчанию. Они нормализуются, и в результате вероятности построенного распределения составляют [.45, .55].

Вам необходимо построить распределение tfp как:

 tfp.distributions.Categorical(probs=probs)
...