docs: def generate_face(shape=None, face_r=1.0, smile_r1=0.5, smile_r2=0.7, eye_r=0.2):
      """
      Create 2D or 3D binar data with smile face.
  
      :param shape: 2D or 3D shape of data
      :param face_r:
      :param smile_r1:
      :param smile_r2:
      :param eye_r:
      :return: binar ndarray
      """
      # TODO add axis (ax=0)
      if shape is None:
          shape = [32, 32]
      nd = len(shape)
      if nd == 2:
          sh2 = shape
      else:
          sh2 = shape[1:]
      fc2 = _get_face2(
          sh2, face_r=face_r, smile_r1=smile_r1, smile_r2=smile_r2, eye_r=eye_r
      )
  
      if nd == 2:
          return fc2
      else:
          fc3 = np.zeros(shape)
          for i in range(fc3.shape[0]):
              fc3[i, :, :] = fc2
          return fc3