def fit(self,train,X,validation=None):
        num_rows,num_cols = train.shape
        decomposition = WARP2Decomposition(num_rows,num_cols,X,self.d)
        updates = WARP2BatchUpdate(self.batch_size,X.shape[1],self.d)
        self.precompute_warp_loss(num_cols)

        self._fit(decomposition,updates,train,validation)

        self.U_ = decomposition.U
        self.V_ = decomposition.V
        self.W_ = decomposition.W

        return self
Learn embedding from training set. A suitable dot product of the
dataset/ETHPy150Open Mendeley/mrec/mrec/mf/model/warp2.py/WARP2.fit