如何在TensorFlow运行期间从RNN单元列表中选择RNN单元

时间:2018-04-11 01:40:12

标签: tensorflow machine-learning deep-learning recurrent-neural-network control-flow

我的网络需要一些独立的MultiRNNCells,现在存储为python列表multirnn_cells。并且在运行时期间,基于标量占位符i的值,我需要逐步执行相应的RNN单元multirnn_cells[i]。我怎么能这样做?

我在TensorFlow控制流文档中注意到tf.case。这是不合适的,因为tf.case期望元组函数返回张量而不是其他任何东西。

1 个答案:

答案 0 :(得分:0)

我不确定它是否可能,但即使它是,这将是一个非常肮脏的黑客。出于多种原因:

  • Tensorflow旨在在非常特定的环境中运行,例如GPU内存。因此,运行时只能使用数值和一些预定义的基本类型(如字符串)。它不适用于MultiRNNCell实例中的每个MultiRNNCell实例的任意python对象,这就是API强制您将张量作为输入传递并将张量作为输出返回的原因。

  • 张量流中的任何RNN单元格,尤其是MultiRNNCell factory 。它只是封装了在图形中创建单元格的方式,并且在构建图形之后通常是无用的。如果要在运行时使用它,即在运行时创建新单元格并展开图形,则可以快速找到OOM错误。如果您要使用已经实例化的RNN图层,则这些是正常的张量,而不是pe.short_name = '1024824' s2.structure_code = s1.father_code 单元格。

结论:我强烈建议你反对所描述的方法。