code: def test_estimate_latent_converge():
      py, nm, inv = count.estimate_latent(
          confident_joint=data["cj"],
          labels=data["labels"],
          converge_latent_estimates=True,
      )
  
      py2, nm2, inv2 = count.estimate_latent(
          confident_joint=data["cj"],
          labels=data["labels"],
          converge_latent_estimates=False,
      )
      # Check results are similar, but not the same.
      assert np.any(inv != inv2)
      assert np.any(py != py2)
      assert np.all(abs(py - py2) < 0.1)
      assert np.all(abs(nm - nm2) < 0.1)
      assert np.all(abs(inv - inv2) < 0.1)
  
imports: import cleanlab.multilabel_classification.dataset
  from cleanlab import count, filter
  from cleanlab.count import get_confident_thresholds, estimate_py_and_noise_matrices_from_probabilities
  from cleanlab.internal.latent_algebra import compute_inv_noise_matrix
  from cleanlab.benchmarking.noise_generation import generate_noise_matrix_from_trace
  from cleanlab.benchmarking.noise_generation import generate_noisy_labels
  from cleanlab.internal.util import value_counts
  from cleanlab.internal.multilabel_utils import int2onehot
  from cleanlab.experimental.label_issues_batched import find_label_issues_batched
  import numpy
  import scipy
  import pytest
  from sklearn.multioutput import MultiOutputClassifier
  from sklearn.linear_model import LogisticRegression
  from sklearn.model_selection import cross_val_predict
  from tempfile import mkdtemp
  import os.path
label_desc: Use image node_id 14 for calling a global function with example usage: test_estimate_latent_converge() without return types