3

我正在尝试将 pytorch 脚本转换为 tensorflow,我需要从分类分布中获取日志概率。但是即使使用相同的种子,tensorflow 计算的对数概率也与 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())))
4

1 回答 1

3
tfp.distributions.Categorical(probs)

将日志作为默认参数。它们正在被归一化,生成的分布概率为 [.45, .55]。

您需要将 tfp 分发构建为:

 tfp.distributions.Categorical(probs=probs)
于 2019-11-07T17:06:50.190 回答