Преобразовать целое число в тензор Pytorch двоичных битов - PullRequest
0 голосов
/ 30 апреля 2019

Учитывая число и длину кодировки, как я могу преобразовать число в его двоичное представление как тензор?

Например, учитывая число 6 и ширину 8, как я могу получить тензор:

(0, 0, 0, 0, 0, 1, 1, 0)

Ответы [ 2 ]

0 голосов
/ 01 мая 2019

Если входные байты без знака и ширина вывода составляет 8 битов:

>>> binary = np.unpackbits(np.array([0xaa, 0xf0], dtype=np.uint8))
>>> print(torch.tensor(binary))
tensor([1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0], dtype=torch.uint8)

Обратите внимание, что unpackbits() только работает с np.uint8.

0 голосов
/ 30 апреля 2019
def decimal_to_binary_tensor(value, width=0):
    string = format(value, '0{}b'.format(width))
    binary = [0 if c == '0' else 1 for c in string]
    return torch.tensor(binary, dtype=torch.uint8)

Примеры:

>>> print(decimal_to_binary_tensor(6, width=8))
tensor([0, 0, 0, 0, 0, 1, 1, 0], dtype=torch.uint8)

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