两个深度学习模型进行融合Concatenate

2023-11-10

下面是两个深度学习模型的融合代码:
具体需要哪两个模型进行融合需要自己替换成相应的模型层

model1 = Sequential()
#input 
model1.add(Dense(32, input_shape=(NUM_FEAT1,1)))
model1.add(Activation("elu"))
model1.add(Dropout(0.5))
model1.add(Dense(16))
model1.add(Activation("elu"))
model1.add(Dropout(0.25))
model1.add(Flatten())

model2 = Sequential()
#input 
model2.add(Dense(32, input_shape=(NUM_FEAT1,1)))
model2.add(Activation("elu"))
model2.add(Dropout(0.5))
model2.add(Dense(16))
model2.add(Activation("elu"))
model2.add(Dropout(0.25))
model2.add(Flatten())

merged = Concatenate()([model1.output,model2.output])
z = Dense(128, activation="relu")(merged)
z = Dropout(0.25)(z)
z = Dense(1024, activation="relu")(z)
z = Dense(1, activation="sigmoid")(z)

model = Model(inputs=[model1.input, model2.input], outputs=z)

model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])

model.fit([x_train1,x_train2],y_train, batch_size=100, epochs=100, verbose=2)

例如:
下面是Conv1D和基于Attention机制的LSTM融合的keras结构:

def build_model(input):
    model1 = Sequential()
    model1.add(Conv1D(filters=24, kernel_size=2, padding='same', activation='relu', kernel_initializer="glorot_uniform",
                      input_shape=(input[1], input[0])))
    model1.add(MaxPooling1D(pool_size=2, padding='valid'))
    model1.add(Flatten())

    model2 = Sequential()
    model2.add(LSTM(64, return_sequences=True, input_shape=(input[1], input[0])))
    model2.add(Attention(units=32))         #对比不加attention  加上attention机制的RMSE更低,但是时间会更长一点
    model2.add(Dense(32))
    model2.add(Flatten())


    merged = Concatenate()([model1.output, model2.output])
    z = Dense(32)(merged)
    z = Dense(1)(z)

    model = Model(inputs=[model1.input, model2.input], outputs=z)
    model.compile(loss='mae', optimizer='adam', metrics=['mae'])

    return model

model = build_model([8,12,1])
print(model.summary())      #查看模型概述


#模型训练 
history = model.fit([train_X,train_X], train_y, epochs=100, batch_size=128, validation_data=([test_X,test_X],test_y), verbose=2,
                    shuffle=False, callbacks=[timecallback()])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

两个深度学习模型进行融合Concatenate 的相关文章

