(Python) Gaussian Бернулли RBM по вычислениям P(v|h)
Контекст:
Я использую Gaussian Bernoulli RBM, он похож на популярный RBM, но с реально видимыми видимыми единицами.
Правда, процедура выборки скрытых значений p(h=1|v)
одинаковы для обоих, т.е.
Проблема:
Моя проблема в кодировании (с использованием Python) p(v|h)
, который,
Я немного смущен тем, как работает N(). Должен ли я просто добавить гауссовский шум, используя стандартное отклонение данных b + sigma * W.dot(h)
?
Заранее спасибо.
1 ответ
Решение
Обозначение X ~ N(μ, σ²) означает, что X обычно распределяется со средним значением µ и дисперсией σ², поэтому в программе обучения RBM выборка v должна производиться из такого распределения. С точки зрения NumPy, это
v = sigma * np.random.randn(v_size) + b + sigma * W.dot(h)
Или использовать scipy.stats.norm
для лучшего чтения кода.