我正在尝试使用tensorflow . 我正在尝试 Build 一个基于序列作为输入的分类系统 . 我 Build 了一个由2层常规RNN和1层GRU单元组成的网络(张量流中的MultiRNNCell)然后我打算将softmax输出耦合到我最后一个GRU单元的隐藏状态 . 现在我注意到当我从MultiRNNCell输出中取出最后一个状态时 . 它的大小是我为GRU单元指定的隐藏层的3倍 . 我猜这是连接的所有3个RNN层的状态 . 它是否正确?如果是这样,将所有层的状态耦合到softmax输出是否有意义?或者我应该只在最后一个GRU单元格的状态下执行此操作 .

我在一些小玩具数据集上测试了这两个案例,算法似乎在两种情况下都学习但我不确定在真实情况下最有意义的是什么 .

一些代码我如何指定RNN模型

cell = rnn_cell.MultiRNNCell([rnn_cell.BasicRNNCell(RNNlayer_size)]*2  +[rnn_cell.GRUCell(RNNlayer_size)])
outputs, states = rnn.rnn(cell, inputs,dtype = tf.float32)

## couple last stat to a softmax classifier
W = tf.Variable(tf.zeros([RNNlayer_size*3,output_size]))
b = tf.Variable(tf.zeros([output_size]))
y_ = tf.placeholder("float", shape=[None, output_size])
y = tf.nn.softmax(tf.nn.xw_plus_b(states[-1],W, b))