code: def set_data(self, X, Y):
          
          assert X.shape[1]==self.Z.shape[1]
          self.X, self.Y = X, Y
docs: Set the data without calling parameters_changed to avoid wasted computation
          If this is called by the stochastic_grad function this will immediately update the gradients