codecamp

TensorFlow Monte Carlo重要性抽样估计

tf.contrib.bayesflow.monte_carlo.expectation_importance_sampler


expectation_importance_sampler ( 
    f , 
    log_p , 
    sampling_dist_q , 
    z = None , 
    n = None , 
    seed = None , 
    name = 'expectation_importance_sampler' 
)

定义在tensorflow/contrib/bayesflow/python/ops/monte_carlo_impl.py.

参见指南:贝叶斯蒙特卡罗(contrib)>行动

蒙特卡罗估计 E_p[f(Z)] = E_q[f(Z) p(Z) / q(Z)].

随着 p(z) := exp{log_p(z)},这Op返回

n ^ { - 1 } sum_ {i= 1 } ^ n[ F ( z_i ) p ( z_i ) / q ( z_i ) ] ,z_i 〜 q , 
\approx E_q [ F (Z) p (Z) / q (Z) ] 
=        E_p [ f ( Z )]

这个积分是通过最大减法在对数空间中完成的,以更好地处理 f(z) p(z) / q(z)可能承受的极端值.

如果 f >= 0,将 expectation_importance_sampler_logspace 应用的结果取幂,则效率高达2倍 Log[f].

用户提供的任何一个样本 z 张量, 或样本数绘制 n

ARGS:

  • f:从可调用映射样本 sampling_dist_q 到具有形状 broadcastable 的 Tensors 到 q.batch_shape.例如,f “就像” q.log_prob 一样工作.
  • log_p:从可调用映射样本 sampling_dist_q 到具有形状 broadcastable 的 Tensors 到 q.batch_shape.例如,log_p “就像” sampling_dist_q.log_prob 一样工作.
  • sampling_dist_q:抽样分布.tf.contrib.distributions.Distribution.log_p 和 q 应在同一组中得到支持.
  • z:p 样品的张量,由 p.sample 为一些 n 生成.
  • n:整数张量.如果未提供z生成的样本数.
  • seed:Python整数来寻找随机数程序.
  • name:为该操作提供一个名字.

返回:

重要性抽样估计.形状张量等于 q 的批次形状,并且 dtype= q.dtype.


TensorFlow Monte Carlo期望值计算
TensorFlow 对数空间的重要性抽样估计
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

TensorFlow 函数介绍

TensorFlow 函数模块:tf

TensorFlow的image模块

TensorFlow使用之tf.io

TensorFlow使用之tf.keras

TensorFlow函数教程:tf.keras.applications

TensorFlow函数教程:tf.keras.backend

TensorFlow使用之tf.metrics

TensorFlow使用之tf.nn

TensorFlow使用之tf.python_io

TensorFlow 功能函数

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }