code: def test_create_attacker_data_loss_and_logits(self):
      attack_input = AttackInputData(
          logits_train=np.array([[1, 2], [5, 6], [8, 9]]),
          logits_test=np.array([[10, 11], [14, 15]]),
          loss_train=np.array([3, 7, 10]),
          loss_test=np.array([12, 16]),
      )
      attacker_data = models.create_attacker_data(
          attack_input, balance=False
      )
      self.assertLen(attacker_data.features_all, 5)
      self.assertLen(attacker_data.fold_indices, 5)
      self.assertEmpty(attacker_data.left_out_indices)
  
file_path: privacy/tensorflow_privacy/privacy/privacy_tests/membership_inference_attack/models_test.py
imports: from absl.testing import absltest
  from absl.testing import parameterized
  import numpy
  from tensorflow_privacy.privacy.privacy_tests.membership_inference_attack import models
  from tensorflow_privacy.privacy.privacy_tests.membership_inference_attack.data_structures import AttackInputData
  from tensorflow_privacy.privacy.privacy_tests.membership_inference_attack.data_structures import AttackType
label_desc: Use image node_id 4 for calling the TrainedAttackerTest obj's underlying member method code with example usage: obj.test_create_attacker_data_loss_and_logits() without return types