pytorch神经网络的输出是float64类型的数据。这个变量必须用作像素偏移,因此我需要将其转换为长类型。
然而,我刚刚发现一个转换out=out.long((切换变量属性";。requires_grad";变为False。
我该如何将其转换为长期维护";。requires_grad";真的吗?
通常,在保持张量的梯度属性的同时,不能将张量转换为基于整数的类型,因为转换为整数是不可微的操作。因此,您基本上有两种选择:
-
如果数据只需要作为不需要保持梯度的推理操作的类型long,则可以在依次转换为long类型之前反向传播损失。您也可以复制或使用
torch.detach()
。 -
更改模型的输入输出结构,使其不需要整数输出。一种方法可能是输出一个像素图,其中原始张量中的每个值对应一个值,您正试图对其进行索引。这将类似于输出用于分割的掩码的NN。
如果没有更多关于您试图实现的目标的详细信息,很难说您的最佳前进道路是什么。请添加更多代码,以便此操作的上下文可见。