Machine learning 如果在构建图形时涉及for循环,那么tensorflow中的autodiff是否有效?

Machine learning 如果在构建图形时涉及for循环,那么tensorflow中的autodiff是否有效?,machine-learning,tensorflow,computer-vision,deep-learning,autodiff,Machine Learning,Tensorflow,Computer Vision,Deep Learning,Autodiff,我有一种情况,我有一批图像,在每一张图像中,我必须对图像中的一个小补丁执行一些操作。现在的问题是,批处理中的每个图像中的面片大小都是可变的。所以这意味着我不能向量化它。我可以通过考虑图像中像素的整个范围来进行矢量化,但我的每个图像的面片大小实际上是很小的一部分,我不想通过执行操作和存储每个图像中所有像素的结果来浪费内存 简而言之,我需要使用一个循环。现在我看到tensorflow只定义了一个while循环,没有for循环。所以我的问题是,如果我使用一个简单的python风格的for循环来对我的张

我有一种情况,我有一批图像,在每一张图像中,我必须对图像中的一个小补丁执行一些操作。现在的问题是,批处理中的每个图像中的面片大小都是可变的。所以这意味着我不能向量化它。我可以通过考虑图像中像素的整个范围来进行矢量化,但我的每个图像的面片大小实际上是很小的一部分,我不想通过执行操作和存储每个图像中所有像素的结果来浪费内存


简而言之,我需要使用一个循环。现在我看到tensorflow只定义了一个while循环,没有for循环。所以我的问题是,如果我使用一个简单的python风格的for循环来对我的张量执行操作,autodiff会不能在我的图中计算梯度吗

Tensorflow不知道因此不关心图形是如何构造的,您甚至可以手工编写每个节点,只要使用适当的函数来编写。所以特别是for循环与TF无关。另一方面,TF while loop使您能够在图形中表达动态计算,因此如果您希望按顺序处理数据,并且只需要内存中的当前数据,则只有while loop可以实现这一点。如果通过循环手动创建一个巨大的图形,它将始终被执行,所有内容都存储在内存中。只要这适合你的机器,你就可以了。另一件事是动态长度,如果有时需要运行循环10次,有时需要运行1000次,则必须使用tf。而对于for循环,除非为每个可能的长度创建单独的图形。

应该可以,尽管图形会更大,但图形大小为2GBlimit@YaroslavBulatov,谢谢你的回复!两个后续问题-a。2GB大小;它是用于整个图还是用于单个张量图中的节点?B如果正常的for循环起作用,那么张量流引入tf.while\u循环有什么原因吗?这只是为了让后端的工作更高效吗?谢谢你的详细解释!现在对于tensorflow为什么提供了tf.while\u循环有了更多的理解。