class_docstr: The class :class:`LayerNode` class represents a conceptional node for a layer.
  
  LayerNode is used for building static model and it is actually a light weighted
  wrapper over Layer. Specifically, it is used for building static computational graph
  (see _construct_graph() in tl.models.Model). In static model, each layer relates to
  one or more LayerNode, and the connection relationship between layers is built upon
  LayerNode. In addition, LayerNode eases layer reuse and weights sharing.
  
  Parameters
  ----------
  layer : tl.layers.Layer
      A tl layer that wants to create a node.
  node_index : int
      Index of this node in layer._nodes.
  in_nodes ：a list of LayerNode
      Father nodes to this node.
  in_tensors : a list of tensors
      Input tensors to this node.
  out_tensors : a list of tensors
      Output tensors to this node.
  in_tensor_idxes : a list of int
      Indexes of each input tensor in its corresponding node's out_tensors.
  
  Methods
  ---------
  __init__()
      Initializing the LayerNode.
  __call__()
      (1) Forwarding through the layer. (2) Update its input/output tensors.
class_docstr_tok: ["The","class",":","class",":","`","LayerNode","`","class","represents","a","conceptional","node","for","a","layer",".","LayerNode","is","used","for","building","static","model","and","it","is","actually","a","light","weighted","wrapper","over","Layer",".","Specifically",",","it","is","used","for","building","static","computational","graph","(","see","_construct_graph","(",")","in","tl.models.Model",")",".","In","static","model",",","each","layer","relates","to","one","or","more","LayerNode",",","and","the","connection","relationship","between","layers","is","built","upon","LayerNode",".","In","addition",",","LayerNode","eases","layer","reuse","and","weights","sharing",".","Parameters","--","--","--","--","--","layer",":","tl.layers.Layer","A","tl","layer","that","wants","to","create","a","node",".","node_index",":","int","Index","of","this","node","in","layer._nodes",".","in_nodes","\uff1aa","list","of","LayerNode","Father","nodes","to","this","node",".","in_tensors",":","a","list","of","tensors","Input","tensors","to","this","node",".","out_tensors",":","a","list","of","tensors","Output","tensors","to","this","node",".","in_tensor_idxes",":","a","list","of","int","Indexes","of","each","input","tensor","in","its","corresponding","node","'s","out_tensors",".","Methods","--","--","--","--","-","__init__","(",")","Initializing","the","LayerNode",".","__call__","(",")","(","1",")","Forwarding","through","the","layer",".","(","2",")","Update","its","input\/output","tensors","."]
docstr: (1) Forwarding through the layer. (2) Update its input/output tensors.
code: def __call__(self, inputs, **kwargs):
      """(1) Forwarding through the layer. (2) Update its input/output tensors."""
      outputs = self.layer.forward(inputs, **kwargs)
      self.in_tensors = tolist(inputs)
      self.out_tensors = tolist(outputs)
      return self.out_tensors
  
imports: import inspect
  from abc import abstractmethod
  import tensorflow
  import tensorlayer
  from tensorlayer import logging
  from tensorlayer.decorators import deprecated_alias, private_method, protected_method
  from tensorlayer.files import utils
  from tensorlayer.layers.utils import get_variable_with_initializer, list_remove_repeat
label_desc: Use image node_id 2 for calling the LayerNode obj's underlying member method code with example usage: obj.__call__(inputs) and returns: self