tf.nn.bidirectional_dynamic_rnn和MultiRNNCell构建双向多层RNN(LSTM)

import tensorflow as tf

import numpy as np

X = np.random.randn(10, 5, 5) # 输入数据,批次、序列长度、样本维度

# 第二个样本的维度为3

X[1, 2:] = 0

stacked_rnn = []

stacked_bw_rnn = []

for i in range(3):

    stacked_rnn.append(tf.contrib.rnn.BasicLSTMCell(3))

    stacked_bw_rnn.append(tf.contrib.rnn.BasicLSTMCell(4))

mcell = tf.contrib.rnn.MultiRNNCell(stacked_rnn)

mcell_bw = tf.contrib.rnn.MultiRNNCell(stacked_bw_rnn)

# bioutputs, output_state_fw, output_state_bw = tf.contrib.rnn.stack_bidirectional_dynamic_rnn([mcell], [mcell_bw], X,

# dtype=tf.float64)

bioutputs, output_state_fw = tf.nn.bidirectional_dynamic_rnn(mcell, mcell_bw, X,

dtype=tf.float64)

print(bioutputs[0].shape)#(10, 5, 3),正向RNN

print(bioutputs[1].shape)#(10, 5, 4),反向RNN

print(len(output_state_fw))#2,正向RNN和反向RNN

print(len(output_state_fw[0]))#3,正向RNN有三个隐藏层

print(len(output_state_fw[1]))#3,反向RNN有三个隐藏层

print(output_state_fw[0][0].h.shape)#(10, 3),正向RNN中第一个LSTM隐藏层的h状态

print(output_state_fw[0][1].h.shape)#(10, 3),正向RNN中第二个LSTM隐藏层的h状态

print(output_state_fw[0][0].c.shape)#(10, 3),正向RNN中第一个LSTM隐藏层的c状态

print(output_state_fw[1][0].h.shape)#(10, 4),反向RNN中第一个LSTM隐藏层的h状态

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值