docstr: Run a forward pass of the network using the given input
  :param inputs: The input dictionary for the network. Key is name of the embedder.
  :param outputs: list of outputs to return. Return all outputs if unspecified (currently not supported)
  :param squeeze_output: call squeeze_list on output if True
  :param initial_feed_dict: a dictionary of extra inputs for forward pass (currently not supported)
  :return: The network output
  
  WARNING: must only call once per state since each call is assumed by LSTM to be a new time step.
docstr_tok: ["Run","a","forward","pass","of","the","network","using","the","given","input",":","param","inputs",":","The","input","dictionary","for","the","network",".","Key","is","name","of","the","embedder",".",":","param","outputs",":","list","of","outputs","to","return",".","Return","all","outputs","if","unspecified","(","currently","not","supported",")",":","param","squeeze_output",":","call","squeeze_list","on","output","if","True",":","param","initial_feed_dict",":","a","dictionary","of","extra","inputs","for","forward","pass","(","currently","not","supported",")",":","return",":","The","network","output","WARNING",":","must","only","call","once","per","state","since","each","call","is","assumed","by","LSTM","to","be","a","new","time","step","."]
code: def predict(
      self,
      inputs: Dict[str, np.ndarray],
      outputs: List[str] = None,
      squeeze_output: bool = True,
      initial_feed_dict: Dict[str, np.ndarray] = None,
  ) -> Tuple[np.ndarray, ...]:
      """
      Run a forward pass of the network using the given input
      :param inputs: The input dictionary for the network. Key is name of the embedder.
      :param outputs: list of outputs to return. Return all outputs if unspecified (currently not supported)
      :param squeeze_output: call squeeze_list on output if True
      :param initial_feed_dict: a dictionary of extra inputs for forward pass (currently not supported)
      :return: The network output
  
      WARNING: must only call once per state since each call is assumed by LSTM to be a new time step.
      """
      assert initial_feed_dict is None, "initial_feed_dict must be None"
      assert outputs is None, "outputs must be None"
  
      output = self._predict(inputs)
      output = list(o.asnumpy() for o in output)
      if squeeze_output:
          output = squeeze_list(output)
      return output
  
imports: import copy
  from typing import Any, Dict, Generator, List, Tuple, Union
  import numpy
  import mxnet
  from mxnet import autograd, gluon, nd
  from mxnet.ndarray import NDArray
  from rl_coach.architectures.architecture import Architecture
  from rl_coach.architectures.mxnet_components.heads.head import LOSS_OUT_TYPE_LOSS, LOSS_OUT_TYPE_REGULARIZATION
  from rl_coach.architectures.mxnet_components import utils
  from rl_coach.architectures.mxnet_components.savers import ParameterDictSaver, OnnxSaver
  from rl_coach.base_parameters import AgentParameters
  from rl_coach.logger import screen
  from rl_coach.saver import SaverCollection
  from rl_coach.spaces import SpacesDefinition
  from rl_coach.utils import force_list, squeeze_list
label_desc: Use image node_id 14 for calling the MxnetArchitecture obj's underlying member method code with example usage: obj.predict(inputs, outputs, squeeze_output, initial_feed_dict) and returns: output