gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:50:51 24 4
gpt4 key购买 nike

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

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

最佳答案

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

关于machine-learning - 如果我在构建图形时涉及 for 循环,那么 tensorflow 中的 autodiff 是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45423035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com