TensorFlow贝叶斯熵(contrib)
2019-01-31 18:07 更新
熵操作
背景
常见的香农熵,证据较低的 BOund(ELBO),KL分歧,更多都具有信息理论的使用和解释.它们也经常用于变分推理.这个库汇集了用于估计他们 Ops,例如使用蒙特卡罗期望。
例子
用 ELBO 拟合变分后验的例子.
#我们首先假设知道关于密度 p(z,x)超过
#潜在变量z和固定测量 x 的对数.由于 x 是固定的,Python
#函数不会将 x 作为参数.
def log_joint ( z ):
theta = tf.Variable(0.) #有助于定义log_joint的可修改变量.
...
#接下来,定义具有可训练参数的正态分布.
q =distributions.Normal(mu =tf.Variable(0.),sigma = tf.Variable(1.))
#现在,定义一个损失函数(负 ELBO),当最小化时,将调整
#mu,sigma 和 theta,增加 ELBO,我们希望这两者都可以减少
#q(z)和 p(z|x)之间的 KL 散度,并增加 p(x).请注意,我们
#不能同时保证,但一般来说,我们期望两者都会发生.
elbo = entropy.elbo_ratio(log_p ,q,n = 10)
loss = - elbo
#最小化损失
train_op = tf.train.GradientDescentOptimizer (0.1 ).minimize(loss)
tf.global_variables_initializer().run()
for step in range(100 ):
train_op.run ()