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_update_func(self):
      @tfe.local_computation(player_name=self.player.name)
      def update_func(*grads):
          weights = self.model.weights
          grads = [tf.cast(grad, tf.float32) for grad in grads]
          with tf.name_scope("update_model"):
              for weight, grad in zip(weights, grads):
                  weight.assign(
                      weight.read_value() - grad * self.LEARNING_RATE
                  )
  
      self.update_func = update_func
  
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 3 for calling the ModelOwner obj's underlying member method code with example usage: obj._build_update_func() without return types