class_docstr: ResNetTorso for visual inputs, inspired by the IMPALA paper.
class_docstr_tok: ["ResNetTorso","for","visual","inputs",",","inspired","by","the","IMPALA","paper","."]
code: def __call__(self, inputs: jnp.ndarray) -> jnp.ndarray:
      output = inputs
      channels_blocks_strategies = zip(
          self._channels_per_group,
          self._blocks_per_group,
          self._downsampling_strategies,
      )
  
      for i, (num_channels, num_blocks, strategy) in enumerate(
          channels_blocks_strategies
      ):
          output = make_downsampling_layer(strategy, num_channels)(
              output
          )
  
          for j in range(num_blocks):
              output = ResidualBlock(
                  make_inner_op=functools.partial(
                      hk.Conv2D,
                      output_channels=num_channels,
                      kernel_shape=3,
                  ),
                  use_layer_norm=self._use_layer_norm,
                  name=f"residual_{i}_{j}",
              )(output)
  
      return output
  
file_path: acme/acme/jax/networks/resnet.py
imports: import enum
  import functools
  from typing import Callable, Sequence, Union
  import haiku
  import jax
  import jax.numpy
label_desc: Use image node_id 2 for calling the ResNetTorso obj's underlying member method code with example usage: obj.__call__(inputs) and returns: output