Tensorflow 警告:图表无法按拓扑顺序排序?
Tensorflow warning: The graph couldn't be sorted in topological order?
当我 运行 tensorflow
训练(使用自定义图形,闭源)时,它输出警告:
2018-10-03 14:29:24.352895: E tensorflow/core/grappler/optimizers/dependency_optimizer.cc:666] Iteration = 0, topological sort failed with message: The graph couldn't be sorted in topological order.
这是什么意思?什么可能导致此问题以及如何避免它?
更新: 作为记录,就我而言,尽管有此警告,tensorflow
仍然可以正常工作。所以我认为这只是意味着计算图中的循环比 tensorflow
预期的要多,不一定是无限循环。我通过避免在代码中使用手动循环来修复此问题,而是使用张量操作 (stack, concat, slice, reshape...
)
有向图的 topological ordering 是其顶点的排序方式,只要存在从顶点 u
到顶点 v
的边,顶点 u
在排序中位于顶点 v
之前。
这种排序对于每个有向 非循环 图都是可能的,但对于任意图则不行。您的图中很可能存在某种循环,阻止排序算法成功。因此,要走的路是搜索循环并以某种方式将其删除。
例如,考虑一个非常小的图,它有两个顶点 u
和 v
,以及两条边 u -> v
和 v -> u
。没有办法按照上面给出的要求对u和v进行排序。
如果没有关于您的代码的更多信息,很难确切地说出发生了什么。
如果您的 TF/CUDA 版本与您使用的 cudnn 版本不匹配,就会遇到此错误消息。在这种情况下,它似乎是一个兼容性错误,并不一定表明您在自己的代码或模型设计中存在错误。据我所知,它发生在 TF 1.10-1.14. Downgrading or upgrading TF (or cudnn) to the 之间应该摆脱它。请注意,虽然这是一条错误消息,但尚不清楚它是否真的会产生任何错误,因为模型似乎会正常训练(错误消息除外)。
当我 运行 tensorflow
训练(使用自定义图形,闭源)时,它输出警告:
2018-10-03 14:29:24.352895: E tensorflow/core/grappler/optimizers/dependency_optimizer.cc:666] Iteration = 0, topological sort failed with message: The graph couldn't be sorted in topological order.
这是什么意思?什么可能导致此问题以及如何避免它?
更新: 作为记录,就我而言,尽管有此警告,tensorflow
仍然可以正常工作。所以我认为这只是意味着计算图中的循环比 tensorflow
预期的要多,不一定是无限循环。我通过避免在代码中使用手动循环来修复此问题,而是使用张量操作 (stack, concat, slice, reshape...
)
有向图的 topological ordering 是其顶点的排序方式,只要存在从顶点 u
到顶点 v
的边,顶点 u
在排序中位于顶点 v
之前。
这种排序对于每个有向 非循环 图都是可能的,但对于任意图则不行。您的图中很可能存在某种循环,阻止排序算法成功。因此,要走的路是搜索循环并以某种方式将其删除。
例如,考虑一个非常小的图,它有两个顶点 u
和 v
,以及两条边 u -> v
和 v -> u
。没有办法按照上面给出的要求对u和v进行排序。
如果没有关于您的代码的更多信息,很难确切地说出发生了什么。
如果您的 TF/CUDA 版本与您使用的 cudnn 版本不匹配,就会遇到此错误消息。在这种情况下,它似乎是一个兼容性错误,并不一定表明您在自己的代码或模型设计中存在错误。据我所知,它发生在 TF 1.10-1.14. Downgrading or upgrading TF (or cudnn) to the