def _define_tail(self, name='Discriminator'):
    feature_model = tf.keras.models.Sequential(name=name)

    def conv1d_dropout(filters, strides, index=0):
        suffix = str(index)
        feature_model.add(layers.Conv1D(filters=filters, strides=strides, name='Conv{}'.format(suffix), padding='same', kernel_size=5, activation=tf.nn.leaky_relu))
        feature_model.add(layers.Dropout(name='Dropout{}'.format(suffix), rate=0.3))
    conv1d_dropout(filters=32, strides=2, index=5)
    conv1d_dropout(filters=32, strides=2, index=6)
    conv1d_dropout(filters=64, strides=2, index=0)
    conv1d_dropout(filters=64, strides=2, index=1)
    conv1d_dropout(filters=128, strides=2, index=2)
    conv1d_dropout(filters=128, strides=2, index=3)
    conv1d_dropout(filters=256, strides=1, index=4)
    conv1d_dropout(filters=256, strides=1, index=7)
    feature_model.add(layers.Flatten(name='Flatten'))
    return feature_model
def _define_tail(self, name='Discriminator'):
    feature_model = tf.keras.models.Sequential(name=name)

    def conv1d_dropout(filters, strides, index=0):
        suffix = str(index)
        feature_model.add(layers.Conv1D(filters=filters, strides=strides, name='Conv{}'.format(suffix), padding='same', kernel_size=5, activation=tf.nn.leaky_relu))
        feature_model.add(layers.Dropout(name='Dropout{}'.format(suffix), rate=0.3))
    conv1d_dropout(filters=32, strides=2, index=5)
    conv1d_dropout(filters=32, strides=2, index=6)
    conv1d_dropout(filters=64, strides=2, index=0)
    conv1d_dropout(filters=64, strides=2, index=1)
    conv1d_dropout(filters=128, strides=2, index=2)
    conv1d_dropout(filters=128, strides=2, index=3)
    conv1d_dropout(filters=256, strides=1, index=4)
    conv1d_dropout(filters=256, strides=1, index=7)
    feature_model.add(layers.Flatten(name='Flatten'))
    return feature_model