code: def double_discriminator(x, filters1=128, filters2=None,
                           kernel_size=8, strides=4, pure_mean=False):
    
    if filters2 is None:
      filters2 = 4 * filters1
    with tf.variable_scope("discriminator"):
      batch_size = shape_list(x)[0]
      net = layers().Conv2D(
          filters1, kernel_size, strides=strides, padding="SAME", name="conv1")(x)
      if pure_mean:
        net1 = tf.reduce_mean(net, [1, 2])
      else:
        net1 = mean_with_attention(net, "mean_with_attention1")
        tf.reshape(net, [batch_size, -1])
      net = tf.nn.relu(net)
      net = layers().Conv2D(
          filters2, kernel_size, strides=strides, padding="SAME", name="conv2")(x)
      if pure_mean:
        net2 = tf.reduce_mean(net, [1, 2])
      else:
        net2 = mean_with_attention(net, "mean_with_attention2")
      return tf.concat([net1, net2], axis=-1)
docs: A convolutional discriminator with 2 layers and concatenated output.