def METHOD_NAME(x,
            scale=1,
            channel=32,
            patch=True,
            name='discriminator',
            reuse=False):
    with tf.variable_scope(name, reuse=reuse):
        for idx in range(3):
            x = conv_spectral_norm(
                x,
                channel * 2**idx, [3, 3],
                stride=2,
                name='conv{}_1'.format(idx))
            x = tf.nn.leaky_relu(x)
            x = conv_spectral_norm(
                x, channel * 2**idx, [3, 3], name='conv{}_2'.format(idx))
            x = tf.nn.leaky_relu(x)
        if patch is True:
            x = conv_spectral_norm(x, 1, [1, 1], name='conv_out')
        else:
            x = tf.reduce_mean(x, axis=[1, 2])
            x = slim.fully_connected(x, 1, activation_fn=None)
        return x