我正在尝试复制胡光华的论文“基于深度卷积生成对抗网络的无监督织物缺陷检测”。它是一个 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