gpt4 book ai didi

tensorflow - 如何合并keras tensorflow中的两个模型以制作一个模型

转载 作者:行者123 更新时间:2023-12-04 16:08:15 34 4
gpt4 key购买 nike

我有两个预训练模型,一个用于年龄分类,另一个用于性别分类。我想制作年龄-性别分类器网络,所以我想合并这两个网络并从同一个网络预测年龄和性别。

我试过的是

from keras.models import load_model

model_age = load_model(model_age_path)
model_gender = load_model(model_gender_path)

我如何合并两个模型并训练同时执行这两个操作的网络

最佳答案

这取决于“合并”对您意味着什么。
如果你想从单个输入中同时输出年龄和性别,那么你需要多个“头”:

from keras import Input
from keras.models import load_model

model_age = load_model('age.hdf5')
model_gender = load_model('gender.hdf5')

x = Input(shape=[299, 299, 3])
y_age = model_age(x)
y_gen = model_gender(x)

model = Model(inputs=x, outputs=[y_age, y_gen])

data, target = load_data()
p_age, p_gender = model.predict(data)

print(p_age)
# [[ 0.57398415, 0.42601582],
# [ 0.5397228 , 0.46027723],
# [ 0.6648131 , 0.33518684],
# [ 0.5917415 , 0.4082585 ]]

print(p_gender)
# [[ 0.13119246],
# [ 0. ],
# [ 0.1875571 ],
# [ 0. ]]

但现在考虑一下:这两项任务(回归年龄、分类性别)在某种程度上具有某种程度的相似性,对吗?例如,如果您的数据由图像组成,则两者都需要检测线条、补丁和简单的几何形式来做出决定。换句话说,两个网络都可以重用很多 conv 层的权重,从而使整个过程更加高效。您可以通过一个同时做这两件事的新模型来实现这种训练:

from keras.applications import VGG19

base_model = VGG19(weights='imagenet') # or any model, really.
y = base_model.output
y_age = Dense(1, activation='relu')(y)

y = base_model.output
y = Dense(128, activation='relu')(y)
y = Dense(128, activation='relu')(y)
y_gender = Dense(2, activation='softmax')(y)

model = Model(inputs=base_model.inputs, outputs=[y_age, y_gender])

关于tensorflow - 如何合并keras tensorflow中的两个模型以制作一个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47669876/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com