class_docstr: Contains methods meant to be executed by a data owner.
  
  Args:
    player_name: `str`, name of the `tfe.player.Player`
                 representing the data owner
    model_name: `str`, name of the model to be trained
    data_name: `str`, name of dataset that model trained on
    data_slice: specify which part of this dataset to use
code: def __init__(self, player_name, model_name, data_name, data_slice):
      self.player = tfe.get_config().get_player(player_name)
      self.model_name = model_name
      self.data_name = data_name
      self._build_data(data_slice)
      self._build_model()
      self._build_gradient_func()
      self.iterations = self.train_dataset.iterations
  
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 1 to create a new DataOwner object  with example: obj = DataOwner(player_name, model_name, data_name, data_slice)