【发布时间】:2022-01-07 01:49:33
【问题描述】:
我想用一个生成器规范化训练和验证图像,并使用另一个生成器从训练和验证视图中获取新图像。然后我想分别组合和训练它们。我该如何做这个合并操作?我遇到了一个错误。
ValueError:层模型需要 1 个输入,但它接收到 2 个输入张量。收到的输入:[
# Images Paths
train_path = "train/"
valid_path = "valid/"
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import numpy as np
from keras.utils.np_utils import to_categorical
# *********************TRAINING **************************
train_datagen1 = ImageDataGenerator(rescale=1./255)
train_generator1 = train_datagen1.flow_from_directory(
train_path,
save_to_dir="train_augm/",
target_size=(224, 224),
batch_size=6)
train_datagen2 = ImageDataGenerator(
rescale=1./255,
rotation_range=40,
width_shift_range=0.2,
....)
train_generator2 = train_datagen2.flow_from_directory(
train_path,
target_size=(224, 224),
batch_size=6)
# ****************** VALIDATION *******************************
validation_datagen1 = ImageDataGenerator(rescale=1./255)
validation_generator1 = validation_datagen1.flow_from_directory(
valid_path,
save_to_dir="valid_augm/",
target_size=(224, 224),
batch_size=3)
validation_datagen2 = ImageDataGenerator(
rescale=1./255,
rotation_range=40,
width_shift_range=0.2,
....)
validation_generator2 = validation_datagen2.flow_from_directory(
valid_path,
target_size=(224, 224),
batch_size=3)
def combine_generator1(gen1, gen2):
while True:
X1i = gen1.next()
X2i = gen2.next()
yield [X1i[0], X2i[0]], X2i[1] #Yield both images and their mutual label
def combine_generator2(gen_v1, gen_v2):
while True:
V1i = gen_v1.next()
V2i = gen_v2.next()
yield [V1i[0], V2i[0]], V2i[1] #Yield both images and their mutual label
train_generator = combine_generator1(train_generator1, train_generator2)
validation_generator = combine_generator2(validation_generator1, validation_generator2)
# *********************TRAINING THE MODEL *************************
history = new_model.fit(
train_generator,
epochs=5,
validation_data = validation_generator,
shuffle = True,
verbose = 1)
【问题讨论】:
-
我也试过这个。我又遇到了同样的错误。 def combine_generator(gen1, gen2): while True: yield(next(gen1), next(gen2))