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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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
Tensorflow,节点是死节点_Tensorflow - Fatal编程技术网

Tensorflow,节点是死节点

Tensorflow,节点是死节点,tensorflow,Tensorflow,我正在研究tensorflow过程,但是要理解这个过程有很多困难 我不完全理解的一个术语是关于节点的。在sourcecodec++内核中,有很多不同类型的节点。但我对死节点很好奇。它将不同于常量节点。我想知道死节点存在的原因,换句话说,死节点的作用 什么是活数据与死数据?这是不是像未使用的数据和已经使用的数据一样。。。我想我还没有完全理解这个术语。它可以在ActivateNodes executor.cc函数中显示 我认为这些问题对于研究张量流来说是非常基本的,但是我想确切地知道 首先,dead

我正在研究tensorflow过程,但是要理解这个过程有很多困难

我不完全理解的一个术语是关于节点的。在sourcecodec++内核中,有很多不同类型的节点。但我对死节点很好奇。它将不同于常量节点。我想知道死节点存在的原因,换句话说,死节点的作用

什么是活数据与死数据?这是不是像未使用的数据和已经使用的数据一样。。。我想我还没有完全理解这个术语。它可以在ActivateNodes executor.cc函数中显示

我认为这些问题对于研究张量流来说是非常基本的,但是我想确切地知道


首先,dead Tensor是TensorFlow控制流构造的一个实现细节:和。这些构造使TensorFlow能够根据依赖于数据的值确定是否执行子图

让我们考虑更简单的TF.CONDPRED,TtrueFFN,FalSEEFN案例。pred的值决定是执行true\u fn还是false\u fn中的ops。在当前的实现中,pred馈送到a,a在一个输入上发送一个正则张量,在另一个输入上发送一个死张量。如果pred为true,则死张量将沿着输出值false发送,反之亦然。设置tf.cond实现,以便true\u fn中的ops取决于输出值true,false\u fn中的ops取决于输出值false

当一个张量接收到一个死张量作为其输入时,它不会执行;相反,它在所有输出上发送一个死张量。这种死张量传播确保只有相应分支中的ops才会执行


tf.cond如何阻止死张量一直传播到输出?第二个特殊的操作称为A,它以不同的方式处理死输入。一个Merge op有两个或多个输入,它期望为除一个输入之外的所有输入获取一个死输入;然后,它将非死输入转发到其输出。tf.cond使用Merge ops组合来自true\u fn和false\u fn的结果,因此执行的分支的结果将作为整个tf.cond子图的输出返回。

感谢您的回复。但是我没有完全理解你的答案。我能问一件事吗?据我所知,在tf.cond中,Switch op和Merge op用于根据pred应用适当的结果。但是我不确定死张量传播。如果Merge op不存在,那么接收到死张量作为输入的张量将发送到所有输出的死张量,对吗?在这一点上,他们为什么发送死张量到输出?有没有办法去掉死张量?我意识到了我所问的问题。我认为删除是不可能的,因为我们不知道下一次迭代会改变什么状态,所以我们无法手动管理死张量。当死张量输出有另一个进程时,也需要发送进程。我在正确的轨道上吗?对,合并操作是唯一支持的可以移除死张量的机制。当有多个进程时,可以使用标准的Send和Recv操作在它们之间发送死张量。