gpt4 book ai didi

python - fit_generator work on Autoencoder 需要做哪些改动

转载 作者:太空宇宙 更新时间:2023-11-04 00:44:27 25 4
gpt4 key购买 nike

我目前使用的生成器在卷积网络上运行良好。但是,当我使用相同的生成器来拟合自动编码器时,出现以下错误。

**Exception: output of generator should be a tuple (x, y, sample_weight) or (x, y). Found: [[[[ 0.86666673  0.86666673  0.86666673 ...,  0.62352943  0.627451
0.63137257]
[ 0.86666673 0.86666673 0.86666673 ..., 0.63137257 0.627451
0.627451 ]
[ 0.86666673 0.86666673 0.86666673 ..., 0.63137257 0.627451
0.62352943]
...,**

我的代码如下

from keras.layers import Input, Dense, Convolution2D, MaxPooling2D,       
from keras.models import Model,Sequential
from keras.preprocessing.image import ImageDataGenerator
import numpy as np
import os
import h5py


img_width=140
img_height=140
train_data_dir=r'SitePhotos\train'
valid_data_dir=r'SitePhotos\validation'
input_img = Input(batch_shape=(32,3, img_width, img_width))

x = Convolution2D(16, 3, 3, activation='relu', border_mode='same')(input_img)
x = MaxPooling2D((2, 2), border_mode='same')(x)
x = Convolution2D(8, 3, 3, activation='relu', border_mode='same')(x)
x = MaxPooling2D((2, 2), border_mode='same')(x)
x = Convolution2D(8, 3, 3, activation='relu', border_mode='same')(x)
encoded = MaxPooling2D((2, 2), border_mode='same')(x)

# at this point the representation is (8, 4, 4) i.e. 128-dimensional

x = Convolution2D(8, 3, 3, activation='relu', border_mode='same')(encoded)
x = UpSampling2D((2, 2))(x)
x = Convolution2D(8, 3, 3, activation='relu', border_mode='same')(x)
x = UpSampling2D((2, 2))(x)
x = Convolution2D(16, 3, 3, activation='relu')(x)
x = UpSampling2D((2, 2))(x)
decoded = Convolution2D(1, 3, 3, activation='sigmoid', border_mode='same')(x)

autoencoder = Model(input_img, decoded)
autoencoder.compile(optimizer='adadelta', loss='mse')



valid_datagen = ImageDataGenerator(rescale=1./255)
train_datagen = ImageDataGenerator(rescale=1./255)

train_generator = train_datagen.flow_from_directory(
train_data_dir,
target_size=(img_width, img_height),
batch_size=32,
class_mode=None,
shuffle=True)


valid_generator = valid_datagen.flow_from_directory(
valid_data_dir,
target_size=(img_width, img_height),
batch_size=32,
class_mode=None,
shuffle=True)

autoencoder.fit_generator(train_generator,
nb_epoch=50,
validation_data=valid_generator,
samples_per_epoch=113,
nb_val_samples=32
)

我对生成器所做的唯一更改是将类模式设置为“无”。将类模式保持为“二进制”也无济于事。由于拟合生成器需要一个元组,因此我尝试将 (train_generator, train_generator) 和 (valid_generator,valid_generator) 作为参数传递给 fit_generator。

在这种情况下得到以下异常

检查模型输入时出错:数据应该是 Numpy 数组,或 Numpy 数组的列表/字典。成立:

但似乎没有任何效果。不知道我错过了什么。作为 keras 的新手,我们将不胜感激任何帮助。

谢谢SK

最佳答案

将您的 class_mode 更改为:

 class_mode = input

input:与输入图像相同的图像(主要用于自动编码器)。

关于python - fit_generator work on Autoencoder 需要做哪些改动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40370961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com