class_docstr: An implementation of `"DANMF" <https://smartyfh.com/Documents/18DANMF.pdf>`_
  from the CIKM '18 paper "Deep Autoencoder-like Nonnegative Matrix Factorization for
  Community Detection". The procedure uses telescopic non-negative matrix factorization
  in order to learn a cluster membership distribution over nodes. The method can be
  used in an overlapping and non-overlapping way.
  
  Args:
      layers (list): Autoencoder layer sizes in a list of integers. Default [32, 8].
      pre_iterations (int): Number of pre-training epochs. Default 100.
      iterations (int): Number of training epochs. Default 100.
      seed (int): Random seed for weight initializations. Default 42.
      lamb (float): Regularization parameter. Default 0.01.
      seed (int): Random seed value. Default is 42.
class_docstr_tok: ["An","implementation","of","`","``","DANMF","''","<","https",":","\/\/smartyfh.com\/Documents\/18DANMF.pdf",">","`","_","from","the","CIKM","'18","paper","``","Deep","Autoencoder-like","Nonnegative","Matrix","Factorization","for","Community","Detection","''",".","The","procedure","uses","telescopic","non-negative","matrix","factorization","in","order","to","learn","a","cluster","membership","distribution","over","nodes",".","The","method","can","be","used","in","an","overlapping","and","non-overlapping","way",".","Args",":","layers","(","list",")",":","Autoencoder","layer","sizes","in","a","list","of","integers",".","Default","[","32",",","8","]",".","pre_iterations","(","int",")",":","Number","of","pre-training","epochs",".","Default","100.","iterations","(","int",")",":","Number","of","training","epochs",".","Default","100.","seed","(","int",")",":","Random","seed","for","weight","initializations",".","Default","42.","lamb","(","float",")",":","Regularization","parameter",".","Default","0.01.","seed","(","int",")",":","Random","seed","value",".","Default","is","42","."]
docstr: Updating right hand factors.
  
  Arg types:
      * **i** *(int)* - The layer index.
docstr_tok: ["Updating","right","hand","factors",".","Arg","types",":","*","*","*","i","*","*","*","(","int",")","*","-","The","layer","index","."]
code: def _update_V(self, i):
      """
      Updating right hand factors.
  
      Arg types:
          * **i** *(int)* - The layer index.
      """
      if i < self._p - 1:
          Vu = 2 * self._A.dot(self._P).T
          Vd = self._P.T.dot(self._P).dot(self._V_s[i]) + self._V_s[i]
          self._V_s[i] = self._V_s[i] * Vu / np.maximum(Vd, 10**-10)
      else:
          Vu = (
              2 * self._A.dot(self._P).T
              + (self.lamb * self._A.dot(self._V_s[i].T)).T
          )
          Vd = self._P.T.dot(self._P).dot(self._V_s[i])
          Vd = (
              Vd
              + self._V_s[i]
              + (self.lamb * self._D.dot(self._V_s[i].T)).T
          )
          self._V_s[i] = self._V_s[i] * Vu / np.maximum(Vd, 10**-10)
  
imports: import numpy
  import networkx
  from typing import List, Dict
  from sklearn.decomposition import NMF
  from karateclub.estimator import Estimator
label_desc: Use image node_id 9 for calling the DANMF obj's underlying member method code with example usage: obj._update_V(i) without return types