第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

具有伯努利分布的 TensorFlow Probability MCMC

具有伯努利分布的 TensorFlow Probability MCMC

一只萌萌小番薯 2021-08-05 18:04:14
我需要使用 TensorFlow Probability 從伯努利分布中采樣來實現馬爾可夫鏈蒙特卡羅。但是,我的嘗試顯示的結果與我對伯努利分布的期望不一致。我在這里修改了 tfp.mcmc.sample_chain(從對角線方差高斯采樣)示例的文檔中給出的示例,以從伯努利分布中提取。由于伯努利分布是離散的,我使用了 RandomWalkMetropolis 轉換內核而不是 Hamiltonian Monte Carlo 內核,我預計它不會工作,因為它計算梯度。這是代碼:import numpy as npimport matplotlib.pyplot as pltimport seaborn as snsimport tensorflow as tfimport tensorflow_probability as tfptfd = tfp.distributionsdef make_likelihood(event_prob):    return tfd.Bernoulli(probs=event_prob,dtype=tf.float32)dims=1event_prob = 0.3num_results = 30000likelihood = make_likelihood(event_prob)states, kernel_results = tfp.mcmc.sample_chain(    num_results=num_results,    current_state=tf.zeros(dims),    kernel = tfp.mcmc.RandomWalkMetropolis(              target_log_prob_fn=likelihood.log_prob,              new_state_fn=tfp.mcmc.random_walk_normal_fn(scale=1.0),              seed=124             ),    num_burnin_steps=5000)chain_vals = states# Compute sample stats.sample_mean = tf.reduce_mean(states, axis=0)sample_var = tf.reduce_mean(    tf.squared_difference(states, sample_mean),    axis=0)#initialize the variableinit_op = tf.global_variables_initializer()#run the graphwith tf.Session() as sess:    sess.run(init_op)     [sample_mean_, sample_var_, chain_vals_] = sess.run([sample_mean,sample_var,chain_vals])chain_samples = (chain_vals_[:] )   print ('Sample mean = {}'.format(sample_mean_))print ('Sample var = {}'.format(sample_var_))fig, axes = plt.subplots(2, 1)fig.set_size_inches(12, 10)axes[0].plot(chain_samples[:])axes[0].title.set_text("values sample chain tfd.Bernoulli")sns.kdeplot(chain_samples[:,0], ax=axes[1], shade=True)axes[1].title.set_text("chain tfd.Bernoulli distribution")fig.tight_layout()plt.show()我希望看到區(qū)間 [0,1] 中馬爾可夫鏈狀態(tài)的值。馬爾可夫鏈值的結果看起來不像伯努利分布的預期結果,KDE 圖也不是,如下圖所示:我的示例是否存在概念上的缺陷,或者在使用 TensorFlow Probability API 時是否存在錯誤?或者使用離散分布(例如伯努利分布)的馬爾可夫鏈蒙特卡羅的 TF.Probability 實現可能存在問題?
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 363 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號