code: def _initialize(self, no_components, no_item_features, no_user_features):
          
  
          # Initialise item features.
          self.item_embeddings = (
              (self.random_state.rand(no_item_features, no_components) - 0.5)
              / no_components
          ).astype(np.float32)
          self.item_embedding_gradients = np.zeros_like(self.item_embeddings)
          self.item_embedding_momentum = np.zeros_like(self.item_embeddings)
          self.item_biases = np.zeros(no_item_features, dtype=np.float32)
          self.item_bias_gradients = np.zeros_like(self.item_biases)
          self.item_bias_momentum = np.zeros_like(self.item_biases)
  
          # Initialise user features.
          self.user_embeddings = (
              (self.random_state.rand(no_user_features, no_components) - 0.5)
              / no_components
          ).astype(np.float32)
          self.user_embedding_gradients = np.zeros_like(self.user_embeddings)
          self.user_embedding_momentum = np.zeros_like(self.user_embeddings)
          self.user_biases = np.zeros(no_user_features, dtype=np.float32)
          self.user_bias_gradients = np.zeros_like(self.user_biases)
          self.user_bias_momentum = np.zeros_like(self.user_biases)
  
          if self.learning_schedule == "adagrad":
              self.item_embedding_gradients += 1
              self.item_bias_gradients += 1
              self.user_embedding_gradients += 1
              self.user_bias_gradients += 1
docs: Initialise internal latent representations.