在lasagne中自定义层,实现highway network layer
一、自定义lasagne层
比如我要定义一个Highway network层(关于highway network的知识在网上有很多)
1)首先需要继承lasagne的基础层:
![](/assets/blank.gif)
可以看到,自定义的层是继承了lasagne.layers.Layer.
2)然后定义Highway network所需要更新的参数值:
def __init__(self, incoming, h_w=lasagne.init.Normal(), h_b=lasagne.init.Normal(), t_w=lasagne.init.Normal(), t_b=lasagne.init.Normal(), **kwargs):super(HighwayNetwork2D,self).__init__(incoming, **kwargs)num_filters = self.input_shape[1]cnn_size = self.input_shape[2]self.h_w = self.add_param(h_w, (num_filters,cnn_size), name='h_w')self.h_b=self.add_param(h_b, (cnn_size,), name='h_b')self.t_w=self.add_param(t_w, (num_filters,cnn_size), name='t_w')self.t_b=self.add_param(t_b, (cnn_size,), name='t_b')
3)定义实际的操作,在get_output_for()这个函数中进行
def get_output_for(self, input, **kwargs):
# #batch_size
# batch_size=T.arange(input.shape[0])#H(x)=tanh(W*x+b)h_x=T.tanh(self.h_w*input+self.h_b)#t=sigmoid(W*x+b)t=T.nnet.sigmoid(self.t_w*input+self.t_b)#z=t*H(x)+(1-t)*xz=t*h_x+(1-t)*inputreturn z
4)最后定义输出时候的shape
def get_output_shape_for(self, input_shape):return (input_shape[0], input_shape[1], input_shape[2])
最后整一个自定义层的代码如下:
class HighwayNetwork2D(lasagne.layers.Layer):"""Highway network and use it has 3D1.z=t*H(x)+(1-t)*x2.H(x)=tanh(W*x+b)3.t=sigmoid(W*x+b)"""def __init__(self, incoming, h_w=lasagne.init.Normal(), h_b=lasagne.init.Normal(), t_w=lasagne.init.Normal(), t_b=lasagne.init.Normal(), **kwargs):super(HighwayNetwork2D,self).__init__(incoming, **kwargs)num_filters = self.input_shape[1]cnn_size = self.input_shape[2]self.h_w = self.add_param(h_w, (num_filters,cnn_size), name='h_w')self.h_b=self.add_param(h_b, (cnn_size,), name='h_b')self.t_w=self.add_param(t_w, (num_filters,cnn_size), name='t_w')self.t_b=self.add_param(t_b, (cnn_size,), name='t_b')def get_output_for(self, input, **kwargs):
# #batch_size
# batch_size=T.arange(input.shape[0])#H(x)=tanh(W*x+b)h_x=T.tanh(self.h_w*input+self.h_b)#t=sigmoid(W*x+b)t=T.nnet.sigmoid(self.t_w*input+self.t_b)#z=t*H(x)+(1-t)*xz=t*h_x+(1-t)*inputreturn zdef get_output_shape_for(self, input_shape):return (input_shape[0], input_shape[1], input_shape[2])
在lasagne中自定义层,实现highway network layer相关推荐
- TensorFlow2 手把手教你实现自定义层
TensorFlow2 手把手教你实现自定义层 概述 Sequential Model & Layer 案例 数据集介绍 完整代码 概述 通过自定义网络, 我们可以自己创建网络并和现有的网络串 ...
- java如何给一个链表定义和传值_如何在CUDA中为Transformer编写一个PyTorch自定义层...
如今,深度学习模型处于持续的演进中,它们正变得庞大而复杂.研究者们通常通过组合现有的 TensorFlow 或 PyTorch 操作符来发现新的架构.然而,有时候,我们可能需要通过自定义的操作符来实现 ...
- shortcut connection和highway network
CNN演化 先引入一张CNN结构演化图: 2012年AlexNet做出历史突破以来,直到GoogLeNet出来之前,主流的网络结构突破大致是网络更深(层数),网络更宽(神经元数).所以大家调侃深度学习 ...
- eclipse中自定义视图_如何在Windows中自定义文件夹视图设置
eclipse中自定义视图 While the Windows File Explorer seems somewhat simplified compared to older versions, ...
- 自定义报错返回_Keras编写自定义层--以GroupNormalization为例
1. Group Normalization 介绍 Batch Normalization(BN)称为批量归一化,可加速网络收敛利于网络训练.但BN的误差会随着批量batch的减小而迅速增大.FAIR ...
- DeepChem | PyTorch中用自定义层实现DeepChem的GraphConvLayer
PyTorch中用自定义层实现DeepChem的GraphConvLayer 环境 DeepChem 2.4 PyTorch 1.7.0 Python3.7.9 PyTorch中用自定义层实现Deep ...
- keras dense sigmoid_tf.keras一个存在自定义层时加载模型时的小坑
前言 Tensorflow在现在的doc里强推Keras,用过之后感觉真的很爽,搭模型简单,模型结构可打印,瞬间就能train起来不用自己写get_batch和evaluate啥的,跟用原生tenso ...
- 上下位机通讯协议_嵌入式中自定义协议的一些典型例子
关于自定义协议,对于会的人很简单,对于不会的人就摸不着头脑.下面分享一些关于自定义协议的笔记. 什么是协议? 协议这个概念我觉得挺杂的.就像嵌入式的概念一样,说法不一,比如大家常常争论FPGA是不是嵌 ...
- [pytorch、学习] - 4.4 自定义层
参考 4.4 自定义层 深度学习的一个魅力在于神经网络中各式各样的层,例如全连接层和后面章节将要用介绍的卷积层.池化层与循环层.虽然PyTorch提供了大量常用的层,但有时候我们依然希望自定义层.本节 ...
最新文章
- opencv ocr字符识别_OCR深度实践系列:图像预处理
- 中兴c600olt数据配置_2698元起中兴天机Axon 11发布 轻薄设计视频双防抖
- ./src/cuda.c:36: check_error: Assertion `0‘ failed
- 去哪面试都会问的HashMap
- t3修改计算机后就无法登录了,电脑更换系统后,用友T3登录不上了,一直显示这个,怎么处理,这个怎么解决...
- 台式计算机如何升级,台式电脑升级系统的方法
- 高性能服务器机柜,TS系列网络服务器机柜
- Linux中断(interrupt)子系统之二:arch相关的硬件封装层
- matlab接口与编程,精通MATLAB接口与编程
- join和子查询效率_SparkSQL连接查询中的谓词下推处理(上)
- Linux Ubuntu 内核升级
- 用‘slay’干掉某个用户的所有进程
- 最短路 Codeforces Round #103 (Div. 2) D. Missile Silos
- 兼容ie10以下版本的placeholder属性
- 怎样控制小程序tabbar图标大小_微信小程序tabBar的基本设置-微信小程序tabbar字体大小-微信小程序tabbar高度...
- react报错:Uncaught Error: Element type is invalid: expected a string (for built-in components) or a ..
- CSAPP拆弹实验/炸弹实验
- 滑铁卢计算机竞赛福建考点,数学与计算机竞赛界的“四大天王”,你敢来挑战么?...
- 基于K-Means的银行客户数据集分析与处理
- [禅悟人生]自卑裹足不前, 就无法成就自己