我需要帮助来修复Keras中一个简单的自动编码器的代码。我试图在Keras博客上为自动编码器教程添加一些图像预处理。这就是我所做的
input_image = Input(shape=(1,256,256,))
flattened = Flatten()(input_image)
encoded = Dense(128,activation='relu',name='Dense1')(flattened)
decoded = Dense(256*256, activation='sigmoid',name='Dense2')(encoded)
output_image = Reshape((1,256,256,))(decoded)
autoencoder = Model(input_image,output_image)
autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')
datagen = ImageDataGenerator(
rotation_range=20,
width_shift_range=0.2,
height_shift_range=0.2,
horizontal_flip=True)
autoencoder.fit_generator(datagen.flow(train_imgs, train_imgs,
batch_size=32),
samples_per_epoch=train_imgs.shape[0],
nb_epoch=50,
validation_data=(test_imgs,test_imgs))train_imgs具有形状( 1000 ,256,256),其中1000个是训练样本的数量。test_imgs具有形状(50,256,256)。
这就是我所犯的错误
例外:生成器的输出应该是元组(x,y,sample_weight)或(x,y)。发现:无
这是由fit_generator函数引发的。
发布于 2016-05-28 12:21:09
这事是我自己想出来的。结果表明,ImageDataGenerator假定输入是形状(number_of_samples、number_of_channels、宽度、高度)。重塑train_imgs和test_imgs成功了。我已经修改了问题中的代码,以包括这个额外的维度。
发布于 2017-11-12 08:06:13
您需要将class_mode更改为“输入”,如下所示:
autoencoder.fit_generator(datagen.flow(train_imgs, train_imgs,
batch_size=32,class_mode='input'),
samples_per_epoch=train_imgs.shape[0],
nb_epoch=50,
validation_data=(test_imgs,test_imgs))您可以阅读更多的这里
发布于 2016-05-28 06:36:14
我认为您忘记了适合datagen模型。请在datagen.fit(train_imgs)前添加autoencoder.fit_generator,并尝试对您的模型进行培训。
https://stackoverflow.com/questions/37495878
复制相似问题