class_docstr: Contains code meant to be executed by some `ModelOwner` Player.
  
  Args:
    player_name: `str`, name of the `tfe.player.Player`, representing the model owner.
    model_name: `str`, name of the model to be trained
    data_name: `str`, name of dataset that model trained on
code: def _build_model(self):
      with tf.device(self.player.device_name):
          self.model = globals()[self.model_name](
              self.test_dataset.batch_shape,
              self.test_dataset.num_classes,
              private=False,
          )
          if self.test_dataset.num_classes > 1:
              self.loss = tf.keras.losses.CategoricalCrossentropy(
                  from_logits=True
              )
              self.metrics = lambda y_true, y_pred: tf.reduce_mean(
                  tf.keras.metrics.categorical_accuracy(y_true, y_pred)
              )
          else:
              self.loss = tf.keras.losses.BinaryCrossentropy(
                  from_logits=True
              )
              self.metrics = lambda y_true, y_pred: tf.reduce_mean(
                  tf.keras.metrics.binary_accuracy(y_true, y_pred)
              )
          self.model.compile(loss=self.loss)
  
imports: import argparse
  import sys
  import tensorflow
  import tf_encrypted
  from tf_encrypted.keras.datasets import *
  from tf_encrypted.protocol import ABY3
  from tf_encrypted.protocol import Pond
  from tf_encrypted.protocol import SecureNN
label_desc: Use image node_id 2 for calling the ModelOwner obj's underlying member method code with example usage: obj._build_model() without return types