class_docstr: Convolutional network designed for Cifar10.
  
  Approximately equivalent to "VGG, minus max pooling, plus BatchNorm". For best
  results the input data should be scaled to be between -1 and 1 when using the
  standard initializers.
code: def __init__(
      self,
      num_classes: int = 10,
      w_init: Optional[initializers.Initializer] = None,
      b_init: Optional[initializers.Initializer] = None,
      data_format: str = "NHWC",
      output_channels: Sequence[int] = (
          64,
          64,
          128,
          128,
          128,
          256,
          256,
          256,
          512,
          512,
          512,
      ),
      strides: Sequence[int] = (1, 1, 2, 1, 1, 2, 1, 1, 2, 1, 1),
      name: Optional[str] = None,
  ):
      super().__init__(name=name)
      self._num_classes = num_classes
      self._data_format = data_format
      if len(strides) != len(output_channels):
          raise ValueError(
              "The length of `output_channels` and `strides` must be equal."
          )
      self._output_channels = output_channels
      self._strides = strides
      self._num_layers = len(self._output_channels)
      self._kernel_shapes = [
          [3, 3]
      ] * self._num_layers  # All kernels are 3x3.
      self._w_init = w_init
      self._b_init = b_init
  
      self._conv_modules = list(
          conv.Conv2D(  # pylint: disable=g-complex-comprehension
              output_channels=self._output_channels[i],
              kernel_shape=self._kernel_shapes[i],
              stride=self._strides[i],
              w_init=self._w_init,
              b_init=self._b_init,
              data_format=self._data_format,
              name="conv_2d_{}".format(i),
          )
          for i in range(self._num_layers)
      )
      self._bn_modules = list(
          batch_norm.BatchNorm(  # pylint: disable=g-complex-comprehension
              create_offset=True,
              create_scale=False,
              decay_rate=0.999,
              data_format=self._data_format,
              name="batch_norm_{}".format(i),
          )
          for i in range(self._num_layers)
      )
      self._logits_module = linear.Linear(
          self._num_classes,
          w_init=self._w_init,
          b_init=self._b_init,
          name="logits",
      )
  
file_path: sonnet/sonnet/src/nets/cifar10_convnet.py
imports: from typing import Mapping, Optional, Sequence, Union
  from sonnet.src import base
  from sonnet.src import batch_norm
  from sonnet.src import conv
  from sonnet.src import initializers
  from sonnet.src import linear
  from sonnet.src import types
  import tensorflow
label_desc: Use image node_id 1 to create a new Cifar10ConvNet object from inherited base classes: base with example: obj = Cifar10ConvNet(num_classes, w_init, b_init, data_format, output_channels, strides, name)