Keras模型多输入-多输出设计思路

1.多输入、多输出

模型某一层接收多输入数据,以实现共享该层参数的目的。如对title和desc做文本分类,两类可以共享一个embedding数据,进而获取某种关联特征,示例代码如下:

复制代码
title = Input(shape=(30,),name="title")
desc = Input(shape=(200,),name="desc")
# title和desc 共享 mebedding layer
embedding = Embedding(3000, 128)

title_embedd = embedding(title)
desc_embedd = embedding(desc)
title_lstm = LSTM(128)(title_embedd)
desc_lstm = LSTM(128)(desc_embedd)

out_title = Dense(1,activation="sigmoid",name="out_title")(title_lstm)
out_desc = Dense(1,activation="sigmoid",name="out_desc")(desc_lstm)
model = Model(inputs=[title,desc],outputs=[out_title,out_desc])
keras.utils.plot_model(model, show_shapes=True)
复制代码

打印model:

 

2.不同输出设置不同的类型loss和weights

# model compile
model.compile(loss="binary_crossentropy", optimizer="adam", metrics=["accuracy"])
# 输入和输出有多个,喂数据时整理成list形式,对应好
model.fit([title_input, desc_input],[title_out, desc_out])
# 不同的输出设置不同的loss和权重
model.compile(loss={"out_title":"binary_crossentropy", "out_desc":"categorical_crossentropy"}, optimizer="adam", metrics=["accuracy"])
model.compile(loss={"out_title":"binary_crossentropy", "out_desc":"categorical_crossentropy"}, loss_weights={"out_title":0.3,"out_desc":0.8},optimizer="adam",metrics=["accuracy"])

注:根据输出的名称对应设置类型,Keras这种思路无处不在

 Keras API:https://keras.io/api/models/model_training_apis/

posted @   今夜无风  阅读(898)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2020-02-11 基于大数据分布式流处理技术的实时反欺诈解决方案
2020-02-11 Tensorflow API 2.0 使用建议
2020-02-11 一个可借鉴的系统框架
2020-02-11 中文语言理解全套资料-模型、数据集、评测
点击右上角即可分享
微信分享提示