Keras:使用flow_from _directory()函数为两个输入模型创建自定义生成器

问题描述 投票:3回答:1

[我试图用fit_generator()来训练我的暹罗网络,我从以下答案中学到了:Keras: How to use fit_generator with multiple inputs做到这一点的最佳方法是创建自己的生成器,该生成器产生多个数据点,我的问题是我检索了我的数据带有flow_from_directory()函数,但我不知道是否可行。

这是我为我的问题重新调整生成器的尝试:

from keras.models import load_model
from keras import optimizers
from keras.preprocessing.image import ImageDataGenerator
import numpy as np

model = load_model("siamese_model.h5")

train_datagen = ImageDataGenerator(rescale = 1./255)

def generator():
    t1 = train_datagen.flow_from_directory(base_dir,target_size = (150, 150), batch_size = 20, class_mode = 'categorical',shuffle = True)
    t2 = train_datagen.flow_from_directory(base_dir,target_size = (150, 150), batch_size = 20, class_mode = 'categorical', shuffle = True)
    while True:
        d1,y = t1.next()
        d2 = t2.next()
        yield ([d1[0], d2[0]],y)

model.compile(loss = 'categorical_crossentropy',optimizer= optimizers.RMSprop(lr=2e-5),metrics=['acc'])

history = model.fit_generator(generator(),
                              steps_per_epoch = 10,
                              epochs = 5)

我的代码给了我与尝试在没有自定义生成器的情况下拟合模型时完全相同的错误:

ValueError: 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: [array([[[[0.14509805, 0.15686275, 0.16862746],
         [0.14509805, 0.15686275, 0.16862746],
         [0.14509805, 0.15686275, 0.16862746],
         ...,
         [0.14117648, 0.15294118, 0.16862746...

我在做什么错?

python keras neural-network generator conv-neural-network
1个回答
0
投票
改为尝试:
© www.soinside.com 2019 - 2024. All rights reserved.