code: def call(self, inputs, step_type=None, network_state=()):
      del step_type
      inputs = tf.cast(inputs, tf.float32)
      value = self._value_layer(inputs)
      log_variance = self._log_variance_layer(inputs)
      predictions = collections.namedtuple(
          "QBanditNetworkResult", ("q_value_logits", "log_variance")
      )
      predictions = predictions(value, log_variance)
  
      return predictions, network_state
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import collections
  from absl.testing import parameterized
  import numpy
  import tensorflow
  from tf_agents.bandits.networks import global_and_arm_feature_network
  from tf_agents.bandits.networks import heteroscedastic_q_network
  from tf_agents.bandits.policies import boltzmann_reward_prediction_policy
  from tf_agents.bandits.policies import constraints
  from tf_agents.bandits.policies import falcon_reward_prediction_policy
  from tf_agents.bandits.policies import greedy_reward_prediction_policy
  from tf_agents.bandits.specs import utils
  from tf_agents.networks import network
  from tf_agents.specs import array_spec
  from tf_agents.specs import tensor_spec
  from tf_agents.trajectories import time_step
  from tf_agents.utils import test_utils
  from tensorflow.python.framework import test_util
label_desc: Use image node_id 2 for calling the HeteroscedasticDummyNet obj's underlying member method code with example usage: obj.call(inputs, step_type, network_state) and returns: predictions,  network_state