随机推荐

  • MySQL-数据类型

    MySQL 数据类型 数值类型 bit tinyint float decimal 字符串和文本类型 char varchar blob text 日期和时间类型 enum 枚举类型 set 集合类型 数值类型 数据类型 说明 bit M
  • 色彩搭配

    颜色搭配 http www icoa cn a 512 html 渐变色 http www mgzxzs com tmtbzxjc 2366 html 做设计的朋友 特别是新手 很难掌握色彩的搭配 比如我自己就有时候调的颜色感觉不太舒服 从
  • Python 基础知识3 运算符

    Python运算符 a 21 b 10 c 0 c a print c c a print c c a print c c 2 c 3 取c的三次方 print c c 2 c a 取余 print c c a 向下取整 print c 位
  • 武汉大学计算机假期有什么活动,关于2018年“中秋节、国庆节”学生放假的通知...

    各学生班 根据学校 关于2018年部分节假日安排的通知 2018年中秋节放假时间为 9月24日放假 与周末连休 国庆节放假调休时间为 10月1日 10月7日 在放假期间 各位同学要严格按照学校和学院的要求 确保人身 财产和交通安全 愉快地度
  • R语言错误信息及相关解决方法

    原创 黄小仙 Error object of type closure is not subsettable 对象大于被取子集 看看对象是不是空的 有时候文件路径或者名称不对 数据并没有导入成功 Remove duplicates befo
  • orcad capture学习笔记---4.生成网表

    1 进行DRC检查完成之后就可以生产网表 操作如下 图1 图2 2 然后在Rreate Netliset界面下先勾选 Create PCB Editor Netlist 软件默认这项是勾选上的 然后网表会默认保存在allegro文件夹下 如
  • 实战案列分析:Crakeme01

    往期推荐 实战 AliCrackme 实战案列 AntiDebug self debugging反调试 轮循检测技术 需要样本的朋友 可以 加入此处即可打包获取 先运行软件 观察程序特点 步骤与第八节实战相似 都是运用IDA静态调试与动态调
  • conda init 关闭和重启shell_Linux关机重启帮助指令

    带着问题来学习 打破Windows的束缚 关机指令有哪些 linux系统运行级别 获取帮助的方法 上级操作练习 使用shutdown命令设定30min后关机 重启电脑 用help查找repo指令的帮助 1 关机重启指令 关机重启指令有 sh
  • QPalette 设置控件颜色

    添加头文件 include
  • 【C++入门学习】——MainWindow

    1 未写入代码时窗口如下 2 添加菜单栏前需要增加的头文件 include
  • Linux安装宝塔(Bt-Panel),修改用户名或密码,查看面板入口

    以下主机商必看 开端口教程 不开不能用 腾讯云 https www bt cn bbs thread 1229 1 1 html 腾讯云2折起 阿里云 https www bt cn bbs thread 2897 1 1 html 阿里云
  • 解决STM32F0/F1内部FLASH写操作导致中断程序无法响应的问题

    必看链接 试图搞懂MDK程序下载到flash 二 分散加载文件scatter 参考链接 STM32F10x单片机Flash写操作导致中断不响应问题 最近本人在写STM32F0系列的FLASH写操作的代码时突然发现一个问题 MCU往内部FLA
  • android 打开file not found,在Android中打开资源时的java.io.FileNotFoundException

    AssetManager assetManager getApplicationContext getAssets String files null try files assetManager list imgs catch IOExc
  • 常用运放电路计算与分析

    常用运放电路计算与分析 1 运放的符号表示 2 集成运算放大器的技术指标 1 开环差模电压放大倍数 开环增益 大 Ao Ad Vo V V 107 1012倍 2 共模抑制比高 KCMRR 100db以上 3 输入电阻大 ri gt 1MW
  • 详解三相直流无刷电机驱动器硬件原理图

    三相直流无刷电机是指具有三相的绕组 无电刷和换向器 或集电环 的电机 并采用直流电经过逆变电路进行驱动的电机 与传统的 有刷直流电机相比 直流无刷电机采用了电子换向取代有刷电机的机构换向 取消了电刷和换向器 并将原有 有刷电机 中的定转子颠
  • 大火的AIGC是什么?能用到工作中哪些地方?

    一 AIGC是什么 AIGC 即Artificial Intelligence Generated Content 中文译为人工智能生成内容 简单来说 就是以前本来需要人类用思考和创造力才能完成的工作 现在可以利用人工智能技术来替代我们完成
  • codeblock出现“64位Windows不兼容”问题的解决办法探究

    注 Codeblocks出现该问题暂时还没有根除的解决办法 并且没有明确的解决办法 该篇文章仅提供一些解决问题的思路 原因分析 在网上有不少网友遇见此类问题 但是并没有给出具体的解决方案 但是在解决该问题的案例中 此问题的最大可能原因为 电
  • Java 运算符中 前++ 和后++ 的区别详解

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 一 前 和 后 的区别 具体在代码中给出 Test public void test3 前 先自加1 再运算 int a 10 int
  • 2022-07-14 mysqldump备份和还原数据库

    今天生产环境要将数据库迁移到其它机器上 所以打算用mysqldump进行数据库的备份和还原工作 1 备份 在linux的mysql的bin下执行语句 mysqldump uroot p webdata gt webdata sql 2 还原
  • 两个深度学习模型进行融合Concatenate

    下面是两个深度学习模型的融合代码 具体需要哪两个模型进行融合需要自己替换成相应的模型层 model1 Sequential input model1 add Dense 32 input shape NUM FEAT1 1 model1 a