pytorch操作:火炬张量中值的并集和求逆

问题描述

在cuda / GPU上我有一组与图像中不同对象相对应的蒙版(以下形状和大小)

masks.shape:            torch.Size([10,240,320,1])
masks[0].shape:         torch.Size([240,1])
masks[0][:,:,0].shape:  torch.Size([240,320])

1:我可以使用torch.tensor操作产生这些面罩的并集吗?这样我就可以将所有这些图像一次应用到图像上?

2:如何反转火炬张量中的值?我的意思是1,变成0,反之亦然。我试图〜mytensor,但它说运算符仅适用于整数或布尔值。我的张量中有浮点值,例如[1.]等。

我打算在GPU上执行所有这些操作,而又不将数据移回cpu

谢谢。

解决方法

2:如何反转火炬张量中的值?

t = torch.tensor([1.,0.,1.,1.])

如果您不想更改类型,则可以从1中减去值。

1 - t
tensor([0.,0.])

或者更好的是,您可以将其转换为布尔类型,然后使用~

~t.type(torch.bool)
tensor([False,True,False,False])