我使用这些类在 Tensorflow (0.12) 中实现了一个标准 RNN
- tf.python.ops.rnn_cell.GRUCell
- tf.nn.dynamic_rnn
我对大门以及他们在期间采取的价值观感兴趣。不幸的是,函数 dynamic_rnn 不支持这一点,只是给出了“输出”和“状态”(最终的隐藏状态)。在 GRUCell 的代码中,门被称为“r”和“u”,用于重置和更新。
有没有一种聪明的方法可以随着时间的推移保存门的值,还是我必须编写自己的 GRU 单元?
谢谢!
我使用这些类在 Tensorflow (0.12) 中实现了一个标准 RNN
我对大门以及他们在期间采取的价值观感兴趣。不幸的是,函数 dynamic_rnn 不支持这一点,只是给出了“输出”和“状态”(最终的隐藏状态)。在 GRUCell 的代码中,门被称为“r”和“u”,用于重置和更新。
有没有一种聪明的方法可以随着时间的推移保存门的值,还是我必须编写自己的 GRU 单元?
谢谢!
我也试图找出同样的问题。我没有完整的解决方案,但也许我们可以互相帮助。
如果你这样做:names =[n.name for n in tf.get_default_graph().as_graph_def().node]
这将为您提供图表中所有节点名称的列表。对于 Rnn 来说,输出names应该看起来像这样
.
'RNN/Shape',
'RNN/strided_slice/stack',
'RNN/strided_slice/stack_1',
.
.
.
'RNN/transpose'
.
然后就可以get_operation_by_name用来获取你想要查看的操作了。
rnn_transpose=tf.get_default_graph().get_operation_by_name('RNN/transpose').outputs[0]
从那里你可以运行eval()你的常规sess和feed_dict
rnn_transpose.eval(session=sess,feed_dict =feed_dict)
这里的问题是现在我们必须找到图中的哪些操作对应于正确的门操作。