• tf.nn.rnn_cell.LSTMCell

    • 又名:tf.nn.rnn_cell.BasicLSTMCelltf.contrib.rnn.LSTMCell

    • 参见: tf.nn.rnn_cell.LSTMCell

    • 输出:

      • output:LSTM单元输出,与LSTM cell state的区别在于该输出又经过激活以及和一个sigmoid函数输出相乘。shape: [batch_size,num_units]
      • new_state:当前时间步上的LSTM cell stateLSTM output。使用数据结构LSTMStateTuple描述,LSTMStateTuple:(c,h),其中,h与上述的output完全相同。shape: ([batch_size,num_units],[batch_size,num_units])
    • 示例:

      batch_size=10
      embedding_size=300
      inputs=tf.Variable(tf.random_normal([batch_size,embedding_size]))
      previous_state=(tf.Variable(tf.random_normal([batch_size,128])),tf.Variable(tf.random_normal([batch_size,128])))
      lstmcell=tf.nn.rnn_cell.LSTMCell(128)
      outputs,states=lstmcell(inputs,previous_state)

      输出:

      outputs:
      <tf.Tensor 'lstm_cell/mul_2:0' shape=(10, 128) dtype=float32> states:
      LSTMStateTuple(c=<tf.Tensor 'lstm_cell/add_1:0' shape=(10, 128) dtype=float32>, h=<tf.Tensor 'lstm_cell/mul_2:0' shape=(10, 128) dtype=float32>)
  • tf.nn.rnn_cell.MultiRNNCell

    • 参见:tf.nn.rnn_cell.MultiRNNCell

    • 输出:

      • outputs: 最顶层cell的最后一个时间步的输出。shape:[batch_size,cell.output_size]
      • states:每一层的state,M层LSTM则输出M个LSTMStateTuple组成的Tuple。
    • 示例:

      batch_size=10
      inputs=tf.Variable(tf.random_normal([batch_size,128]))
      previous_state0=(tf.random_normal([batch_size,100]),tf.random_normal([batch_size,100]))
      previous_state1=(tf.random_normal([batch_size,200]),tf.random_normal([batch_size,200]))
      previous_state2=(tf.random_normal([batch_size,300]),tf.random_normal([batch_size,300]))
      num_units=[100,200,300]
      cells=[tf.nn.rnn_cell.LSTMCell(num_unit) for num_unit in num_units]
      mul_cells=tf.nn.rnn_cell.MultiRNNCell(cells)
      outputs,states=mul_cells(inputs,(previous_state0,previous_state1,previous_state2))

      输出:

      outputs:
      <tf.Tensor 'multi_rnn_cell_1/cell_2/lstm_cell/mul_2:0' shape=(10, 300) dtype=float32> states:
      (LSTMStateTuple(c=<tf.Tensor 'multi_rnn_cell_1/cell_0/lstm_cell/add_1:0' shape=(10, 100) dtype=float32>, h=<tf.Tensor 'multi_rnn_cell_1/cell_0/lstm_cell/mul_2:0' shape=(10, 100) dtype=float32>),
      LSTMStateTuple(c=<tf.Tensor 'multi_rnn_cell_1/cell_1/lstm_cell/add_1:0' shape=(10, 200) dtype=float32>, h=<tf.Tensor 'multi_rnn_cell_1/cell_1/lstm_cell/mul_2:0' shape=(10, 200) dtype=float32>),
      LSTMStateTuple(c=<tf.Tensor 'multi_rnn_cell_1/cell_2/lstm_cell/add_1:0' shape=(10, 300) dtype=float32>, h=<tf.Tensor 'multi_rnn_cell_1/cell_2/lstm_cell/mul_2:0' shape=(10, 300) dtype=float32>))
  • tf.nn.dynamic_rnn

    • 参见:tf.nn.dynamic_rnn

    • 输出:

      • outputs: 每个时间步上的LSTM输出;若有多层LSTM,则为每一个时间步上最顶层的LSTM的输出。shape: [batch_size,max_time,cell.output_size]
      • state:最后一个时间步的状态,该状态使用LSTMStateTuple结构输出;若有M层LSTM,则输出M个LSTMStateTuple。shape:单层LSTM输出:[batch_size,cell.output_size];M层LSTM输出:M个LSTMStateTuple组成的Tuple,这也即是说:outputs[:,-1,:]==state[-1,:,:]。
    • 示例:

      batch_size=10
      max_time=20
      data=tf.Variable(tf.random_normal([batch_size,max_time,128]))
      # create a BasicRNNCell
      rnn_cell = tf.nn.rnn_cell.BasicRNNCell(num_units=128) # defining initial state
      initial_state = rnn_cell.zero_state(batch_size,dtype=tf.float32) # 'outputs' is a tensor of shape [batch_size, max_time, cell_state_size]
      # 'state' is a tensor of shape [batch_size, cell_state_size]
      outputs, state = tf.nn.dynamic_rnn(cell=rnn_cell, inputs=data,
      initial_state=initial_state,
      dtype=tf.float32)

      输出:

      outpus:
      <tf.Tensor 'rnn_2/transpose_1:0' shape=(10, 20, 128) dtype=float32> state:
      <tf.Tensor 'rnn_2/while/Exit_3:0' shape=(10, 128) dtype=float32>
      batch_size=10
      max_time=20
      data=tf.Variable(tf.random_normal([batch_size,max_time,128]))
      # create 2 LSTMCells
      rnn_layers = [tf.nn.rnn_cell.LSTMCell(size) for size in [128, 256]] # create a RNN cell composed sequentially of a number of RNNCells
      multi_rnn_cell = tf.nn.rnn_cell.MultiRNNCell(rnn_layers) # 'outputs' is a tensor of shape [batch_size, max_time, 256]
      # 'state' is a N-tuple where N is the number of LSTMCells containing a
      # tf.contrib.rnn.LSTMStateTuple for each cell
      outputs, state = tf.nn.dynamic_rnn(cell=multi_rnn_cell,
      inputs=data,
      dtype=tf.float32)
      outputs:
      <tf.Tensor 'rnn_1/transpose_1:0' shape=(10, 20, 256) dtype=float32> state:
      (LSTMStateTuple(c=<tf.Tensor 'rnn_1/while/Exit_3:0' shape=(10, 128) dtype=float32>, h=<tf.Tensor 'rnn_1/while/Exit_4:0' shape=(10, 128) dtype=float32>),
      LSTMStateTuple(c=<tf.Tensor 'rnn_1/while/Exit_5:0' shape=(10, 256) dtype=float32>, h=<tf.Tensor 'rnn_1/while/Exit_6:0' shape=(10, 256) dtype=float32>))
  • tf.nn.bidirectional_dynamic_rnn

    • 参见:tf.nn.bidirectional_dynamic_rnn

    • 输出:

      • outputs:(output_fw,output_bw):前向cell+后向cell

        其中,output_fw、output_bw均为:[batch_size,max_time,cell.output_size]

      • state:(output_state_fw,output_state_bw):包含前向和后向隐状态组成的元组

        其中,output_state_fw、output_state_bw均为LSTMStateTuple。LSTMStateTuple:(c,h),分别为cell_state,hidden_output

  • tf.contrib.seq2seq.dynamic_decode

    • 输出:

      • final_outputs,包含rnn_output和sample_id,分别可用final_output.rnn_output和final_outputs.sample_id获取到。
      • final_state,可以从最后一个解码器状态获取alignments,alignments = tf.transpose(final_decoder_state.alignment_history.stack(), [1, 2, 0])
      • final_sequence_lengths

