code: def __init__(self, name):
      super(CNN, self).__init__(name=name)
      h, w, in_channels = in_dim
      dense_in_channels = 64 * ((h - 28) // 8) * ((w - 28) // 8)
      self.conv1 = tl.layers.Conv2d(
          32,
          (8, 8),
          (4, 4),
          tf.nn.relu,
          "VALID",
          in_channels=in_channels,
          name="conv2d_1",
          W_init=tf.initializers.GlorotUniform(),
      )
      self.conv2 = tl.layers.Conv2d(
          64,
          (4, 4),
          (2, 2),
          tf.nn.relu,
          "VALID",
          in_channels=32,
          name="conv2d_2",
          W_init=tf.initializers.GlorotUniform(),
      )
      self.conv3 = tl.layers.Conv2d(
          64,
          (3, 3),
          (1, 1),
          tf.nn.relu,
          "VALID",
          in_channels=64,
          name="conv2d_3",
          W_init=tf.initializers.GlorotUniform(),
      )
      self.flatten = tl.layers.Flatten(name="flatten")
      self.preq = tl.layers.Dense(
          256,
          tf.nn.relu,
          in_channels=dense_in_channels,
          name="pre_q",
          W_init=tf.initializers.GlorotUniform(),
      )
      self.qvalue = tl.layers.Dense(
          out_dim * atom_num,
          in_channels=256,
          name="q",
          W_init=tf.initializers.GlorotUniform(),
      )
      self.reshape = tl.layers.Reshape((-1, out_dim, atom_num))
  
imports: import argparse
  import os
  import random
  import time
  import gym
  import matplotlib.pyplot
  import numpy
  import tensorflow
  import tensorlayer
label_desc: Use image node_id 1 to create a new CNN object from inherited base classes: tl.models with example: obj = CNN(name)