各自的 CNN(DCGAN) 模型的代码和内核值是多少? TF卡拉斯
What is the code and kernel value of the respective CNN(DCGAN) model? TF KERAS
我正在尝试复制胡光华的论文“基于深度卷积生成对抗网络的无监督织物缺陷检测”。
它是一个 DCGAN,但也有一个逆变器,类似于鉴别器。
我的问题是我应该如何传输来对模型进行编码?我会 post 模型的图片和解释 table。还有我尝试做的代码。
这是模型(鉴别器和反相器)
这里是 table 对模型的解释。
我的主要问题是第 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
回答你的主要问题,从你发布的图表来看,你在第一层正确使用了 3x3 内核。
其余代码在我看来是正确的。您遇到错误了吗?
我正在尝试复制胡光华的论文“基于深度卷积生成对抗网络的无监督织物缺陷检测”。 它是一个 DCGAN,但也有一个逆变器,类似于鉴别器。
我的问题是我应该如何传输来对模型进行编码?我会 post 模型的图片和解释 table。还有我尝试做的代码。
这是模型(鉴别器和反相器)
这里是 table 对模型的解释。
我的主要问题是第 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
回答你的主要问题,从你发布的图表来看,你在第一层正确使用了 3x3 内核。
其余代码在我看来是正确的。您遇到错误了吗?