我有一种情况,我有一批图像,在每一张图像中,我必须对该图像中的一个小块执行一些操作。现在的问题是,补丁大小在批处理中的每个图像中都是可变的。所以这意味着我不能把它矢量化。我可以通过考虑图像中所有像素的范围来向量化,但是我的每个图像的补丁大小实际上是一个很小的部分,我不想在这里浪费我的内存,执行操作并存储每个图像中所有像素的结果。
所以简单地说,我需要一个循环。现在,我看到tensorflow只定义了一个while循环,没有用于循环。因此,我的问题是,如果我使用简单的python样式for循环来执行对张量的操作,那么自动will会不能计算出我的图中的梯度吗?
发布于 2017-07-31 22:08:20
Tensorflow不知道(因此不关心)如何构造图,只要使用适当的函数,甚至可以手工编写每个节点。因此,特别是循环与TF无关。另一方面,the循环使您能够表示图形内部的动态计算,因此,如果您想要按顺序处理数据,并且只需要内存中的当前数据,那么只有循环才能做到这一点。如果您手工创建一个巨大的图形(通过循环),它将始终被执行,并且所有的东西都存储在内存中。只要这个适合你的机器,你就会没事的。另一件事是动态长度,如果有时需要运行10次循环,有时需要运行1000次,则必须使用tf.while_loop,不能使用for循环(除非为每个可能的长度创建单独的图)。
https://stackoverflow.com/questions/45423035
复制相似问题