在keras下实现多个模型的融合方式


Posted in Python onMay 23, 2020

在网上搜过发现关于keras下的模型融合框架其实很简单,奈何网上说了一大堆,这个东西官方文档上就有,自己写了个demo:

# Function:基于keras框架下实现,多个独立任务分类
# Writer: PQF
# Time: 2019/9/29

import numpy as np
from keras.layers import Input, Dense
from keras.models import Model
import tensorflow as tf

# 生成训练集
dataset_size = 128*3
rdm = np.random.RandomState(1)
X = rdm.rand(dataset_size,2)
Y1 = [[int(x1+x2<1)] for (x1,x2) in X]
Y2 = [[int(x1+x2*x2<0.5)] for (x1,x2) in X]

X_train = X[:-2]
Y_train1 = Y1[:-2]
Y_train2 = Y2[:-2]

X_test = X[-2:dataset_size]
Y_test1 = Y1[-2:dataset_size]
Y_test2 = Y2[-2:dataset_size]

#网络一
input = Input(shape=(2,))
x = Dense(units=16,activation='relu')(input)
output = Dense(units=1,activation='sigmoid',name='output1')(x)

#网络二
input2 = Input(shape=(2,))
x2 = Dense(units=16,activation='relu')(input2)
output2 = Dense(units=1,activation='sigmoid',name='output2')(x2)

#模型合并
model = Model(inputs=[input,input2],outputs=[output,output2])
model.summary()

model.compile(optimizer='rmsprop',loss='binary_crossentropy',loss_weights=[1.0,1.0])
model.fit([X_train,X_train],[Y_train1,Y_train2],batch_size=48,epochs=200)

print('x_test is :\n')
print(X_test)
print('y_test1 is :\n')
print(Y_test1)
print('y_test2 is :\n')
print(Y_test2)

predict = model.predict([X_test,X_test])
print('prediction is : \n')
print(predict[0])
print(predict[1])

补充知识:keras的融合层使用理解

最近开始研究U-net网络,其中接触到了融合层的概念,做个笔记。

在keras下实现多个模型的融合方式

上图为U-net网络,其中上采样层(绿色箭头)需要与下采样层池化层(红色箭头)层进行融合,要求每层的图片大小一致,维度依照融合的方式可以不同,融合之后输出的图片相较于没有融合层的网络,边缘处要清晰很多!

这时候就要用到keras的融合层概念(Keras中文文档https://keras.io/zh/)

文档中分别讲述了加减乘除的四中融合方式,这种方式要求两层之间shape必须一致。

重点讲述一下Concatenate(拼接)方式

拼接方式默认依照最后一维也就是通道来进行拼接

在keras下实现多个模型的融合方式

如同上图(128*128*64)与(128*128*128)进行Concatenate之后的shape为128*128*192

ps:

中文文档为老版本,最新版本的keras.layers.merge方法进行了整合

在keras下实现多个模型的融合方式

上图为新版本整合之后的方法,具体使用方法一看就懂,不再赘述。

以上这篇在keras下实现多个模型的融合方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现多线程端口扫描
Aug 31 Python
在Pytorch中计算自己模型的FLOPs方式
Dec 30 Python
python多线程使用方法实例详解
Dec 30 Python
Python BeautifulReport可视化报告代码实例
Apr 13 Python
使用pycharm和pylint检查python代码规范操作
Jun 09 Python
keras的backend 设置 tensorflow,theano操作
Jun 30 Python
Django跨域请求原理及实现代码
Nov 14 Python
Pyhton模块和包相关知识总结
May 12 Python
python自动化操作之动态验证码、滑动验证码的降噪和识别
Aug 30 Python
python 详解turtle画爱心代码
Feb 15 Python
opencv深入浅出了解机器学习和深度学习
Mar 17 Python
Python实现日志实时监测的示例详解
Apr 06 Python
Keras使用ImageNet上预训练的模型方式
May 23 #Python
使用Keras预训练模型ResNet50进行图像分类方式
May 23 #Python
基于Python中random.sample()的替代方案
May 23 #Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
May 23 #Python
keras中模型训练class_weight,sample_weight区别说明
May 23 #Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
May 23 #Python
Keras实现将两个模型连接到一起
May 23 #Python
You might like
介绍一些PHP判断变量的函数
2012/04/24 PHP
CURL状态码列表(详细)
2013/06/27 PHP
PHP之uniqid()函数用法
2014/11/03 PHP
PHP异常处理Exception类
2015/12/11 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
在javascript中执行任意html代码的方法示例解读
2013/12/25 Javascript
JavaScript编写推箱子游戏
2015/07/07 Javascript
JavaScript 封装一个tab效果源码分享
2015/09/15 Javascript
javascript实现二级级联菜单的简单制作
2015/11/19 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
Bootstrap Table使用整理(三)
2017/06/09 Javascript
springmvc接收jquery提交的数组数据代码分享
2017/10/28 jQuery
jquery在启动页面时,自动加载数据的实例
2018/01/22 jQuery
用Vue编写抽象组件的方法
2019/05/06 Javascript
javascript实现蒙版与禁止页面滚动
2020/01/11 Javascript
跟老齐学Python之for循环语句
2014/10/02 Python
Python聚类算法之凝聚层次聚类实例分析
2015/11/20 Python
Collatz 序列、逗号代码、字符图网格实例
2017/06/22 Python
python实现祝福弹窗效果
2019/04/07 Python
django实现将修改好的新模型写入数据库
2020/03/31 Python
英国领先的电视购物零售商:Ideal World
2019/03/18 全球购物
优秀的茶餐厅创业计划书
2014/01/03 职场文书
幼儿园小班评语大全
2014/04/17 职场文书
《乡下孩子》教学反思
2014/04/17 职场文书
品牌推广活动策划方案
2014/08/19 职场文书
国家税务局领导班子对照检查材料思想汇报
2014/10/04 职场文书
2014年个人工作总结模板
2014/12/15 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
2016医师资格考试考生诚信考试承诺书
2016/03/25 职场文书
如何在C++中调用Python
2021/05/21 Python
Mysql中调试存储过程最简单的方法
2021/06/30 MySQL
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript