繁体   English   中英

如何连接 keras 中的两个预训练模型?

[英]how to concatenate two Pre trained models in keras?

我有两个预先训练的模型,我想将它们连接起来。 model 1:模型1.png

model 2:模型2.png

我想要的连接结果是: merged.png

这是我从头开始创建 model 时重量丢失的代码。

我想要一些类似的东西,但没有减肥。

input_layer1= Input(shape=(20))

x=Dense(32,'relu')(input_layer)
x=Dense(16,'relu')(x)

out1=Dense(1,'sigmoid')(x)

input_layer2=Concatenate()([input_layer1,out1])

x=Dense(256,'relu')(input_layer2)
x=Dense(128,'relu')(x)
x=Dense(64,'relu')(x)
x=Dense(32,'relu')(x)

out2=Dense(y_train2.shape[1],'softmax')(x)

model = Model(inputs=input_layer1, outputs=out2)

使用功能 model 方法,model 可以称为 function,并且可以用作另一个 Z20F35E630DAF44DBFA4C3F68F630DF 中的层像这样的东西应该工作:

import tensorflow as tf
import tensorflow.keras.layers as L


def build_model1():
    input_layer = L.Input((20,))
    x = L.Dense(32)(input_layer)
    x = L.Dense(16)(x)
    output_layer = L.Dense(1)(x)
    model = tf.keras.models.Model(inputs=input_layer, outputs=output_layer)
    return model


def build_model2():
    input_layer = L.Input((21,))
    x = L.Dense(256)(input_layer)
    x = L.Dense(128)(x)
    x = L.Dense(64)(x)
    x = L.Dense(32)(x)
    output_layer = L.Dense(10)(x)
    model = tf.keras.models.Model(inputs=input_layer, outputs=output_layer)
    return model


def build_model_composite(model1, model2):
    input_layer = L.Input((20,))

    out1 = model1(input_layer)

    conc = L.Concatenate()([input_layer, out1])

    out2 = model2(conc)

    # xtrainshape = y_train2.shape[1]
    xtrainshape = 10
    output_layer = L.Dense(xtrainshape, "softmax")(out2)

    model = tf.keras.models.Model(inputs=input_layer, outputs=output_layer)
    return model


model1 = build_model1()
model2 = build_model2()
comp_model = build_model_composite(model1, model2)

comp_model.summary()
tf.keras.utils.plot_model(
    comp_model,
    show_shapes=True,
)

其中model1model2可以独立训练。

复合 model 如下所示:

复合模型

我从来没有真正尝试过训练这样的东西(我只使用标准的预训练模型进行迁移学习),所以如果它按我的预期工作,请告诉我。

干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM