Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neural network 如何从TensorFlow图中删除节点?_Neural Network_Tensorflow - Fatal编程技术网

Neural network 如何从TensorFlow图中删除节点?

Neural network 如何从TensorFlow图中删除节点?,neural-network,tensorflow,Neural Network,Tensorflow,我需要编写一个程序,其中TensorFlow节点的一部分需要保持在那里存储一些全局信息(主要是变量和摘要),而另一部分需要在程序运行时进行更改/重组 我现在的做法是在每次迭代中重建整个图。但是,在每次迭代中,我必须手动从/到检查点文件或numpy数组存储和加载这些信息,这使得我的代码非常混乱并且容易出错 我想知道是否有办法删除/修改我的计算图的一部分,而不是重置整个图?改变TensorFlow图的结构实际上是不可能的。具体来说,没有一种干净的方法可以从图中删除节点,因此删除一个子图并添加另一个子

我需要编写一个程序,其中TensorFlow节点的一部分需要保持在那里存储一些全局信息(主要是变量和摘要),而另一部分需要在程序运行时进行更改/重组

我现在的做法是在每次迭代中重建整个图。但是,在每次迭代中,我必须手动从/到检查点文件或numpy数组存储和加载这些信息,这使得我的代码非常混乱并且容易出错


我想知道是否有办法删除/修改我的计算图的一部分,而不是重置整个图?

改变TensorFlow图的结构实际上是不可能的。具体来说,没有一种干净的方法可以从图中删除节点,因此删除一个子图并添加另一个子图是不实际的。(我已经试过了,它涉及到对内部进行手术。最终,这是一种比它的价值更大的努力,而你要求的是维护方面的麻烦。)

有一些变通办法

你的重建就是其中之一。你似乎对这个方法有很好的理解,所以我不想再赘述了,但是为了其他偶然发现这个方法的人的利益,一个非常类似的方法是对图形进行过滤的深度复制。也就是说,您迭代元素并根据某些条件将它们添加进来。如果图形是提供给您的(即,您没有最初构建它的函数),或者如果更改非常小,那么这是最可行的。您仍然要为重建图形付出代价,但有时加载和存储是透明的。但是,考虑到您的情况,这可能不是一个很好的匹配

另一种选择是将问题重新描述为您试图评估并依赖于数据流行为的所有可能图形的超集。换句话说,建立一个包含你输入的每种输入类型的图表,只要求你需要的输出。这可能起作用的好迹象是:您的网络是参数化的(可能只是增加/减少宽度或图层),更改很小(可能包括/排除输入),并且您的操作可以处理可变输入(例如,跨维度的减少)。在你的例子中,如果你只有一个小的,有限数量的树结构,这可以很好地工作。您可能只需要为全局信息添加一些聚合或重整化

第三种选择是将网络视为物理拆分。因此,不要认为一个网络具有可变组件,而是将固定和变化的部分之间的边界视为两个独立网络的输入和输出。这确实让一些事情变得更难:例如,两个方向的backprop现在都很难看(这听起来可能对你来说是个问题)。但如果你能避免这种情况,那么两个网络就可以很好地工作。最终感觉就像是在处理一个单独的训练前阶段,你们很多人已经习惯了

这些解决方法中的大多数都有一个相当狭窄的问题范围,因此它们可能对您的情况没有帮助。也就是说,你不必全力以赴。如果部分拆分网络或仅为某些更改创建supergraph有效,那么您可能只需要担心少数情况下的保存/恢复,这可能会减轻您的麻烦


希望这有帮助

不幸的是,创建后无法修改TensorFlow图的结构。属性在某种程度上是可以的,但这在这里似乎还不够。有一些变通方法,但很难说在您的场景中什么是可行的。你能告诉我们你想做什么吗?当然,我正在尝试实现一个递归神经网络,不同样本的树结构将不同。我想知道是否可以设置它,以便将所有可能的树结构编码到图中,并且您可以使用条件语句来确定在每次迭代中计算哪些边。感谢提供的额外信息。我在下面补充了一些建议。祝你好运!嗨,谢谢你的回答。我正在做的是一个NLP任务,其中树结构是由句子的语法树决定的,这意味着树结构的可能性是无限的,因此第一和第二种方法似乎没有真正起作用,不是吗?顺便说一句,对于重建的方法,我一直在想,以前构建的图是否会被正确地垃圾收集?谢谢