通过fit_generator为Keras模型提供多个输入可以通过以下步骤实现:
下面是一个示例代码,演示了如何通过fit_generator为Keras模型提供多个输入:
from keras.models import Model
from keras.layers import Input, Dense
from keras.utils import Sequence
# 创建数据生成器
class DataGenerator(Sequence):
def __init__(self, x1, x2, y, batch_size):
self.x1 = x1
self.x2 = x2
self.y = y
self.batch_size = batch_size
def __len__(self):
return len(self.y) // self.batch_size
def __getitem__(self, idx):
batch_x1 = self.x1[idx * self.batch_size:(idx + 1) * self.batch_size]
batch_x2 = self.x2[idx * self.batch_size:(idx + 1) * self.batch_size]
batch_y = self.y[idx * self.batch_size:(idx + 1) * self.batch_size]
return [batch_x1, batch_x2], batch_y
# 定义模型
input1 = Input(shape=(10,), name='input1')
input2 = Input(shape=(20,), name='input2')
x1 = Dense(32, activation='relu')(input1)
x2 = Dense(64, activation='relu')(input2)
concat = keras.layers.concatenate([x1, x2])
output = Dense(1, activation='sigmoid')(concat)
model = Model(inputs=[input1, input2], outputs=output)
# 编译模型
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
# 创建数据生成器实例
batch_size = 32
train_generator = DataGenerator(x1_train, x2_train, y_train, batch_size)
# 训练模型
model.fit_generator(generator=train_generator, steps_per_epoch=len(y_train) // batch_size, epochs=10)
在上述示例中,我们创建了一个数据生成器类DataGenerator,它接收两个输入x1和x2以及对应的标签y,并在每个训练步骤中生成一批样本。然后,我们使用函数式API定义了一个具有两个输入的模型,其中input1和input2分别表示两个输入。最后,我们使用fit_generator方法来训练模型,传入数据生成器train_generator和其他相关参数。
请注意,上述示例中的代码仅用于演示目的,实际使用时需要根据具体情况进行适当修改。另外,腾讯云相关产品和产品介绍链接地址可以根据实际需求进行选择和添加。
领取专属 10元无门槛券
手把手带您无忧上云