【发布时间】:2018-08-10 11:36:03
【问题描述】:
我是 TF 新手,我正在尝试在 NN 中实现多个 GRU 单元。但是,我无法识别 MultiRNN 单元的最终状态。
例如,当我使用以下代码时:
num_units = [128, 128]
tf.reset_default_graph()
x = tf.placeholder(tf.int32, [None, 134])
y = tf.placeholder(tf.int32, [None])
embedding_matrix = tf.Variable(tf.random_uniform([153, 128], -1.0, 1.0))
embeddings = tf.nn.embedding_lookup(embedding_matrix, x)
cells = [tf.contrib.rnn.GRUCell(num_units=n) for n in num_units]
cell_type = tf.contrib.rnn.MultiRNNCell(cells=cells, state_is_tuple=True)
cell_type = tf.contrib.rnn.DropoutWrapper(cell=cell_type, output_keep_prob=0.75)
_, (encoding, _) = tf.nn.dynamic_rnn(cell_type, embeddings, dtype=tf.float32)
最后一行代码的输出是:
(<tf.Tensor 'rnn/transpose_1:0' shape=(?, 134, 128) dtype=float32>, (<tf.Tensor 'rnn/while/Exit_3:0' shape=(?, 128) dtype=float32>, <tf.Tensor 'rnn/while/Exit_4:0' shape=(?, 128) dtype=float32>))
我认为格式是:
输出格式:(a,[b, c])
文档说输出格式为(输出,状态=[batch_size,cell.state_size])。但是,我无法确定其中哪一个是该存储单元的最终状态。我觉得应该是b。
另外,当我使用 4 个 GRU 单元运行上面的相同代码时:
num_units = [128, 128, 128, 128]
输出更加混乱:
输出格式:(a,[b, c, d, e])
我很困惑以上哪一个是最终的记忆状态,然后我可以进一步处理以进行损失计算和预测。
【问题讨论】:
标签: python tensorflow rnn