code: def process_state_batch(self, batch):
      # We could perform this processing step in `process_observation`. In this case, however,
      # we would need to store a `float32` array instead, which is 4x more memory intensive than
      # an `uint8` array. This matters if we store 1M observations.
      processed_batch = batch.astype("float32") / 255.0
      return processed_batch
  
file_path: keras-rl/examples/dqn_atari.py
imports: from __future__ import division
  import argparse
  from PIL import Image
  import numpy
  import gym
  from keras.models import Sequential
  from keras.layers import Dense, Activation, Flatten, Convolution2D, Permute
  from keras.optimizers import Adam
  import keras.backend
  from rl.agents.dqn import DQNAgent
  from rl.policy import LinearAnnealedPolicy, BoltzmannQPolicy, EpsGreedyQPolicy
  from rl.memory import SequentialMemory
  from rl.core import Processor
  from rl.callbacks import FileLogger, ModelIntervalCheckpoint
label_desc: Use image node_id 2 for calling the AtariProcessor obj's underlying member method code with example usage: obj.process_state_batch(batch) and returns: processed_batch