更改 Pytorch 3D 张量内的值
Change values inside a Pytorch 3D tensor
我有张量 (1, 224, 224) 中的 224x224 二值图像,0 像素代表背景,1 像素代表前景。
我想用张量 (2, 224, 224) 重塑它,例如第一个 "layer" gt[0] 有 1 个像素,而原始图像中有 0 个像素,反之亦然。这样,一层应该在有背景的地方显示 1s,而另一层在前景上显示 1s(基本上我需要在这个张量中有两个互补的二值图像)。
这是我的代码:
# gt is a tensor (1, 224, 224)
gt = gt.expand((2, 224, 224))
backgr = gt[0]
foregr = gt[1]
backgr[backgr == 0] = 2 # swap all 0s in 1s and viceversa
backgr[backgr == 1] = 0
backgr[backgr == 2] = 1
gt[0] = backgr
print(gt[0])
print(gt[1])
问题是两层都用这段代码修改了,我不知道如何保持两层之一不变,只改变 gt[0]。
找到解决方案!
gt = gt.repeat(2, 1, 1)
我有张量 (1, 224, 224) 中的 224x224 二值图像,0 像素代表背景,1 像素代表前景。 我想用张量 (2, 224, 224) 重塑它,例如第一个 "layer" gt[0] 有 1 个像素,而原始图像中有 0 个像素,反之亦然。这样,一层应该在有背景的地方显示 1s,而另一层在前景上显示 1s(基本上我需要在这个张量中有两个互补的二值图像)。
这是我的代码:
# gt is a tensor (1, 224, 224)
gt = gt.expand((2, 224, 224))
backgr = gt[0]
foregr = gt[1]
backgr[backgr == 0] = 2 # swap all 0s in 1s and viceversa
backgr[backgr == 1] = 0
backgr[backgr == 2] = 1
gt[0] = backgr
print(gt[0])
print(gt[1])
问题是两层都用这段代码修改了,我不知道如何保持两层之一不变,只改变 gt[0]。
找到解决方案!
gt = gt.repeat(2, 1, 1)