如何在 TensorFlow 中实现递归神经网络?
How can I implement a recursive neural network in TensorFlow?
是否有某种方法可以使用 TensorFlow 实现类似于 [Socher et al. 2011] 中的递归神经网络?
请注意,这与 TensorFlow 很好地支持的递归神经网络不同。
不同的是,网络不是复制成线性操作序列,而是复制成树状结构。
我想象我可以使用 While
op 为我的数据集的每个条目构造类似于树数据结构的广度优先遍历。
也许可以在 TensorFlow 中将树遍历实现为新的 C++ 操作,类似于 While
(但更通用)?
目前,这些模型很难在 TensorFlow 中高效、干净地实现,因为图形结构取决于输入。这也使得进行小批量处理变得非常困难。可以使用您提到的 while 循环之类的东西,但是要干净利落地做到这一点并不容易。
您可以为每个示例构建一个新图表,但这会很烦人。如果对于给定的输入大小,您可以枚举相当少的可能图,您可以 select 在它们之间并一次构建它们,但这对于更大的输入是不可能的。
您还可以使用复杂的 tf.gather 逻辑和掩码在图表中路由示例,但这也可能是一个巨大的痛苦。
最终,为每个示例动态构建图表可能是最简单的,并且将来可能会有支持更好的即时样式执行的替代方案。但是从 v0.8 开始,我预计这会有点烦人,并且会像 Yaroslav 在他的评论中提到的那样引入一些开销。
编辑:既然我回答了,这里是一个使用带有 while 循环的静态图的例子:https://github.com/bogatyy/cs224d/tree/master/assignment3
我不确定它与像这样的模型的自定义 C++ 代码相比性能如何,尽管原则上它可以批处理。
你猜对了,你可以用tf.while_loop
和tf.cond
来表示静态图中的树结构。更多信息:
https://github.com/bogatyy/cs224d/tree/master/assignment3
在我的评估中,与为每棵新树重新构建图表相比,它使训练速度提高了 16 倍。
是否有某种方法可以使用 TensorFlow 实现类似于 [Socher et al. 2011] 中的递归神经网络? 请注意,这与 TensorFlow 很好地支持的递归神经网络不同。 不同的是,网络不是复制成线性操作序列,而是复制成树状结构。
我想象我可以使用 While
op 为我的数据集的每个条目构造类似于树数据结构的广度优先遍历。
也许可以在 TensorFlow 中将树遍历实现为新的 C++ 操作,类似于 While
(但更通用)?
目前,这些模型很难在 TensorFlow 中高效、干净地实现,因为图形结构取决于输入。这也使得进行小批量处理变得非常困难。可以使用您提到的 while 循环之类的东西,但是要干净利落地做到这一点并不容易。
您可以为每个示例构建一个新图表,但这会很烦人。如果对于给定的输入大小,您可以枚举相当少的可能图,您可以 select 在它们之间并一次构建它们,但这对于更大的输入是不可能的。
您还可以使用复杂的 tf.gather 逻辑和掩码在图表中路由示例,但这也可能是一个巨大的痛苦。
最终,为每个示例动态构建图表可能是最简单的,并且将来可能会有支持更好的即时样式执行的替代方案。但是从 v0.8 开始,我预计这会有点烦人,并且会像 Yaroslav 在他的评论中提到的那样引入一些开销。
编辑:既然我回答了,这里是一个使用带有 while 循环的静态图的例子:https://github.com/bogatyy/cs224d/tree/master/assignment3 我不确定它与像这样的模型的自定义 C++ 代码相比性能如何,尽管原则上它可以批处理。
你猜对了,你可以用tf.while_loop
和tf.cond
来表示静态图中的树结构。更多信息:
https://github.com/bogatyy/cs224d/tree/master/assignment3
在我的评估中,与为每棵新树重新构建图表相比,它使训练速度提高了 16 倍。