一、自定义lasagne层

    比如我要定义一个Highway network层(关于highway network的知识在网上有很多)

1)首先需要继承lasagne的基础层:


可以看到,自定义的层是继承了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相关推荐

  1. TensorFlow2 手把手教你实现自定义层

    TensorFlow2 手把手教你实现自定义层 概述 Sequential Model & Layer 案例 数据集介绍 完整代码 概述 通过自定义网络, 我们可以自己创建网络并和现有的网络串 ...

  2. java如何给一个链表定义和传值_如何在CUDA中为Transformer编写一个PyTorch自定义层...

    如今,深度学习模型处于持续的演进中,它们正变得庞大而复杂.研究者们通常通过组合现有的 TensorFlow 或 PyTorch 操作符来发现新的架构.然而,有时候,我们可能需要通过自定义的操作符来实现 ...

  3. shortcut connection和highway network

    CNN演化 先引入一张CNN结构演化图: 2012年AlexNet做出历史突破以来,直到GoogLeNet出来之前,主流的网络结构突破大致是网络更深(层数),网络更宽(神经元数).所以大家调侃深度学习 ...

  4. eclipse中自定义视图_如何在Windows中自定义文件夹视图设置

    eclipse中自定义视图 While the Windows File Explorer seems somewhat simplified compared to older versions, ...

  5. 自定义报错返回_Keras编写自定义层--以GroupNormalization为例

    1. Group Normalization 介绍 Batch Normalization(BN)称为批量归一化,可加速网络收敛利于网络训练.但BN的误差会随着批量batch的减小而迅速增大.FAIR ...

  6. DeepChem | PyTorch中用自定义层实现DeepChem的GraphConvLayer

    PyTorch中用自定义层实现DeepChem的GraphConvLayer 环境 DeepChem 2.4 PyTorch 1.7.0 Python3.7.9 PyTorch中用自定义层实现Deep ...

  7. keras dense sigmoid_tf.keras一个存在自定义层时加载模型时的小坑

    前言 Tensorflow在现在的doc里强推Keras,用过之后感觉真的很爽,搭模型简单,模型结构可打印,瞬间就能train起来不用自己写get_batch和evaluate啥的,跟用原生tenso ...

  8. 上下位机通讯协议_嵌入式中自定义协议的一些典型例子

    关于自定义协议,对于会的人很简单,对于不会的人就摸不着头脑.下面分享一些关于自定义协议的笔记. 什么是协议? 协议这个概念我觉得挺杂的.就像嵌入式的概念一样,说法不一,比如大家常常争论FPGA是不是嵌 ...

  9. [pytorch、学习] - 4.4 自定义层

    参考 4.4 自定义层 深度学习的一个魅力在于神经网络中各式各样的层,例如全连接层和后面章节将要用介绍的卷积层.池化层与循环层.虽然PyTorch提供了大量常用的层,但有时候我们依然希望自定义层.本节 ...

最新文章

  1. opencv ocr字符识别_OCR深度实践系列:图像预处理
  2. 中兴c600olt数据配置_2698元起中兴天机Axon 11发布 轻薄设计视频双防抖
  3. ./src/cuda.c:36: check_error: Assertion `0‘ failed
  4. 去哪面试都会问的HashMap
  5. t3修改计算机后就无法登录了,电脑更换系统后,用友T3登录不上了,一直显示这个,怎么处理,这个怎么解决...
  6. 台式计算机如何升级,台式电脑升级系统的方法
  7. 高性能服务器机柜,TS系列网络服务器机柜
  8. Linux中断(interrupt)子系统之二:arch相关的硬件封装层
  9. matlab接口与编程,精通MATLAB接口与编程
  10. join和子查询效率_SparkSQL连接查询中的谓词下推处理(上)
  11. Linux Ubuntu 内核升级
  12. 用‘slay’干掉某个用户的所有进程
  13. 最短路 Codeforces Round #103 (Div. 2) D. Missile Silos
  14. 兼容ie10以下版本的placeholder属性
  15. 怎样控制小程序tabbar图标大小_微信小程序tabBar的基本设置-微信小程序tabbar字体大小-微信小程序tabbar高度...
  16. react报错:Uncaught Error: Element type is invalid: expected a string (for built-in components) or a ..
  17. CSAPP拆弹实验/炸弹实验
  18. 滑铁卢计算机竞赛福建考点,数学与计算机竞赛界的“四大天王”,你敢来挑战么?...
  19. 基于K-Means的银行客户数据集分析与处理
  20. [禅悟人生]自卑裹足不前, 就无法成就自己

热门文章

  1. 边缘处理(边界处理)
  2. html5 canvas画粗线时座标指定注意事项
  3. 04ssm_Mybaits关联映射和缓存机制
  4. excel导出时数据量过大怎么办
  5. 数据仓库之建模 维度表 事实表 维度建模三种模式 如何维度建模缓慢变化的维度 建模体系
  6. (排行榜)2008第三季度中国外包企业排行(易观国际)
  7. STM32单片机下载调试解决方案 e-link32
  8. 使用Unity3D 自主实战开发的赛车游戏实例
  9. 在短信骚扰方面不做逆来顺受
  10. cnzz广告管家使用心得