code: def _check_init(A, shape, whom):
      A = check_array(A)
      if np.shape(A) != shape:
          raise ValueError(
              "Array with wrong shape passed to %s. Expected %s, "
              "but got %s " % (whom, shape, np.shape(A))
          )
      check_non_negative(A, whom)
      if np.max(A) == 0:
          raise ValueError(
              "Array passed to %s is full of zeros." % whom
          )
  
imports: from __future__ import division, print_function
  from math import sqrt
  import warnings
  import numbers
  import numpy
  import scipy.sparse
  from ..base import BaseEstimator, TransformerMixin
  from ..utils import check_random_state, check_array
  from ..utils.extmath import randomized_svd, safe_sparse_dot, squared_norm
  from ..utils.extmath import fast_dot
  from ..utils.validation import check_is_fitted, check_non_negative
  from ..utils import deprecated
  from ..exceptions import ConvergenceWarning
  from .cdnmf_fast import _update_cdnmf_fast
label_desc: Use image node_id 5 for calling a global function with example usage: _check_init(A, shape, whom) without return types