Как преобразовать тензор целых чисел Pytorch в тензор логических значений? - PullRequest
0 голосов
/ 30 ноября 2018

Я хотел бы преобразовать тензор целых чисел в тензор логических значений.

В частности, я бы хотел иметь функцию, которая преобразует tensor([0,10,0,16]) в tensor([0,1,0,1])

Это тривиально в Tensorflow, просто используя tf.cast(x,tf.bool).

. Я хочу, чтобы приведение изменило все входные значения больше 0 на 1, а все входные значения равны 0 и 0. Это эквивалентно !!на большинстве языков.

Поскольку у pytorch, по-видимому, нет отдельного логического типа для приведения, какой здесь лучший подход?

Редактировать: Я ищу векторизованное решение, противоположное циклучерез каждый элемент.

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Что вам нужно, так это сгенерировать логическую маску для заданного целочисленного тензора.Для этого вы можете просто проверить условие: значения больше 0, что даст желаемый результат.

# input tensor
In [76]: t   
Out[76]: tensor([ 0, 10,  0, 16])

# generate the needed boolean mask
In [78]: t > 0      
Out[78]: tensor([0, 1, 0, 1], dtype=torch.uint8)

# sanity check
In [93]: mask = t > 0      

In [94]: mask.type()      
Out[94]: 'torch.ByteTensor'
0 голосов
/ 30 ноября 2018

Вы можете использовать сравнения, как показано в приведенном ниже фрагменте кода.

 a = tensor([0,10,0,16])
 result = (a == 0)

даст

 tensor([1, 0, 1, 0], dtype=torch.uint8)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...