class_docstr: A block containing multiple subsequent strided convolution layers.
  
  One layer consists of a single strided convolution followed by an activation function.
  The block expects the input tensors to have the from (batch-dim, channel-dim, row-dim, column-dim).
  
  :param in_keys: One key identifying the input tensors.
  :param out_keys: One key identifying the output tensors.
  :param in_shapes: List of input shapes.
  :param hidden_channels: List containing the number of hidden channels for hidden layers.
  :param hidden_kernels: List containing the size of the convolving kernels.
  :param non_lin: The non-linearity to apply after each layer.
  :param convolution_dimension: Dimension of the convolution to use [1, 2, 3]
  :param hidden_strides: List containing the strides of the convolutions.
  :param hidden_dilations: List containing the spacing between kernel elements.
  :param hidden_padding: List containing the padding added to both sides of the input
  :param padding_mode: 'zeros', 'reflect', 'replicate' or 'circular'.
class_docstr_tok: ["A","block","containing","multiple","subsequent","strided","convolution","layers",".","One","layer","consists","of","a","single","strided","convolution","followed","by","an","activation","function",".","The","block","expects","the","input","tensors","to","have","the","from","(","batch-dim",",","channel-dim",",","row-dim",",","column-dim",")",".",":","param","in_keys",":","One","key","identifying","the","input","tensors",".",":","param","out_keys",":","One","key","identifying","the","output","tensors",".",":","param","in_shapes",":","List","of","input","shapes",".",":","param","hidden_channels",":","List","containing","the","number","of","hidden","channels","for","hidden","layers",".",":","param","hidden_kernels",":","List","containing","the","size","of","the","convolving","kernels",".",":","param","non_lin",":","The","non-linearity","to","apply","after","each","layer",".",":","param","convolution_dimension",":","Dimension","of","the","convolution","to","use","[","1",",","2",",","3","]",":","param","hidden_strides",":","List","containing","the","strides","of","the","convolutions",".",":","param","hidden_dilations",":","List","containing","the","spacing","between","kernel","elements",".",":","param","hidden_padding",":","List","containing","the","padding","added","to","both","sides","of","the","input",":","param","padding_mode",":","'zeros","'",",","'reflect","'",",","'replicate","'","or","'circular","'","."]
code: def __repr__(self):
      txt = f"{self.__class__.__name__.replace('Conv', f'-{self.convolutional_dim}D-Conv')}({self.non_lin.__name__})"
      txt += f"\n\tFeature Maps: {self.input_channels}->" + "->".join(
          [f"{h}" for h in self.hidden_channels]
      )
      txt += f"\n\tKernel Sizes : " + "->".join(
          [f"{h}" for h in self.hidden_kernels]
      )
      num_layers = len(self.hidden_kernels)
      if self.hidden_strides != [1 for _ in range(num_layers)]:
          txt += f"\n\tStrides: " + "->".join(
              [f"{h}" for h in self.hidden_strides]
          )
      if self.hidden_padding != [1 for _ in range(num_layers)]:
          txt += f"\n\tPadding: " + "->".join(
              [f"{h}" for h in self.hidden_padding]
          )
      if self.hidden_dilations != [1 for _ in range(num_layers)]:
          txt += f"\n\tDilation: " + "->".join(
              [f"{h}" for h in self.hidden_dilations]
          )
      if self.padding_mode != "zeros":
          txt += f"\n\tPadding Mode: {self.padding_mode}"
      txt += f"\n\tOut Shapes: {self.out_shapes()}"
      return txt
  
file_path: maze/maze/perception/blocks/feed_forward/strided_conv.py
imports: from collections import OrderedDict
  from typing import Union, List, Sequence, Dict, Tuple, Optional
  import torch
  from torch import nn
  from maze.core.annotations import override
  from maze.core.utils.factory import Factory
  from maze.perception.blocks.shape_normalization import ShapeNormalizationBlock
  from torch.nn import ZeroPad2d
label_desc: Use image node_id 4 for calling the StridedConvolutionBlock obj's underlying member method code with example usage: obj.__repr__() and returns: txt