code: def backend_check_membership_probabilities(
      attack, dataset, attack_train_ratio
  ):
      (x_train, y_train), (x_test, y_test) = dataset
      attack_train_size = int(len(x_train) * attack_train_ratio)
      attack_test_size = int(len(x_test) * attack_train_ratio)
  
      # train attack model using only attack_train_ratio of data
      attack.fit(
          x_train[:attack_train_size],
          y_train[:attack_train_size],
          x_test[:attack_test_size],
          y_test[:attack_test_size],
      )
  
      # infer attacked feature on remainder of data
      inferred_train_pred = attack.infer(
          x_train[attack_train_size:], y_train[attack_train_size:]
      )
      inferred_train_prob = attack.infer(
          x_train[attack_train_size:],
          y_train[attack_train_size:],
          probabilities=True,
      )
  
      # check accuracy
      backend_check_probabilities(
          inferred_train_pred, inferred_train_prob
      )
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  import pytest
  import numpy
  import keras
  from art.attacks.inference.membership_inference.black_box import MembershipInferenceBlackBox
  from art.estimators.classification.keras import KerasClassifier
  from art.estimators.estimator import BaseEstimator
  from art.estimators.classification.classifier import ClassifierMixin
  from art.estimators.regression import ScikitlearnRegressor, RegressorMixin
  from tests.attacks.utils import backend_test_classifier_type_check_fail
  from tests.utils import ARTTestException
label_desc: Use image node_id 24 for calling a global function with example usage: backend_check_membership_probabilities(attack, dataset, attack_train_ratio) without return types