1

我正在尝试复制胡光华的论文“基于深度卷积生成对抗网络的无监督织物缺陷检测”。它是一个 DCGAN,但也有一个逆变器,类似于鉴别器。

我的问题是我应该如何转移到编码模型?我将发布模型的图片和解释表。还有我试图做的代码。

这是模型(鉴别器和逆变器)

在此处输入图像描述

这是解释模型的表格。

我的主要问题是第 1 层没有内核值,我应该如何处理?

在此处输入图像描述

这是我尝试做的代码。请纠正我有什么问题。

def make_discriminator_model():
    model = tf.keras.Sequential()
    model.add(layers.Conv2D(64,kernel_size=(3, 3), strides=(2, 2), padding='same', input_shape=[32, 32, 1]))
    model.add(layers.LeakyReLU())
    #print("First conv discriminator:",y.shape)
   
    
    model.add(layers.Conv2D(128, kernel_size=(3, 3), strides=(2, 2), padding='same'))
    #assert model.output_shape == (None, 8, 8, 128)
    model.add(layers.BatchNormalization())
    model.add(layers.LeakyReLU())


    model.add(layers.Conv2D(192, kernel_size=(3, 3), strides=(2, 2), padding='same'))
    #assert model.output_shape == (None, 4, 4, 192)
    model.add(layers.BatchNormalization())
    model.add(layers.LeakyReLU())


    model.add(layers.Conv2D(256, kernel_size=(3, 3), strides=(2, 2), padding='same'))
    #assert model.output_shape == (None, 2, 2, 256)
    model.add(layers.BatchNormalization())
    model.add(layers.LeakyReLU())


    model.add(layers.Flatten())
    model.add(layers.Dense(1,activation='sigmoid'))

    return model


def make_inverter_model():
    model = tf.keras.Sequential()
    model.add(layers.Conv2D(64, kernel_size=(3, 3), strides=(2, 2), padding='same', input_shape=[32, 32, 1]))
    model.add(layers.LeakyReLU())

   
    
    model.add(layers.Conv2D(128, kernel_size=(3, 3), strides=(2, 2), padding='same'))
    #assert model.output_shape == (None, 8, 8, 128)
    model.add(layers.BatchNormalization())
    model.add(layers.LeakyReLU())


    model.add(layers.Conv2D(192, kernel_size=(3, 3), strides=(2, 2), padding='same'))
    #assert model.output_shape == (None, 4, 4, 192)
    model.add(layers.BatchNormalization())
    model.add(layers.LeakyReLU())


    model.add(layers.Conv2D(256, kernel_size=(3, 3), strides=(2, 2), padding='same'))
    #assert model.output_shape == (None, 2, 2, 256)
    model.add(layers.BatchNormalization())
    model.add(layers.LeakyReLU())


    model.add(layers.Flatten())
    model.add(layers.Dense(64,activation='tanh',use_bias=False,)) #layers.Dense(2*2*256, use_bias=False,
    #model.add(layers.Activation('tanh'))
    #model.add(layers.Dense(64,activation='sigmoid'))

    return model


4

1 回答 1

1

为了回答您的主要问题,从您发布的图表中,您在第一层正确使用了 3x3 内核。

其余的代码对我来说看起来是正确的。你面临一些错误吗?

于 2020-07-16T21:21:59.727 回答