示例1: 仅返回各个时刻的状态

import tensorflow.compat.v1 as tf
from keras.layers import ConvLSTM2D,TimeDistributed,Conv2D,Bidirectional
import numpy as npinputs_np = tf.convert_to_tensor(np.random.random((4,6,256,256,3)).astype(np.float32))  # shape = [5,6,10,10,3]conv1 = TimeDistributed(Conv2D(filters=10,kernel_size=(3,3),strides=(1,1)),input_shape=(6,256,256,3))(inputs_np)
lstm_outs= Bidirectional(ConvLSTM2D(filters=4,kernel_size=(3,3),strides=(1,1),padding='valid',activation='tanh',return_sequences=True),merge_mode=None)(conv1)with tf.Session() as sess:sess.run(tf.global_variables_initializer())lstm_out_1,lstm_out_2 = sess.run(lstm_outs)print(lstm_out_1.shape)

注意: 在Bidirectional中,参数merge_mode有5种选择["sum","mul","concat","ave",None],默认是“concat”模式,两个LSTM的输出沿channel维度串联。 选择None时,输出不会被结合,作为一个列表返回。

示例2:同时返回各个时刻的输出,与最后一个时刻的状态(注意输出的排序)

import tensorflow as tf
import numpy as np
import keras
from keras.layers import ConvLSTM2D,Bidirectionallstm_input = np.random.random((4,6,30,30,3)).astype(np.float32)
lstm_input = tf.convert_to_tensor(lstm_input)lstm_out1,lstm_out2,h1,c1,h2,c2 = Bidirectional(ConvLSTM2D(filters=1,kernel_size=[5,5],strides=(1,1),padding='valid',activation='relu',batch_input_shape=(-1,6,30,30,3),return_sequences=False,return_state=True),merge_mode=None)(lstm_input)with tf.Session() as sess:sess.run(tf.global_variables_initializer())lstm_out1,lstm_out2,h1,c1,h2,c2= sess.run([lstm_out1,lstm_out2,h1,c1,h2,c2])print(lstm_out1==h1)print(lstm_out2==h2)

可见,在双向LSTM中,如果输出LSTM的最后一个时刻的cell状态, 得到的输出的排序是:lstm_out1, lstm_out2,  h1, c1, h2, c2。

其中lstm_out1,h1,c1是前向LSTM的输出,lstm_out2,h2,c2是后向LSTM的输出。

参考:https://keras.io/zh/layers/wrappers/#bidirectional

keras 双向LSTM 简单示例相关推荐

  1. keras 双向LSTM

    keras 双向LSTM 双向LSTM利用到了未来的信息,在一些文本分类和序列预测问题上可以做到比单向LSTM更好的效果,BiLSTM与LSTM相比,多了一个反向计算,同时利用正向方向的数据计算最终输 ...

  2. RNN结构,双向LSTM,Transformer, BERT对比分析

    最近接到一些秋招面试,发现自己对于好多网络结构都模糊了,刚好最近在调研模型,就趁这个机会把之前的常见模型知识梳理一下. 主要参考文档: https://jalammar.github.io/illus ...

  3. 利用Keras开发用于分类问题的双向LSTM及与LSTM性能的比较

    双向LSTM是传统LSTM的扩展,可以提高序列分类问题的模型性能.在输入序列为时间问题的分类数据上,双向LSTM在输入序列上训练的模型是两个而不是一个LSTM.输入序列中的第一个是原始样本,第二个是输 ...

  4. 使用Keras进行深度学习:(六)LSTM和双向LSTM讲解及实践

    ###欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 介绍 长短期记忆(Long Short Term Memor ...

  5. keras实例学习-双向LSTM进行imdb情感分类

    源码:https://github.com/keras-team/keras/blob/master/examples/imdb_bidirectional_lstm.py 及keras中文文档 1. ...

  6. 基于keras的双层LSTM网络和双向LSTM网络

    1 前言 基于keras的双层LSTM网络和双向LSTM网络中,都会用到 LSTM层,主要参数如下: LSTM(units,input_shape,return_sequences=False) un ...

  7. tf.keras.layers.LSTM 示例

    import tensorflow as tf inputs = tf.random.normal([1, # batch2, # 时间步长(时间窗)3 # 输入维度 ]) print("输 ...

  8. 基于双向LSTM和迁移学习的seq2seq核心实体识别

    http://spaces.ac.cn/archives/3942/ 暑假期间做了一下百度和西安交大联合举办的核心实体识别竞赛,最终的结果还不错,遂记录一下.模型的效果不是最好的,但是胜在" ...

  9. [深度学习] PyTorch 实现双向LSTM 情感分析

    一  前言 情感分析(Sentiment Analysis),也称为情感分类,属于自然语言处理(Natural Language Processing,NLP)领域的一个分支任务,随着互联网的发展而兴 ...

最新文章

  1. LVS server 关键点
  2. Linux下的各文件夹的作用(转)
  3. html判断坐标,js判断鼠标位置是否在某个div中的方法
  4. 为Windows 服务器网络搬家
  5. SpringMVC ------使用POJO对象绑定请求参数值
  6. Android 关于fragment切换重新加载的解决分享给大家
  7. HDU 1022 Train Problem I stack 基础题
  8. 安卓kali安装mysql_安卓手机安装kali教程(root篇)
  9. iOS popViewController 失败
  10. 计算机键盘上的每一个按键编码,键盘按键修理
  11. python读取歌词文本,并显示在图片上,制作视频
  12. 新浪微博PC客户端(DotNet WinForm C# 版,C#调用新浪微博API代码,源码下载)—— 初探 (第二部分内置链接)
  13. 微信无法连接服务器1-500,GIF表情超过500kb无法添加到微信的解决方法
  14. 解决 Flutter 在 iOS 模拟器中运行卡住问题
  15. 手机和电脑如何连接无线投影仪
  16. iview 组件 设置头像更换
  17. 错误 1 error LNK1107: 文件无效或损坏: 无法在 0x320 处读取的————解决方案
  18. Python基础语法(十一)
  19. 【虹科案例】极高的精度水平——虹科数字化仪在大型强子对撞机机器保护系统中的应用
  20. linux创建用户张飞,Linux系统操作测试试题 部分

热门文章

  1. ajax传递数组_利用AJAX+PHP+MySQL实现不重新加载页面进行用户名已注册检测
  2. java 继承 this_java多重继承的this属于谁
  3. pythonide的作用_你知道Python神器IDE是什么吗?
  4. html5光标进去默认值消失,html点击input没有出现光标怎么办
  5. 初始化 数组 java_如何用Java初始化数组
  6. 编程c语言中,向上取整函数_C编程中的函数
  7. log4j:warn找不到_修复log4j WARN找不到记录器的附加程序,请正确初始化log4j系统
  8. android逐行写入读取_Android外部存储-读取,写入,保存文件
  9. shell学习之循环命令
  10. 使用PS从图片中抠取签章部分