没有合适的资源?快使用搜索试试~ 我知道了~
首页使用keras实现孪生网络中的权值共享教程
资源详情
资源评论
资源推荐
使用使用keras实现孪生网络中的权值共享教程实现孪生网络中的权值共享教程
主要介绍了使用keras实现孪生网络中的权值共享教程,具有很好的参考价值,希望对大家有所帮助。一起跟随
小编过来看看吧
首先声明,这里的权值共享指的不是CNN原理中的共享权值,而是如何在构建类似于Siamese Network这样的多分支网络,且
分支结构相同时,如何使用keras使分支的权重共享。
Functional API
为达到上述的目的,建议使用keras中的Functional API,当然Sequential 类型的模型也可以使用,本篇博客将主要以
Functional API为例讲述。
keras的多分支权值共享功能实现,官方文档介绍
上面是官方的链接,本篇博客也是基于上述官方文档,实现的此功能。(插一句,keras虽然有中文文档,但中文文档已停更,
且中文文档某些函数介绍不全,建议直接看英文官方文档)
不共享参数的模型不共享参数的模型
以MatchNet网络结构为例子,为方便显示,将卷积模块个数减为2个。首先是展示不共享参数的模型,以便观看完整的网络结
构。
整体的网络结构如下所示:
代码包含两部分,第一部分定义了两个函数,FeatureNetwork()生成特征提取网络,ClassiFilerNet()生成决策网络或称度量网
络。网络结构的可视化在博客末尾。在ClassiFilerNet()函数中,可以看到调用了两次FeatureNetwork()函
数,keras.models.Model也被使用的两次,因此生成的input1和input2是两个完全独立的模型分支,参数是不共享的。
from keras.models import Sequential
from keras.layers import merge, Conv2D, MaxPool2D, Activation, Dense, concatenate, Flatten
from keras.layers import Input
from keras.models import Model
from keras.utils import np_utils
import tensorflow as tf
import keras
from keras.datasets import mnist
import numpy as np
from keras.utils import np_utils
from keras.callbacks import EarlyStopping, ModelCheckpoint, TensorBoard, ReduceLROnPlateau
from keras.utils.vis_utils import plot_model
# ---------------------函数功能区-------------------------
def FeatureNetwork():
"""生成特征提取网络"""
"""这是根据,MNIST数据调整的网络结构,下面注释掉的部分是,原始的Matchnet网络中feature network结构"""
inp = Input(shape = (28, 28, 1), name='FeatureNet_ImageInput')
models = Conv2D(filters=24, kernel_size=(3, 3), strides=1, padding='same')(inp)
models = Activation('relu')(models)
models = MaxPool2D(pool_size=(3, 3))(models)
models = Conv2D(filters=64, kernel_size=(3, 3), strides=1, padding='same')(models)
# models = MaxPool2D(pool_size=(3, 3), strides=(2, 2))(models)
models = Activation('relu')(models)
models = Conv2D(filters=96, kernel_size=(3, 3), strides=1, padding='valid')(models)
models = Activation('relu')(models)
models = Conv2D(filters=96, kernel_size=(3, 3), strides=1, padding='valid')(models)
models = Activation('relu')(models)
models = Flatten()(models)
models = Dense(512)(models)
models = Activation('relu')(models)
model = Model(inputs=inp, outputs=models)
return model
def ClassiFilerNet(): # add classifier Net
"""生成度量网络和决策网络,其实maychnet是两个网络结构,一个是特征提取层(孪生),一个度量层+匹配层(统称为决策层)"""
input1 = FeatureNetwork() # 孪生网络中的一个特征提取
input2 = FeatureNetwork() # 孪生网络中的另一个特征提取
for layer in input2.layers: # 这个for循环一定要加,否则网络重名会出错。
layer.name = layer.name + str("_2")
inp1 = input1.input
inp2 = input2.input
merge_layers = concatenate([input1.output, input2.output]) # 进行融合,使用的是默认的sum,即简单的相加
fc1 = Dense(1024, activation='relu')(merge_layers)
weixin_38698174
- 粉丝: 3
- 资源: 980
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- ExcelVBA中的Range和Cells用法说明.pdf
- 基于单片机的电梯控制模型设计.doc
- 主成分分析和因子分析.pptx
- 共享笔记服务系统论文.doc
- 基于数据治理体系的数据中台实践分享.pptx
- 变压器的铭牌和额定值.pptx
- 计算机网络课程设计报告--用winsock设计Ping应用程序.doc
- 高电压技术课件:第03章 液体和固体介质的电气特性.pdf
- Oracle商务智能精华介绍.pptx
- 基于单片机的输液滴速控制系统设计文档.doc
- dw考试题 5套.pdf
- 学生档案管理系统详细设计说明书.doc
- 操作系统PPT课件.pptx
- 智慧路边停车管理系统方案.pptx
- 【企业内控系列】企业内部控制之人力资源管理控制(17页).doc
- 温度传感器分类与特点.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0