Python 用于双路径cnn的model.fit.generator

Python 用于双路径cnn的model.fit.generator,python,tensorflow,keras,deep-learning,cnn,Python,Tensorflow,Keras,Deep Learning,Cnn,我尝试运行并行路径CNN,它与一个密集层连接。我将第一条路径命名为model1,将第二部分命名为model2,将包含并行PAT的连接模型命名为model。我已经编译了模型,模型摘要也在运行。现在我必须训练这个模特。为此,我将CNN模型的输入设为model.fit.generator。我使用的是keras 2.1.6版本 base_model1 = model.fit_generator(["train_generator","train_generator"], steps_per_ep

我尝试运行并行路径CNN,它与一个密集层连接。我将第一条路径命名为model1,将第二部分命名为model2,将包含并行PAT的连接模型命名为model。我已经编译了模型,模型摘要也在运行。现在我必须训练这个模特。为此,我将CNN模型的输入设为model.fit.generator。我使用的是keras 2.1.6版本

    base_model1 = model.fit_generator(["train_generator","train_generator"], steps_per_epoch = 
    nb_train_samples // batch_size, epochs = epochs, validation_data = validation_generator,
    validation_steps = nb_validation_samples // batch_size) 
我收到的错误消息是

WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/math_grad.py:1250: add_dispatch_support.<locals>.wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.where in 2.0, which has the same broadcast rule as np.where
Epoch 1/2
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-14-ba6c6e678605> in <module>()
      3   epochs = epochs,
      4   validation_data = validation_generator,
----> 5   validation_steps = nb_validation_samples // batch_size)

4 frames
/usr/local/lib/python3.6/dist-packages/keras/utils/data_utils.py in _data_generator_task(self)
    656                             # => Serialize calls to
    657                             # infinite iterator/generator's next() function
--> 658                             generator_output = next(self._generator)
    659                             self.queue.put((True, generator_output))
    660                         else:
TypeError: 'list' object is not an iterator


您必须更改此行:

base_model1 = model.fit_generator(["train_generator","train_generator"] ...
致:

此错误意味着您仅使用列表而不是列车数据。数据生成器无法迭代列表


您必须更改此行:

base_model1 = model.fit_generator(["train_generator","train_generator"] ...
致:

此错误意味着您仅使用列表而不是列车数据。数据生成器无法迭代列表


您得到错误是因为您的组合模型每次需要两个输入,但您的数据生成器返回一个输入。将生成器作为列表也无法正常工作。我已经创建了一个与您的模型等效的模型,该模型需要一个输入,并且可以与您的数据生成器正常工作:

from keras import layers, Model
input_shape = (128,128,3) # Change this accordingly
my_input = layers.Input(shape=input_shape) # one input
我意识到您的两个并行模型使用相同的体系结构,因此我创建了一个函数,每次您调用它时都会这样做,我们将调用它两次(以获得两个并行模型):

现在,让我们对输入调用并行层函数两次:

parallel1 = parallel_layers(my_input, 1)
parallel2 = parallel_layers(my_input, 2)
现在,我们将连接它们的输出并创建最终模型:

concat = layers.Concatenate()([parallel1, parallel2])
x = layers.Dense(128, activation='relu')(concat)
x = Dense(7, activation='softmax')(x)

final_model = Model(inputs=my_input, outputs=x)
final_model.summary()
该模型将(希望)与您的数据生成器配合使用,如下所示:

final_model.fit_generator(train_generator, steps_per_epoch = 
    nb_train_samples // batch_size, epochs = epochs, validation_data = validation_generator,
    validation_steps = nb_validation_samples // batch_size) 

您得到错误是因为您的组合模型每次需要两个输入,但您的数据生成器返回一个输入。将生成器作为列表也无法正常工作。我已经创建了一个与您的模型等效的模型,该模型需要一个输入,并且可以与您的数据生成器正常工作:

from keras import layers, Model
input_shape = (128,128,3) # Change this accordingly
my_input = layers.Input(shape=input_shape) # one input
我意识到您的两个并行模型使用相同的体系结构,因此我创建了一个函数,每次您调用它时都会这样做,我们将调用它两次(以获得两个并行模型):

现在,让我们对输入调用并行层函数两次:

parallel1 = parallel_layers(my_input, 1)
parallel2 = parallel_layers(my_input, 2)
现在,我们将连接它们的输出并创建最终模型:

concat = layers.Concatenate()([parallel1, parallel2])
x = layers.Dense(128, activation='relu')(concat)
x = Dense(7, activation='softmax')(x)

final_model = Model(inputs=my_input, outputs=x)
final_model.summary()
该模型将(希望)与您的数据生成器配合使用,如下所示:

final_model.fit_generator(train_generator, steps_per_epoch = 
    nb_train_samples // batch_size, epochs = epochs, validation_data = validation_generator,
    validation_steps = nb_validation_samples // batch_size) 

你在哪里当模特?请发布完整的模型代码和相关详细信息。@ZabirAlNazi更新了模型您的生成器代码在哪里?也更新了…您的模型在哪里?请发布完整的模型代码和相关详细信息。@ZabirAlNazi更新了模型,生成器代码在哪里?也更新了…我仍然对列表有问题。仍然我收到了这个错误类型错误:“列表”对象不是迭代器,直到我对列表有问题。仍然我收到了这个错误类型错误:“列表”对象不是迭代器