code: def test_estimator_graph(self):
      import zoo.orca.data.pandas
  
      tf.reset_default_graph()
  
      model = SimpleModel()
      file_path = os.path.join(resource_path, "orca/learn/ncf.csv")
      data_shard = zoo.orca.data.pandas.read_csv(file_path)
  
      def transform(df):
          result = {
              "x": (df["user"].to_numpy(), df["item"].to_numpy()),
              "y": df["label"].to_numpy(),
          }
          return result
  
      data_shard = data_shard.transform_shard(transform)
  
      est = Estimator.from_graph(
          inputs=[model.user, model.item],
          labels=[model.label],
          outputs=[model.logits],
          loss=model.loss,
          optimizer=tf.train.AdamOptimizer(),
          metrics={"loss": model.loss},
      )
      est.fit(
          data=data_shard,
          batch_size=8,
          epochs=10,
          validation_data=data_shard,
      )
  
      data_shard = zoo.orca.data.pandas.read_csv(file_path)
  
      def transform(df):
          result = {
              "x": (df["user"].to_numpy(), df["item"].to_numpy()),
          }
          return result
  
      data_shard = data_shard.transform_shard(transform)
      predictions = est.predict(data_shard).collect()
      assert "prediction" in predictions[0]
      print(predictions)
  
imports: import os
  import shutil
  import tempfile
  from unittest import TestCase
  import numpy
  import tensorflow
  from zoo.orca.learn.trigger import SeveralIteration
  from pyspark.sql.context import SQLContext
  import zoo.orca.data.pandas
  from zoo import init_nncontext
  from zoo.orca import OrcaContext
  from zoo.orca.data.tf.data import Dataset
  from zoo.orca.learn.tf.estimator import Estimator
  from zoo.util.tf import save_tf_checkpoint, load_tf_checkpoint, get_checkpoint_state
label_desc: Use image node_id 2 for calling the TestEstimatorForGraph obj's underlying member method code with example usage: obj.test_estimator_graph() and returns: result, result