1. LSTM结构如下图

    一种常见的写法为如下,每个门的生成除了当前时刻的信息Xt和上一个时刻的输出ht-1外,还外加了一个小尾巴 Ct-1,即上一个时刻的状态。 但是这个写法其实太过复杂,而且不易理解LSTM中参数个数的计算

    而这样的写法其实是更合适。每个门的生成都与当前时刻输入和上一个时刻的输出有关。
    这三个门的激活函数都默认为sigmoid(hard_sigmoid),在keras中为用recurrent_activations参数表示。
    而输入Ct和输出信息ht里面使用的两个激活函数都默认为tanh,在keras中用activations表示。

LSTM参数计算方法可参考如下链接
https://blog.csdn.net/PIPIXIU/article/details/81014168
https://www.cnblogs.com/wushaogui/p/9176617.html

  1. ConvLSTM2D
    施雄健提出的ConvLSTM2D可以具备处理时空特性数据的能力。主要改动是将LSTM的部分gate由矩阵乘法运算改成卷积运算。这个具体参数和维度信息我后期会出一篇介绍。


keras根据这个思路将ConvLSTM2D进行了封装。
其封装过程中将三个门的激活函数都用一个recurrent_activation来表示,两个tanh激活函数也只用一个activations来指定。
也就是说,keras中,ConvLSTM2D使用了5个激活函数,但是只传入两个激活函数参数进行控制。
如果我们想对三个门和其他两个tanh激活函数,这5个激活函数分别使用不同的激活函数,如relu什么的,在keras里面就没有办法实现。

  1. 源码
    keras的ConvLSTM2D层在keras.layers中,其底层源码一般保存在你的anconda所安装的路径的layers里面,如下图。
    其中convolutional_recurrent就是ConvLSTM2D的源码。为了以防万一,备份一份,进行修改。

    将其打开,看544行和545行。默认为tanh和hard_sigmoid

    在727-731行为ConvLSTM2D的激活函数使用方式。是不是很相似,和上面的公式一模一样!
  2. 源码修改

这里将5个激活函数用5个参数来标准,这样就可以实现一对一精准修改啦
activation_i=‘tanh’,
activation_o=‘tanh’,
recurrent_activation_f=‘hard_sigmoid’,
recurrent_activation_i=‘hard_sigmoid’,
recurrent_activation_o=‘hard_sigmoid’,
前两激活函数为上面公式 4和6中所用。后三个激活函数表示三个门(遗忘门、输入门和输出门)所用激活函数



这两块是最基本的更改,除此之外,还要其他一些细节也要就行相应的修改。具体就不一一讲解了,都贴在下面了,有具体的行数可以对应修改。




修改完成之后,就修改好的convlutional_recurrent.py放进layers里面去(进行替换)。之后重启你的IDE,就可以看到修改后的效果啦.如下图。
亲测有效!!!

5. 注意事项。
修改好源码后,ConvLSTM2D? 会出现如下解释,似乎并没有改变。但是实际上注释已经和参数不一样啦。所以大家修改源码的时候,最好也将注释进行对应修改哦

另外,LSTM中的激活函数的改变,也可以相对应的方式进行源码修改。下面这个链接会给你启发的。
https://blog.csdn.net/silent56_th/article/details/73442391

另外,如果有需要修改后的源码的,可以私聊 !
欢迎转载,如转载,务必加上参考链接!

