与GPU上的Torch.FloatTensor比较的优雅方式

Max*_*ian 5 python boolean numpy pytorch tensor

我尝试比较两个在GPU上放置的torch.FloatTensor(只有一个条目),如下所示:

如果(FloatTensor_A> FloatTensor_B):做某事

问题是,这(FloatTensor_A > FloatTensor_B)给了ByteTensor回来。有没有一种方法可以在这两个标量FloatTensors之间进行布尔比较,而无需在CPU上加载张量并将其转换回numpy或常规的float?

blc*_*ird 4

PyTorch 中的比较操作返回 ByteTensors(请参阅文档)。为了将结果转换回浮点数据类型,您可以调用.float()结果。例如:

(t1 > t2).float()
Run Code Online (Sandbox Code Playgroud)

(t1 > t2)将返回一个ByteTensor.

操作的输入必须位于同一内存(CPU 或 GPU)上。返回结果将位于同一内存上。当然,任何 Tensor 都可以通过 callin.cpu().cuda()on 它移动到相应的内存中。