class_docstr: CategoricalQNetwork subclass that divides observations by 255.
class_docstr_tok: ["CategoricalQNetwork","subclass","that","divides","observations","by","255","."]
code: def call(self, observation, step_type=None, network_state=()):
      state = tf.cast(observation, tf.float32)
      # We divide the grayscale pixel values by 255 here rather than storing
      # normalized values beause uint8s are 4x cheaper to store than float32s.
      # TODO(b/129805821): handle the division by 255 for train_eval_atari.py in
      # a preprocessing layer instead.
      state = state / 255
      return self._categorical_q_network(
          state, step_type=step_type, network_state=network_state
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import os
  from absl import app
  from absl import flags
  from absl import logging
  import gin
  import numpy
  import tensorflow
  from tf_agents.agents.categorical_dqn import categorical_dqn_agent
  from tf_agents.environments import batched_py_environment
  from tf_agents.environments import suite_atari
  from tf_agents.eval import metric_utils
  from tf_agents.metrics import py_metric
  from tf_agents.metrics import py_metrics
  from tf_agents.networks import categorical_q_network
  from tf_agents.networks import network
  from tf_agents.policies import epsilon_greedy_policy
  from tf_agents.policies import py_tf_policy
  from tf_agents.policies import random_py_policy
  from tf_agents.replay_buffers import py_hashed_replay_buffer
  from tf_agents.specs import tensor_spec
  from tf_agents.trajectories import policy_step
  from tf_agents.trajectories import time_step
  from tf_agents.trajectories import trajectory
  from tf_agents.utils import common
  from tf_agents.utils import timer
label_desc: Use image node_id 3 for calling the AtariCategoricalQNetwork obj's underlying member method code with example usage: obj.call(observation, step_type, network_state) and returns: self