3

我正在试验张量流。我正在尝试建立一个基于序列作为输入的分类系统。我创建了一个包含 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))
4

0 回答 0