实现keras中ConvLSTM2D中recurrent_activation和activation的设置相关推荐

  1. keras系列︱Application中五款已训练模型、VGG16框架(Sequential式、Model式)解读(二)...

    引自:http://blog.csdn.net/sinat_26917383/article/details/72859145 中文文档:http://keras-cn.readthedocs.io/ ...

  2. python模型保存save_浅谈keras保存模型中的save()和save_weights()区别

    今天做了一个关于keras保存模型的实验,希望有助于大家了解keras保存模型的区别. 我们知道keras的模型一般保存为后缀名为h5的文件,比如final_model.h5.同样是h5文件用save ...

  3. keras提取模型中的某一层_Tensorflow笔记:高级封装——Keras

    前言 之前在<Tensorflow笔记:高级封装--tf.Estimator>中介绍了Tensorflow的一种高级封装,本文介绍另一种高级封装Keras.Keras的特点就是两个字--简 ...

  4. SELU︱在keras、tensorflow中使用SELU激活函数

    arXiv 上公开的一篇 NIPS 投稿论文<Self-Normalizing Neural Networks>引起了圈内极大的关注,它提出了缩放指数型线性单元(SELU)而引进了自归一化 ...

  5. keras系列︱Application中五款已训练模型、VGG16框架(Sequential式、Model式)解读(二)

    不得不说,这深度学习框架更新太快了尤其到了Keras2.0版本,快到Keras中文版好多都是错的,快到官方文档也有旧的没更新,前路坑太多. 到发文为止,已经有theano/tensorflow/CNT ...

  6. keras提取模型中的某一层_Keras做图片分类(四):迁移学习--猫狗大战实战

    本项目数据集来自kaggle竞赛,地址: https://www.kaggle.com/c/dogs-vs-cats-redux-kernels-edition/data 数据的训练集放在train文 ...

  7. Python 深度学习库 Keras 发布官方中文文档,这里有你需要了解的一切

    今年1月,Keras作者.谷歌AI研究员François Chollet在推特上发出召唤:讲中文的Keras用户们,是否有人愿意帮忙一起搞个Keras文档的中文版? 一个多月后,官方中文文档来了. K ...

  8. YOLOV3中Darknet中cfg文件说明和理解

    darknet 是由 C 和 CUDA 开发的,不需要配置其他深度学习的框架(如,tensorflow.caffe 等),支持 CPU 和 GPU 运算,而且安装过程非常简单. 1.cfg文件说明理解 ...

  9. win10html5无法播放,win10系统中网页中无法播放视频怎么办

    近日有win10系统用户要通过浏览器来打开网页观看视频的时候,却发现在网页中打开视频的时却无法播放,这是怎么回事呢,经过分析是由于Adobe Flash Player ActiveX插件未安装.版本过 ...

最新文章

  1. JAVA面试相关基础知识
  2. linux设置nexus开机自启动_在linux中使用nexus搭建maven私服
  3. 分布式入门,怎样用PyTorch实现多GPU分布式训练
  4. 证明:对于一棵二叉树,若度为2的结点有n2个,叶子结点有n0个,则n0=n2+1
  5. Python 2.x 即将终止支持,是时候和 Python 2 讲再见了
  6. @Target({ElementType.METHOD, ElementType.TYPE})
  7. 【小白冲冲冲!!!】补2:SLAM中最小二乘问题的引入及求解
  8. java多线程Thread.sleep方法用法详解
  9. 编译原理学习笔记 6.4 分程序结构语言的符号表组织
  10. notepad打开java乱码_notepad打开中文乱码
  11. 方法finalize()的应用
  12. php数据迁移脚本,Laravel中数据迁移与数据填充的详细步骤
  13. Tableau 网站流量分析案例之浏览量分析(二)
  14. 高通平台开发系列讲解(外设篇)高通平台Camera摄像头驱动移植
  15. 华为FreeBuds SE耳机有杂音异响的解决办法
  16. 新生宝宝奶粉喂养正确方法
  17. 深度linux禁用独立显卡,deepin显卡设置
  18. PLSql连接Oracle时提示TNS:无监听程序的解决方法
  19. packet tracer 用命令配置路由器
  20. 恢复被流氓病毒隐藏为系统文件的常规文件

热门文章

  1. c语言程序设计勘误,C语言程序设计勘误表.doc
  2. 灌篮高手怎么找回原来的服务器,灌篮高手手游异常登陆、封号补偿及领取方式介绍...
  3. 冒泡排序从左到右 从右到左方法实现(三种方法)
  4. c语言led左右循环程序,c语言编写程序,将led从左往右,再从右往左依次往返点亮...
  5. 服务器上reportqueue文件夹,Reportqueue文件夹有什么用?如何设置电脑不生成Reportqueue文件...
  6. 最近这只狗狗,真的很忙
  7. 电脑开机时,需选择启动项f1/f2/f5, 需按f1才能正常启动计算机
  8. RocketMQ架构原理解析(一):整体架构
  9. 随机森林实现及调参的R与Python对比——以泰坦尼克幸存者数据为例
  10. Securify之旅1之TOD漏洞剖析