[英]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,
)
其中model1
和model2
可以独立训练。
复合 model 如下所示:
我从来没有真正尝试过训练这样的东西(我只使用标准的预训练模型进行迁移学习),所以如果它按我的预期工作,请告诉我。
干杯!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.