Tensorflow中循环神经网络及其Wrappers的更多相关文章

  1. tensorflow实现循环神经网络

    包括卷积神经网络(CNN)在内的各种前馈神经网络模型, 其一次前馈过程的输出只与当前输入有关与历史输入无关. 递归神经网络(Recurrent Neural Network, RNN)充分挖掘了序列数 ...

  2. 基于TensorFlow的循环神经网络(RNN)

    RNN适用场景 循环神经网络(Recurrent Neural Network)适合处理和预测时序数据 RNN的特点 RNN的隐藏层之间的节点是有连接的,他的输入是输入层的输出向量.extend(上一 ...

  3. tensorflow RNN循环神经网络 (分类例子)-【老鱼学tensorflow】

    之前我们学习过用CNN(卷积神经网络)来识别手写字,在CNN中是把图片看成了二维矩阵,然后在二维矩阵中堆叠高度值来进行识别. 而在RNN中增添了时间的维度,因为我们会发现有些图片或者语言或语音等会在时 ...

  4. tensorflow中的神经网络笔记

    1.NN----神经网络 2.CNN卷积神经网络 CNN网络一共有5个层级结构: 输入层 卷积层 激活层 池化层 全连接FC层 一.输入层 与传统神经网络/机器学习一样,模型需要输入的进行预处理操作, ...

  5. TensorFlow学习笔记(六)循环神经网络

    一.循环神经网络简介 循环神经网络的主要用途是处理和预测序列数据.循环神经网络刻画了一个序列当前的输出与之前信息的关系.从网络结构上,循环神经网络会记忆之前的信息,并利用之前的信息影响后面节点的输出. ...

  6. TensorFlow系列专题(七):一文综述RNN循环神经网络

    欢迎大家关注我们的网站和系列教程:http://panchuang.net/ ,学习更多的机器学习.深度学习的知识! 目录: 前言 RNN知识结构 简单循环神经网络 RNN的基本结构 RNN的运算过程 ...

  7. 4.5 RNN循环神经网络(recurrent neural network)

     自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html 1.1  RNN循环神经网络 ...

  8. TensorFlow——循环神经网络基本结构

    1.导入依赖包,初始化一些常量 import collections import numpy as np import tensorflow as tf TRAIN_DATA = "./d ...

  9. 用tensorflow实现自然语言处理——基于循环神经网络的神经语言模型

    自然语言处理和图像处理不同,作为人类抽象出来的高级表达形式,它和图像.声音不同,图像和声音十分直觉,比如图像的像素的颜色表达可以直接量化成数字输入到神经网络中,当然如果是经过压缩的格式jpeg等必须还 ...

随机推荐

  1. iOS 直播

    待解决: 貌似苹果规定10M以内的视频可以用RTMP,以上的必须用HLS  ? IOS非直播超过10分钟只能用hls,ios上有规定? 待尝试: 用Vitamion内核开发的可以自定义界面的视频播放器 ...

  2. erlang局域网内节点通信——艰难四步曲

    http://blog.chinaunix.net/uid-22566367-id-382011.html 在Programming Erlang这本书中,在写到第十章中,主要实现的是不同节点之间的通 ...

  3. eclipse 编写scala代码时提示computing additional info

    window->proference,把方框中那两个选项去掉不选,保存即可(或者只选择scala completions(java sources)),(只不过这么做之后就没有代码提示了)遇到这 ...

  4. 【38.46%】【codeforces 615E】Hexagons

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  5. android studio中文乱码各种情况的解决办法

    情况一:编辑器内的中文注释乱码. 解决办法:在界面的右下角找到 UTF-8 ,单击之,在弹出的列表中选中GBK 在弹出框内选中Reload 总结:导致这样的原因是你这个.java文件本身是GBK编码的 ...

  6. Spring Quartz定时任务如何获得ServletContext对象?

    servlet中可以得到ServletContext quartz调用servlet中的方法 完美解决了

  7. ActiveReports 报告应用程序教程 (2)---上市类报告

     大多数数字在报告中系统类报告列表.实例:客户名单.产品列表.设备清单.采购清单.优惠券.商品发票.工作人员清点等..根据报告,查看类别列表相对简单.但,分丰富,在清单类报表中能够增加数据统计.数 ...

  8. java静态方法Static

    静态方法  是 与类  而  不是与对象 相关联的.

  9. WPF文字描边的解决方法

    原文:WPF文字描边的解决方法  由于项目原因,今天研究了一下午WPF的文字描边,网上这方面的资料奇少,搞了半天才发现强大的WPF原来不直接支持文字描边啊.最后求助于MSDN,找到了方案,和大家分 ...

  10. Python 产生两个方法将不被所述多个随机数的特定范围内反复

    在最近的实验中进行.通过随机切割一定比例所需要的数据这两个部分.事实上这个问题的核心是生成随机数的问题将不再重复.递归方法,首先想到的,然后我们发现Python中竟然已经提供了此方法的函数,能够直接使 ...