code: def encode(self, x):
          
          E      = self.energy
          y_min  = self.find_energy_minimum(E, x)
          return y_min
docs: Given an input array `x` it returns its associated encoding `y(x)`, that is, 
          a stable configuration (local energy minimum) of the hidden units 
          while the visible units are clampled to `x`.
          
          Note that NO learning takes place.