要在您的系统上重新创建此问题的提问,请找到源代码和数据集here
我在努力什么
我试图创建一个简单的GAN(生成对抗N/W),我试图使用一些ImageNet图像重新着色黑色和白色图像。
我在做什么?
我已经采取了一些狗的形象,这是存储在文件夹./ImageNet/dogs/
目录。使用Python代码,我已经创建了2个步骤,我转换
1.将图像转换为244 x 244分辨率并保存为./ImageNet/dogs_lowres/
1.将低分辨率图像转换为灰度并保存为./ImageNet/dogs_bnw/
1.将低分辨率BnW图像馈送到GAN模型并生成彩色图像。
我被困在哪里
我被困在理解图像尺寸/形状是如何使用的。我得到了这样的错误:
ValueError: `logits` and `labels` must have the same shape, received ((32, 28, 28, 3) vs (32, 224, 224)).
字符串
下面是生成器和鉴别器的代码:
# GAN model for recoloring black and white images
generator = Sequential()
generator.add(Dense(7 * 7 * 128, input_dim=100))
generator.add(Reshape((7, 7, 128)))
generator.add(Conv2DTranspose(64, kernel_size=5, strides=2, padding='same'))
generator.add(Conv2DTranspose(32, kernel_size=5, strides=2, padding='same'))
generator.add(Conv2DTranspose(3, kernel_size=5, activation='sigmoid', padding='same'))
# Discriminator model
discriminator = Sequential()
discriminator.add(Flatten(input_shape=(224, 224, 3)))
discriminator.add(Dense(1, activation='sigmoid'))
# Compile the generator model
optimizer = Adam(learning_rate=0.0002, beta_1=0.5)
generator.compile(loss='binary_crossentropy', optimizer=optimizer)
# Train the GAN to recolor images
epochs = 10000
batch_size = 32
型
训练循环如下:
for epoch in range(epochs):
idx = np.random.randint(0, bw_images.shape[0], batch_size)
real_images = bw_images[idx]
noise = np.random.normal(0, 1, (batch_size, 100))
generated_images = generator.predict(noise)
# noise_rs = noise.reshape(-1, 1)
g_loss = generator.train_on_batch(noise, real_images)
if epoch % 100 == 0:
print(f"Epoch: {epoch}, Generator Loss: {g_loss}")
型
**错误在哪里?**我在线上得到错误:
g_loss = generator.train_on_batch(noise, real_images)
个
当我检查noise和真实的_images对象的shape
时,得到的结果如下:
real_images.shape
(32, 224, 224)
noise.shape
(32, 100)
型
任何帮助/建议都很感激。
1条答案
按热度按时间blmhpbnm1#
generator
输出[32 28 28 3],而它得到的是一个形状为[32 224 224]的目标。目标有两个不同:它是灰度而不是彩色,并且具有更大的尺寸。我假设提供给生成器的目标应该是彩色而不是灰度。你可以加载彩色图像并使用以下命令调整它们的大小:
字符串