class_docstr: Full encode-process-decode model.
  
  The model we explore includes three components:
  - An "Encoder" graph net, which independently encodes the edge, node, and
    global attributes (does not compute relations etc.).
  - A "Core" graph net, which performs N rounds of processing (message-passing)
    steps. The input to the Core is the concatenation of the Encoder's output
    and the previous output of the Core (labeled "Hidden(t)" below, where "t" is
    the processing step).
  - A "Decoder" graph net, which independently decodes the edge, node, and
    global attributes (does not compute relations etc.), on each message-passing
    step.
  
                      Hidden(t)   Hidden(t+1)
                         |            ^
            *---------*  |  *------*  |  *---------*
            |         |  |  |      |  |  |         |
  Input --->| Encoder |  *->| Core |--*->| Decoder |---> Output(t)
            |         |---->|      |     |         |
            *---------*     *------*     *---------*
class_docstr_tok: ["Full","encode-process-decode","model",".","The","model","we","explore","includes","three","components",":","-","An","``","Encoder","''","graph","net",",","which","independently","encodes","the","edge",",","node",",","and","global","attributes","(","does","not","compute","relations","etc.",")",".","-","A","``","Core","''","graph","net",",","which","performs","N","rounds","of","processing","(","message-passing",")","steps",".","The","input","to","the","Core","is","the","concatenation","of","the","Encoder","'s","output","and","the","previous","output","of","the","Core","(","labeled","``","Hidden","(","t",")","''","below",",","where","``","t","''","is","the","processing","step",")",".","-","A","``","Decoder","''","graph","net",",","which","independently","decodes","the","edge",",","node",",","and","global","attributes","(","does","not","compute","relations","etc",".",")",",","on","each","message-passing","step",".","Hidden","(","t",")","Hidden","(","t+1",")","|","^","*","--","--","--","--","-","*","|","*","--","--","--","*","|","*","--","--","--","--","-","*","|","|","|","|","|","|","|","|","Input","--","-",">","|","Encoder","|","*","-",">","|","Core","|","--","*","-",">","|","Decoder","|","--","-",">","Output","(","t",")","|","|","--","--",">","|","|","|","|","*","--","--","--","--","-","*","*","--","--","--","*","*","--","--","--","--","-","*"]
code: def __call__(self, input_op, num_processing_steps):
      latent = self._encoder(input_op)
      latent0 = latent
      output_ops = []
      for _ in range(num_processing_steps):
          core_input = utils_tf.concat([latent0, latent], axis=1)
          latent = self._core(core_input)
          decoded_op = self._decoder(latent)
          output_ops.append(self._output_transform(decoded_op))
      return output_ops
  
file_path: graph_nets/graph_nets/demos_tf2/models.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from graph_nets import modules
  from graph_nets import utils_tf
  from six.moves import range
  import sonnet
label_desc: Use image node_id 2 for calling the EncodeProcessDecode obj's underlying member method code with example usage: obj.__call__(input_op, num_processing_steps) and returns: output_ops