class_docstr: An image encoder mapping 64x64 RGB images via 4 CNN layers into a 1D space.
docstr: Performs a forward pass through the CNN Atari encoder.
  
  Args:
      inputs: The image inputs of shape (B, 64, 64, 3).
docstr_tok: ["Performs","a","forward","pass","through","the","CNN","Atari","encoder",".","Args",":","inputs",":","The","image","inputs","of","shape","(","B",",","64",",","64",",","3",")","."]
code: def call(self, inputs):
      """Performs a forward pass through the CNN Atari encoder.
  
      Args:
          inputs: The image inputs of shape (B, 64, 64, 3).
      """
      # [B, h, w] -> grayscale.
      if len(inputs.shape) == 3:
          inputs = tf.expand_dims(inputs, -1)
      out = inputs
      for conv_2d, layer_norm in zip(
          self.conv_layers, self.layer_normalizations
      ):
          out = tf.nn.silu(layer_norm(inputs=conv_2d(out)))
      assert out.shape[1] == 4 and out.shape[2] == 4
      return self.flatten_layer(out)
  
imports: from typing import Optional
  from ray.rllib.algorithms.dreamerv3.utils import get_cnn_multiplier
  from ray.rllib.utils.framework import try_import_tf
label_desc: Use image node_id 2 for calling the CNNAtari obj's underlying member method code with example usage: obj.call(inputs) and returns: self