gpt4 book ai didi

python - Numpy 数组的 keras 列表不是预期的大小模型

转载 作者:行者123 更新时间:2023-11-30 08:30:26 25 4
gpt4 key购买 nike

我无法找到将多个输入传递给模型的正确方法。该模型有 2 个输入

  • 形状(256, 256, 3)的噪声图像
  • 输入形状(256, 256, 3)的图像

和 1 个输出

  • 输出形状为(256, 256, 3)
  • 的图像

我通过ImageDataGenerator生成图像:

x_data_gen = ImageDataGenerator(
horizontal_flip=True,
validation_split=0.2)

我正在通过 python 生成器生成样本:

def image_sampler(datagen, batch_size, subset="training"):

for imgs in datagen.flow_from_directory('data/r_cropped', batch_size=batch_size, class_mode=None, seed=1, subset=subset):

g_y = []

noises = []
bw_images = []
for i in imgs:
# append to expected output the original image
g_y.append(i/255.0)

noises.append(generate_noise(1, 256, 3)[0])
bw_images.append(iu_rgb2gray(i))

yield(np.array([noises, bw_images]), np.array(g_y))

尝试使用以下方法训练模型时:

    generator.fit_generator(
image_sampler(x_data_gen, 32),
validation_data=image_sampler(x_data_gen,32,"validation"),
epochs=EPOCHS,
steps_per_epoch= 540,
validation_steps=160 )

我收到一条错误消息:

Error when checking model input: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 2 array(s), but instead got the following list of 1 arrays

虽然消息很清楚,但我不明白如何修复生成过程来解决它。

我尝试过:

    yield([noises, bw_images], np.array(g_y))

但这不起作用,因为它会出现不同的错误:

AttributeError: 'list' object has no attribute 'shape'

我错过了什么?

最佳答案

当您有多个输入/输出时,您应该将它们作为 numpy 数组列表传递。因此,您的第二种方法是正确的,但您忘记了在第二种方法中将列表转换为 numpy 数组:

yield ([np.array(noises), np.array(bw_images)], np.array(g_y))
<小时/>

确保一切正确的更详细方法是为输入和输出层选择名称。示例:

input_1 = layers.Input(# other args, name='input_1')
input_2 = layers.Input(# other args, name='input_2')

然后,在生成器函数中使用如下所示的名称:

yield ({'input_1': np.array(noises), 'input_2': np.array(bw_images)}, {'output': np.array(g_y)})

通过这样做,您可以确保映射正确完成。

关于python - Numpy 数组的 keras 列表不是预期的大小模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51100057/

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