(一)简述---承接上文---基于pytorch实现HighWay Networks之Train Deep Networks

上文已经介绍过Highway Netwotrks提出的目的就是解决深层神经网络训练困难的问题,以及简单的解释了为什么深层神经网络会出现梯度消失和梯度爆炸的问题,这里详细的介绍一些Highway Networks以及使用pytorch实现Highway Networks。

(二)Highway Networks

  • 什么是Highway Networks?

    Highway Netowrks是允许信息高速无阻碍的通过各层,它是从Long Short Term Memory(LSTM) recurrent networks中的gate机制受到启发,可以让信息无阻碍的通过许多层,达到训练深层神经网络的效果,使深层神经网络不在仅仅具有浅层神经网络的效果。

  • Notation

    (.)操作代表的是矩阵按位相乘

    sigmoid函数:sigmoid= 1/(1+e^(-x) )

  • Highway Networks formula

    普通的神经网络由L层组成,用H将输入的x转换成y,忽略bias。H是非线性激活函数,但是,通常呀可以采用其他的形式,像convolutional和recuerrent。

对于Highway Networks,增加了两个非线性转换层,T(transform gate) 和 C(carry gate),T表示输入信息被转换的部分,C表示的是原始信息x保留的部分 ,其中 T=sigmoid(wx + b)

为了计算方便,这里定义了 C = 1 - T

需要注意的是x, y, H, T的维度必须一致,几个公式相比,公式3要比公式1灵活的多,可以考虑一下特殊的情况,T= 0的时候,y = x,原始信息全部保留,T = 1的时候,Y = H,原始信息全部转换,不在保留原始信息,仅仅相当于一个普通的神经网络。

  • 搭建Highway Networks策略

    上文已经说过,x,y,H,T的维度必须是一致的,这里提供了两种策略:

    采用sub-sampling或者zero-padding(下采样或者是补零的操作)。

    使用普通的线性层改变维度,不使用Highway。

  • 个人实验结果

    在相同的参数情况下测试了不同深度的神经网络对于情感分析5分类任务的准确率,从图中可以看出浅层神经网络对比变化不是很明显,5层的话就有了一些变化,准确率相差了一个点左右。由于硬件资源,更加深的深层神经网络还没有测试。

  • Paper 实验结果

    从论文的实验结果来看,当深层神经网络的层数能够达到50层甚至100层的时候,loss也能够下降的很快,犹如几层的神经网络一样,与普通的深层神经网络形成了鲜明的对比。

  • Demo

    在pytorch上实现了多个Highway Networks,其中包括单纯的Highway Networks,以及convolution Highway Networks、LSTm Highway Networks以及Highway Networks的一些变种。

    Highway Networks implement in pytorch

References

Notation

欢迎转载、转载请注明出处。http://www.cnblogs.com/bamtercelboo/p/7581364.html

基于pytorch实现HighWay Networks之Highway Networks详解的更多相关文章

  1. 基于python中staticmethod和classmethod的区别(详解)

    例子 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 class A(object):   def foo(self,x):     print "executing foo ...

  2. 基于Python对象引用、可变性和垃圾回收详解

    基于Python对象引用.可变性和垃圾回收详解 下面小编就为大家带来一篇基于Python对象引用.可变性和垃圾回收详解.小编觉得挺不错的,现在就分享给大家,也给大家做个参考. 变量不是盒子 在示例所示 ...

  3. 基于Docker搭建Maven私服Nexus,Nexus详解

    备注:首先在linux环境安装Java环境和Docker,私服需要的服务器性能和硬盘存储要高一点,内存不足可能到时启动失败,这里以4核8GLinux服务器做演示 一:基于Docker安装nexus3 ...

  4. Squeeze-and-Excitation Networks(SENet)详解

    一.SENet简介 Squeeze-and-Excitation Networks(SENet)是由自动驾驶公司Momenta在2017年公布的一种全新的图像识别结构,它通过对特征通道间的相关性进行建 ...

  5. PyTorch 计算机视觉的迁移学习教程代码详解 (TRANSFER LEARNING FOR COMPUTER VISION TUTORIAL )

    PyTorch 原文: https://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html 参考文章: https://www ...

  6. 基于PBOC电子钱包的圈存过程详解

    基于pboc的电子钱包的圈存过程,供智能卡行业的开发人员参考 一. 圈存 首先终端和卡片有一个共同的密钥叫做圈存密钥:LoadKey   (Load即圈存的意思,unLoad,是圈提的意思) 假设Lo ...

  7. 基于 Web 的远程 Terminal 模拟器安装使用详解

    http://lzw.me/a/shellinabox.html 一.Shellinabox 简介 Shellinabox 是一个基于 web 的终端模拟器,采用 C 语言编写,使用 Ajax 与后端 ...

  8. 基于PHP+Ajax实现表单验证的详解

    一,利用键盘响应,在不刷新本页面的情况下验证表单输入是否合法 用户通过onkeydown和onkeyup事件来触发响应事件.使用方法和onclick事件类似.onkeydown表示当键盘上的键被按下时 ...

  9. 基于C语言EOF与getchar()的使用详解

    转自:http://www.jb51.net/article/36848.htm   大师级经典的著作,要字斟句酌的去读,去理解.以前在看K&R的The C Programming Langu ...

  10. 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯云容器服务团队 源码为 k8s v1.6.1 版本,github 上对应的 commit id 为 b0b7a323cc5a4a ...

随机推荐

  1. Python基础学习篇章二

    一. Python如何运行程序 1. 在交互模式下编写代码 最简单的运行Python程序的方法是在Python交互命令行中输入程序.当然有很多方法可以开始这样的命令行,比如IDE,系统终端.如果你已经 ...

  2. Linux的安装和使用技巧

    LinuxCentOs开始设置一个普通的用户,如果想进入root用户,可以su然后设置密码,然后第二次再次输入su,然后输入相同的密码就可以进去了 有很多命令需要在root下才能执行,但是在创建时却是 ...

  3. Python内置函数(54)——callable

    英文文档: callable(object) Return True if the object argument appears callable, False if not. If this re ...

  4. iot前台开发环境:请求示例

    参考链接:http://www.cnblogs.com/keatkeat/category/872790.html 编辑->update保存 一.typescipt import { Injec ...

  5. Linux上 ps 命令的用法

    ps a 显示现行终端机下的所有程序,包括其他用户的程序.2)ps -A 显示所有程序. 3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示. 4)ps -e 此 ...

  6. Scala:枚举类型的用法

    枚举定义: /** * 场景类型的划分分类:划分出7类 */ object BuildingCalibrateHeightType extends Enumeration { type Buildin ...

  7. UVA-10037 Bridge---过河问题进阶版(贪心)

    题目链接: https://vjudge.net/problem/UVA-10037 题目大意: N个人夜里过河,总共只有一盏灯,每次最多过两个人,然后需要有人将灯送回 才能继续过人,每个人过桥都需要 ...

  8. SSH端口转发(本地转发、远程转发、动态转发)

    SSH端口转发   一:什么是端口转发?     SSH 会自动加密和解密所有SSH 客户端与服务端之间的网络数据.但是,SSH 还能够将其他TCP 端口的网络数据通过SSH 链接来转发,并且自动提供 ...

  9. javaIO流实现文件拷贝

    package com.java.demo; import java.io.*; public class CopyDemo { public static void main(String[] ar ...

  10. [LeetCode] 01 Matrix 零一矩阵

    Given a matrix consists of 0 and 1, find the distance of the nearest 0 for each cell. The distance b ...