【发布时间】:2021-03-30 14:38:03
【问题描述】:
我正在阅读this tutorial,以便创建我自己的基于 Keras 的自动编码器。我一步一步按照教程进行操作,唯一的区别是我想使用自己的图像数据集来训练模型。所以我更改/添加了以下代码:
IMAGES = "/path/to/my/images"
SHAPE = (200, 200)
INIT_LR = 1e-3
EPOCHS = 20
BS = 32
(encoder, decoder, autoencoder) = ConvAutoencoder.build(SHAPE[0], SHAPE[1], 3)
opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS)
autoencoder.compile(loss="mse", optimizer=opt)
image_generator = ImageDataGenerator(rescale=1.0 / 255)
train_gen = image_generator.flow_from_directory(
os.path.join(IMAGES, "training"),
class_mode=None, target_size=SHAPE, batch_size=BS,
)
val_gen = image_generator.flow_from_directory(
os.path.join(IMAGES, "validation"),
class_mode=None, target_size=SHAPE, batch_size=BS,
)
hist = autoencoder.fit(train_gen, validation_data=val_gen, epochs=EPOCHS, batch_size=BS)
我的图像是 RGB 格式的普通 .jpg 文件。但是,一旦训练开始,fit() 方法就会抛出以下异常:
ValueError: No gradients provided for any variable: ['conv2d/kernel:0', 'conv2d/bias:0', 'batch_normalization/gamma:0', 'batch_normalization/beta:0', 'conv2d_1/kernel:0', 'conv2d_1/bias:0', 'batch_normalization_1/gamma:0', 'batch_normalization_1/beta:0', 'dense/kernel:0', 'dense/bias:0', 'dense_1/kernel:0', 'dense_1/bias:0', 'conv2d_transpose/kernel:0', 'conv2d_transpose/bias:0', 'batch_normalization_2/gamma:0', 'batch_normalization_2/beta:0', 'conv2d_transpose_1/kernel:0', 'conv2d_transpose_1/bias:0', 'batch_normalization_3/gamma:0', 'batch_normalization_3/beta:0', 'conv2d_transpose_2/kernel:0', 'conv2d_transpose_2/bias:0'].
任何想法我在这里缺少什么?
【问题讨论】:
-
autoencoder是否正常工作,没有您的自定义数据集? (同时遵循 tuts)? -
在教程中说你应该适应 #train the convolutional autoencoder H = autoencoder.fit( trainX, trainX, validation_data=(testX, testX), epochs=EPOCHS, batch_size=BS),但你适合发电机。换句话说,我认为您没有提供 Y/target,对于自动编码器来说,它与输入相同。所以你应该有 fit(train_gen, train_gen, val_gen, val_gen, EPOCHS=[...]) 但确保生成器在运行两次时以相同的顺序提供图像
-
@Octav 当我使用像
fit(train_gen, train_gen, val_gen, val_gen, epochs=EPOCHS, batch_size=BS)这样的代码时,我收到以下错误:“fit() got multiple values for argument 'epochs'”。 -
autoencoder.fit(train_gen, train_gen, validation_data=(val_gen, val_gen), epochs=EPOCHS, batch_size=BS)
-
@Octav 这会导致以下错误:“使用
keras.utils.Sequence作为输入时不支持y参数。”
标签: python tensorflow keras