我有一系列的图像,其中每个像素应该在范围[0,1]内。我想知道我正在对这些图像运行一个深度学习模型,我想知道如何对批量中的每个图像进行归一化,使图像在变换后始终处于[0,1]范围内。
这就是我正在努力做的
for idx in range(x.shape[0]):
x[idx] = x[idx] - x[idx].min()
x[idx] = x[idx] / x[idx].max()
然而,这给我留下了这个错误:
Exception has occurred: RuntimeError
one of the variables needed for gradient computation has been modified by an inplace operation: [torch.FloatTensor [2, 128, 128]], which is output 0 of AsStridedBackward0, is at version 10; expected version 9 instead. Hint: the backtrace further above shows the operation that failed to compute its gradient. The variable in question was changed in there or anywhere later. Good luck!
这有什么解决办法?
其他一些需要考虑的事情:我不能使用批处理规范化,因为批处理中的每个图像都必须单独进行规范化。我不能使用层归一化,因为这是一个卷积网络,我不知道图像的大小提前。我不能使用示例规范化,因为我有多个通道,通道之间的相对大小很重要。
1条答案
按热度按时间jhkqcmku1#
我发现可以通过如下定义一个新的Tensor来避免原地操作