class_docstr: MNIST classifier used in the experiments for Counterfactual with Reinforcement Learning. The model consists of two
  convolutional layers having 64 and 32 channels and a kernel size of 2 with ReLU nonlinearities, followed by
  maxpooling of size 2 and dropout of 0.3. The convolutional block is followed by a fully connected layer of 256 with
  ReLU nonlinearity, and finally a fully connected layer is used to predict the class logits (10 in MNIST case).
docstr: Constructor.
  
  Parameters
  ----------
  output_dim
      Output dimension
docstr_tok: ["Constructor",".","Parameters","--","--","--","--","--","output_dim","Output","dimension"]
code: def __init__(self, output_dim: int = 10, **kwargs) -> None:
      """
      Constructor.
  
      Parameters
      ----------
      output_dim
          Output dimension
      """
      super().__init__(**kwargs)
  
      self.conv1 = keras.layers.Conv2D(
          64, 2, padding="same", activation="relu"
      )
      self.maxpool1 = keras.layers.MaxPool2D(
          pool_size=(2, 2), strides=2
      )
      self.dropout1 = keras.layers.Dropout(0.3)
      self.conv2 = keras.layers.Conv2D(
          32, 2, padding="same", activation="relu"
      )
      self.maxpool2 = keras.layers.MaxPool2D(
          pool_size=(2, 2), strides=2
      )
      self.dropout2 = keras.layers.Dropout(0.3)
      self.flatten = keras.layers.Flatten()
      self.fc1 = keras.layers.Dense(256, activation="relu")
      self.fc2 = keras.layers.Dense(output_dim)
  
imports: import tensorflow
  import tensorflow.keras
  from typing import List
label_desc: Use image node_id 1 to create a new MNISTClassifier object from inherited base classes: keras with example: obj = MNISTClassifier(output_dim)