如图 1 所示,我有 3 个模型,每个模型都适用于特定领域。
推理是连续的:
由于python的多进程库,我尝试并行化这3个模型的调用,但它非常不稳定,不建议这样做。
这是我必须确保同时完成这一切的想法:
由于这 3 个模型共享一个共同的预训练模型,因此我想制作一个具有多个输入和多个输出的单一模型。
就像在推理过程中一样,我将调用一个模型,该模型将同时执行所有 3 个操作。
我看到使用 KERAS 的功能 API,这是可能的,但我不知道如何做到这一点。数据集的输入具有相同的维度。这些是 (200,200,3) 的图片。
如果有人有一个共享通用结构的多输入多输出模型的示例,我没问题。
这是我的代码示例,但它返回错误,因为layers. concatenate (...)该行传播模型未考虑的形状EfficientNet。
age_inputs = layers.Input(shape=(IMG_SIZE, IMG_SIZE, 3), name="age_inputs")
    
gender_inputs = layers.Input(shape=(IMG_SIZE, IMG_SIZE, 3)
                               , name="gender_inputs")
    
emotion_inputs = layers.Input(shape=(IMG_SIZE, IMG_SIZE, 3), 
                                name="emotion_inputs")
inputs = layers.concatenate([age_inputs, gender_inputs, emotion_inputs])
inputs = layers.Conv2D(3, (3, 3), activation="relu")(inputs)    
model = EfficientNetB0(include_top=False, 
                   input_tensor=inputs, weights="imagenet")
    
model.trainable = False
inputs = layers.GlobalAveragePooling2D(name="avg_pool")(model.output)
inputs = layers.BatchNormalization()(inputs)
top_dropout_rate = 0.2 …我第一次构建用于图像分类的 CNN 模型,我对每种类型(1D CNN、2D CNN、3D CNN)的输入形状以及如何固定滤波器中的滤波器数量感到有点困惑。卷积层。我的数据是 100x100x30,其中 30 是特征。这是我使用函数式 API Keras 编写的 1D CNN 文章:
def create_CNN1D_model(pool_type='max',conv_activation='relu'):
    input_layer = (30,1)
    conv_layer1 = Conv1D(filters=16, kernel_size=3, activation=conv_activation)(input_layer)
    max_pooling_layer1 = MaxPooling1D(pool_size=2)(conv_layer1)
    conv_layer2 = Conv1D(filters=32, kernel_size=3, activation=conv_activation)(max_pooling_layer1)
    max_pooling_layer2 = MaxPooling1D(pool_size=2)(conv_layer2)
    flatten_layer = Flatten()(max_pooling_layer2)
    dense_layer = Dense(units=64, activation='relu')(flatten_layer)
    output_layer = Dense(units=10, activation='softmax')(dense_layer)
    CNN_model = Model(inputs=input_layer, outputs=output_layer)
    return CNN_model
CNN1D = create_CNN1D_model()
CNN1D.compile(loss = 'categorical_crossentropy', optimizer = "adam",metrics = ['accuracy'])
Trace = CNN1D.fit(X, y, epochs=50, batch_size=100)
然而,在尝试通过将 Conv1D、Maxpooling1D 更改为 Conv2D 和 Maxpooling2D 来尝试 2D CNN 模型时,我收到以下错误: …