私は2つの事前訓練モデルを用意しています.1つは年齢分類用、もう1つはジェンダー分類用です。私は年齢別性別分類器ネットワークを作りたいので、私は2つのネットワークを統合し、同じネットワークから年齢と性別を誇張したいと思っていました。私が試したものをkeras tensoflowで2つのモデルをマージして1つのモデルを作成する方法
は、私はそれがあなたに意味「マージ」ものに依存し、両方の
私は2つの事前訓練モデルを用意しています.1つは年齢分類用、もう1つはジェンダー分類用です。私は年齢別性別分類器ネットワークを作りたいので、私は2つのネットワークを統合し、同じネットワークから年齢と性別を誇張したいと思っていました。私が試したものをkeras tensoflowで2つのモデルをマージして1つのモデルを作成する方法
は、私はそれがあなたに意味「マージ」ものに依存し、両方の
を行う二つのモデルと鉄道ネットワークをマージすることができますどのように
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. ]]
をしかし、今、これを考慮:
あなたは、単一の入力から出力の両方の年齢や性別にしたい場合は、複数の「頭」が必要程度 - ある程度の類似性、そうですか?例えば、あなたのデータが画像で構成されている場合は、線やパッチ、単純な幾何学的な形を検出して決定する必要があります。言い換えれば、多くのコンバージョンレイヤーの重みを両方のネットワークで再利用できるため、プロセス全体が効率的になります。 このトレーニングでは、両方の作業を同時に行う新しいモデルを作成できます。
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])