示例#1
0
def create_network(Xt,
                   Ct,
                   filter_size=4,
                   img_shape=(None, None, 1),
                   strides=[2, 2, 2, 2, 1],
                   filters=[64, 128, 256, 512, 1]):
    with tf.name_scope("Disc"):
        X = kl.Input(img_shape, tensor=Xt, name="X")
        C = kl.Input(img_shape, tensor=Ct, name="C")

        layer = kl.GaussianNoise(stddev=0.1)(X)
        layer = kl.concatenate([layer, C], axis=-1)

        # Discriminator
        for l in range(len(filters) - 1):
            conv = kl.Conv2D(filters=filters[l],
                             kernel_size=filter_size,
                             padding="same",
                             strides=strides[l])(layer)
            layer = kl.LeakyReLU()(conv)
            layer = InstanceNormalization()(layer)

        D_out = kl.Conv2D(filters=img_shape[-1],
                          kernel_size=filter_size,
                          activation="sigmoid",
                          padding="same",
                          strides=strides[-1])(layer)

        model = k.Model(inputs=[X, C], outputs=D_out)
    return model
示例#2
0
def create_disc(Xt,
                Ct,
                img_shape=(28, 28, 1),
                filter_size=3,
                strides=[2, 2],
                filters=[64, 128]):

    with tf.name_scope("Disc"):
        X = kl.Input(img_shape, tensor=Xt, name="X")
        C = kl.Input(img_shape, tensor=Ct, name="C")

        layer = kl.GaussianNoise(stddev=0.1)(X)
        # Discriminator

        layer = kl.Conv2D(filters=filters[0],
                          kernel_size=filter_size,
                          padding="same",
                          strides=2)(layer)
        layer = kl.LeakyReLU()(layer)

        for l in range(1, len(filters)):
            conv = kl.Conv2D(filters=filters[l],
                             kernel_size=filter_size,
                             padding="same",
                             strides=strides[l])(layer)
            layer = kl.LeakyReLU()(conv)
            layer = kl.Dropout(0.2)(layer)
            layer = kl.BatchNormalization()(layer)

        layer = kl.Flatten()(layer)
        D_out = kl.Dense(1, activation="sigmoid")(layer)

        model = k.Model(inputs=[X, C], outputs=D_out)
    return model
示例#3
0
def create_network(Xt, Ct,
        filter_size=5,
        channels=1,
        strides=[2, 2, 2, 2, 2, 1],
        filters=[64, 128, 256, 512, 512, 1]):

    with tf.name_scope("Disc"):
        X = kl.Input((None, None, channels,), tensor=Xt, name="X")
        C = kl.Input((None, None, channels,), tensor=Ct, name="C")

        layer = kl.GaussianNoise(stddev=0.1)(X)


        # Discriminator

        layer = kl.Conv2D(
        filters=filters[0],
        kernel_size=filter_size,
        padding="same",
        strides=2,
        use_bias=False,
        kernel_regularizer=kr.l2())(layer)
        layer = kl.LeakyReLU()(layer)

        for l in range(1, len(filters) - 1):
            layer = kl.Conv2D(
            filters=filters[l],
            kernel_size=filter_size,
            padding="same",
            strides=strides[l],
            use_bias=False,
            kernel_regularizer=kr.l2())(layer)
            layer = kl.LeakyReLU()(layer)
            layer = kl.BatchNormalization()(layer)

        D_out = kl.Conv2D(
        filters=filters[-1],
        kernel_size=filter_size,
        activation="sigmoid",
        padding="same",
        strides=strides[-1],
        use_bias=False,
        kernel_regularizer=kr.l2())(layer)

        model = k.Model(inputs=[X, C], outputs=D_out)
    return model