我正在尝试使用tensorflow。我试图建立一个基于序列作为输入的分类系统。我建立了一个由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))