我无法理解 numpy 中使用的伯努利随机数生成器是如何计算的,并希望对此进行一些解释。例如:
np.random.binomial(size=3, n=1, p= 0.5)
Results:
[1 0 0]
Run Code Online (Sandbox Code Playgroud)
n = 路径数
p = 发生概率
大小 = 实验次数
如何确定“0”或“1”的生成数字/结果?
==================================更新================ ==================
我创建了一个受限玻尔兹曼机,尽管在多个代码执行中是“随机”的,但它始终呈现相同的结果。随机种子使用
np.random.seed(10)
import numpy as np
np.random.seed(10)
def sigmoid(u):
return 1/(1+np.exp(-u))
def gibbs_vhv(W, hbias, vbias, x):
f_s = sigmoid(np.dot(x, W) + hbias)
h_sample = np.random.binomial(size=f_s.shape, n=1, p=f_s)
f_u = sigmoid(np.dot(h_sample, W.transpose())+vbias)
v_sample = np.random.binomial(size=f_u.shape, n=1, p=f_u)
return [f_s, h_sample, f_u, v_sample]
def reconstruction_error(f_u, x):
cross_entropy = -np.mean(
np.sum(
x * np.log(sigmoid(f_u)) + (1 - x) * np.log(1 …Run Code Online (Sandbox Code Playgroud)