如何在 TensorFlow 中获取对数概率?

How to get log probabilities in TensorFlow?

我正在尝试将 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())))
tfp.distributions.Categorical(probs)

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

您需要将 tfp 分配构建为:

 tfp.distributions.Categorical(probs=probs)