code: def test_nn_builder_with_training_features(self):
      input_features = [("input", datatypes.Array(3))]
      output_features = [("output", datatypes.Array(3))]
      builder = NeuralNetworkBuilder(input_features, output_features)
  
      W1 = _np.random.uniform(-0.5, 0.5, (3, 3))
      W2 = _np.random.uniform(-0.5, 0.5, (3, 3))
      builder.add_inner_product(
          name="ip1",
          W=W1,
          b=None,
          input_channels=3,
          output_channels=3,
          has_bias=False,
          input_name="input",
          output_name="hidden",
      )
      builder.add_inner_product(
          name="ip2",
          W=W2,
          b=None,
          input_channels=3,
          output_channels=3,
          has_bias=False,
          input_name="hidden",
          output_name="output",
      )
  
      builder.make_updatable(
          ["ip1", "ip2"]
      )  # or a dict for weightParams
  
      builder.set_mean_squared_error_loss(
          name="mse", input_feature=("output", datatypes.Array(3))
      )
  
      builder.set_adam_optimizer(
          AdamParams(
              lr=1e-2, batch=10, beta1=0.9, beta2=0.999, eps=1e-8
          )
      )
      builder.set_epochs(20, allowed_set=[10, 20, 30])
  
      model_path = os.path.join(
          self.model_dir, "updatable_creation.mlmodel"
      )
      print(model_path)
      save_spec(builder.spec, model_path)
  
      mlmodel = MLModel(model_path)
      self.assertTrue(mlmodel is not None)
      spec = mlmodel.get_spec()
      self.assertEqual(spec.description.trainingInput[0].name, "input")
      self.assertEqual(
          spec.description.trainingInput[0].type.WhichOneof("Type"),
          "multiArrayType",
      )
      self.assertEqual(
          spec.description.trainingInput[1].name, "output_true"
      )
      self.assertEqual(
          spec.description.trainingInput[1].type.WhichOneof("Type"),
          "multiArrayType",
      )
  
imports: import os, shutil
  import numpy
  import coremltools.models.datatypes
  import unittest
  import pytest
  import tempfile
  from coremltools.models.utils import save_spec
  from coremltools.models import MLModel
  from coremltools.models.neural_network import NeuralNetworkBuilder, AdamParams, SgdParams
  from coremltools.models.pipeline import PipelineRegressor, PipelineClassifier
label_desc: Use image node_id 12 for calling the MLModelUpdatableTest obj's underlying member method code with example usage: obj.test_nn_builder_with_training_features() without return types