我正在使用Keras,并为二进制分类建立了5种不同的模型。在每个模型上,我都使用predict_proba
来获得分类的可能性。
5个模型是逻辑回归:
def build_logistic_model(input_dim, output_dim):
model = Sequential()
model.add(Embedding(input_dim, embed, input_length=max_length))
model.add(Flatten())
model.add(Dense(output_dim, input_dim=embed, activation='softmax'))
所以,现在我有5种型号的清单。我想将这些模型的输出合并到一个新的Keras模型中,并找出这5个模型的概率的AVG和STD。
有没有办法做到这一点,最后,我将获得1个模型,将这5个模型合并到他那里?我将输入信息发送到这5个模型,并获取平均值和标准差?
答案 0 :(得分:1)
您可以这样创建一个新模型:
from keras import backend as K
def std_layer(input):
return K.std(input)
model_input = Input(shape=input_dim)
def get_avg_std_model(models, model_input):
outputs = [model.outputs[0] for model in models]
avg = Average()(outputs)
a = Concatenate()(outputs)
std = Lambda(std_layer)(a)
model = Model(model_input, [avg, std], name='get_avg_std')
return model
models = [model1 , model2, model3, model4, model5]
get_avg_std = get_avg_std_model(models, model_input)
您将需要定义所有模型:
model_input = Input(shape=input_dim)
def model_example(model_input):
x = Dense(1)(model_input)
model1 = Model(inputs=model_input, outputs=x)
return model
model1 = model_example(model_input)
model1.compile(optimizer='adadelta', loss='mse')
所有这些应该可以满足您的需求!
保持联系。