class_docstr: Bernoulli Restricted Boltzmann Machine (RBM)
  
  Parameters:
  -----------
  n_hidden: int:
      The number of processing nodes (neurons) in the hidden layer. 
  learning_rate: float
      The step length that will be used when updating the weights.
  batch_size: int
      The size of the mini-batch used to calculate each weight update.
  n_iterations: float
      The number of training iterations the algorithm will tune the weights for.
  
  Reference:
      A Practical Guide to Training Restricted Boltzmann Machines 
      URL: https://www.cs.toronto.edu/~hinton/absps/guideTR.pdf
class_docstr_tok: ["Bernoulli","Restricted","Boltzmann","Machine","(","RBM",")","Parameters",":","--","--","--","--","--","-","n_hidden",":","int",":","The","number","of","processing","nodes","(","neurons",")","in","the","hidden","layer",".","learning_rate",":","float","The","step","length","that","will","be","used","when","updating","the","weights",".","batch_size",":","int","The","size","of","the","mini-batch","used","to","calculate","each","weight","update",".","n_iterations",":","float","The","number","of","training","iterations","the","algorithm","will","tune","the","weights","for",".","Reference",":","A","Practical","Guide","to","Training","Restricted","Boltzmann","Machines","URL",":","https",":","\/\/www.cs.toronto.edu\/~hinton\/absps\/guideTR.pdf"]
code: def _initialize_weights(self, X):
      n_visible = X.shape[1]
      self.W = np.random.normal(
          scale=0.1, size=(n_visible, self.n_hidden)
      )
      self.v0 = np.zeros(n_visible)  # Bias visible
      self.h0 = np.zeros(self.n_hidden)
  
file_path: ML-From-Scratch/mlfromscratch/unsupervised_learning/restricted_boltzmann_machine.py
imports: import logging
  import numpy
  import progressbar
  from mlfromscratch.utils.misc import bar_widgets
  from mlfromscratch.utils import batch_iterator
  from mlfromscratch.deep_learning.activation_functions import Sigmoid
label_desc: Use image node_id 2 for calling the RBM obj's underlying member method code with example usage: obj._initialize_weights(X) without return types