Neural network 在2层GRU RNN分类器中使用最后一层或两层的输出?

Neural network 在2层GRU RNN分类器中使用最后一层或两层的输出?,neural-network,deep-learning,tensorflow,recurrent-neural-network,Neural Network,Deep Learning,Tensorflow,Recurrent Neural Network,我在用tensorflow做实验。我试图建立一个基于序列作为输入的分类系统。我建立了一个由2层常规RNN和1层GRU单元(tensorflow中的MultiRNNCell)组成的网络,然后我打算将softmax输出耦合到上一个GRU单元的隐藏状态。现在我注意到,当我从MultiRNNCell输出中获取最后一个状态时。它是我为GRU单元指定的隐藏层大小的3倍。我猜这是连接的所有3个RNN层的状态。这是正确的吗?如果是这样,将所有层的状态耦合到softmax输出是否有意义?或者我应该只在最后一个GR

我在用tensorflow做实验。我试图建立一个基于序列作为输入的分类系统。我建立了一个由2层常规RNN和1层GRU单元(tensorflow中的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))

您能否从您的示例中提供一些代码摘录,使其更易于回答?谢谢完成后,请参阅上面的更改以反映我的模型+代码的最后状态。这方面有什么进展吗?