tensorflow - Keras - 将多个模型组合成一个模型并使用 predict_prob 计算方差
问题描述
我正在使用 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 个模型发送输入并获得 avg 和 std?
解决方案
您可以像这样创建一个新模型:
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')
所有这一切都应该给你你所需要的!
保持联系。
推荐阅读
- javascript - 使用redux和react时渲染条件jsx的正确方法是什么
- haskell - 如何将 ghcide 添加到 shell.nix
- jquery - 为什么 datatables.net 在我的 Rails 开发环境中可以工作,但在部署到 Heroku 时却不行?
- python - flask-sqlalchemy:放置 db.event.listen() 的位置
- haskell - 无法在 Haskell 中使用产品
- spring - Thymeleaf Spring Security - 将身份验证存储到本地变量中
- python - 获得一条直线上的所有点进行技术分析?
- mysql - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法解决方案:
- html - React / Gatsby - 根据屏幕大小渲染不同的组件
- reactjs - onClick 在 Firefox 上不工作 - 在 Chrome 上工作