(Python) 高斯伯努利限制玻尔兹曼机计算 P(v|h)

背景:

我正在实现高斯伯努利限制玻尔兹曼机,它与常见的限制玻尔兹曼机类似,但具有实值可见单元。

确实,采样隐藏值 p(h=1|v) 的过程是相同的,即

enter image description here

问题:

我的问题在于如何用Python编写 p(v|h),即

enter image description here

我对 N() 的工作原理有点困惑。我是否应该简单地使用数据的标准差向 b + sigma * W.dot(h) 添加高斯噪声?

提前感谢您。


回答:

符号 X ~ N(μ, σ²) 表示 X 服从均值为 μ 和方差为 σ² 的正态分布,因此在限制玻尔兹曼机的训练过程中,v 应该从这样的分布中采样。在NumPy中,这表示为

v = sigma * np.random.randn(v_size) + b + sigma * W.dot(h)

或者使用 scipy.stats.norm 来编写更易读的代码。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注