parameters: (self, Ciu_host, Cui_host, show_progress=True)
docstring: specialized training on the gpu. copies inputs to/from cuda device
docstring_summary: specialized training on the gpu. copies inputs to/from cuda device
docstring_tokens: specialized training on the gpu . copies inputs to / from cuda device
function: def _fit_gpu(self, Ciu_host, Cui_host, show_progress=True):
          """ specialized training on the gpu. copies inputs to/from cuda device """
          if not implicit.cuda.HAS_CUDA:
              raise ValueError("No CUDA extension has been built, can't train on GPU.")
  
          if self.dtype == np.float64:
              log.warning("Factors of dtype float64 aren't supported with gpu fitting. "
                          "Converting factors to float32")
              self.item_factors = self.item_factors.astype(np.float32)
              self.user_factors = self.user_factors.astype(np.float32)
  
          Ciu = implicit.cuda.CuCSRMatrix(Ciu_host)
          Cui = implicit.cuda.CuCSRMatrix(Cui_host)
          X = implicit.cuda.CuDenseMatrix(self.user_factors.astype(np.float32))
          Y = implicit.cuda.CuDenseMatrix(self.item_factors.astype(np.float32))
  
          solver = implicit.cuda.CuLeastSquaresSolver(self.factors)
          log.debug("Running %i ALS iterations", self.iterations)
          with tqdm.tqdm(total=self.iterations, disable=not show_progress) as progress:
              for iteration in range(self.iterations):
                  s = time.time()
                  solver.least_squares(Cui, X, Y, self.regularization, self.cg_steps)
                  progress.update(.5)
                  solver.least_squares(Ciu, Y, X, self.regularization, self.cg_steps)
                  progress.update(.5)
  
                  if self.fit_callback:
                      self.fit_callback(iteration, time.time() - s)
  
                  if self.calculate_training_loss:
                      loss = solver.calculate_loss(Cui, X, Y, self.regularization)
                      progress.set_postfix({"loss": loss})
  
          if self.calculate_training_loss:
              log.info("Final training loss %.4f", loss)
  
          X.to_host(self.user_factors)
          Y.to_host(self.item_factors)
function_tokens: def _fit_gpu ( self , Ciu_host , Cui_host , show_progress = True ) : if not implicit . cuda . HAS_CUDA : raise ValueError ( "No CUDA extension has been built, can't train on GPU." ) if self . dtype == np . float64 : log . warning ( "Factors of dtype float64 aren't supported with gpu fitting. " "Converting factors to float32" ) self . item_factors = self . item_factors . astype ( np . float32 ) self . user_factors = self . user_factors . astype ( np . float32 ) Ciu = implicit . cuda . CuCSRMatrix ( Ciu_host ) Cui = implicit . cuda . CuCSRMatrix ( Cui_host ) X = implicit . cuda . CuDenseMatrix ( self . user_factors . astype ( np . float32 ) ) Y = implicit . cuda . CuDenseMatrix ( self . item_factors . astype ( np . float32 ) ) solver = implicit . cuda . CuLeastSquaresSolver ( self . factors ) log . debug ( "Running %i ALS iterations" , self . iterations ) with tqdm . tqdm ( total = self . iterations , disable = not show_progress ) as progress : for iteration in range ( self . iterations ) : s = time . time ( ) solver . least_squares ( Cui , X , Y , self . regularization , self . cg_steps ) progress . update ( .5 ) solver . least_squares ( Ciu , Y , X , self . regularization , self . cg_steps ) progress . update ( .5 ) if self . fit_callback : self . fit_callback ( iteration , time . time ( ) - s ) if self . calculate_training_loss : loss = solver . calculate_loss ( Cui , X , Y , self . regularization ) progress . set_postfix ( { "loss" : loss } ) if self . calculate_training_loss : log . info ( "Final training loss %.4f" , loss ) X . to_host ( self . user_factors ) Y . to_host ( self . item_factors )