Метод byte
Метод byte применяется к тензору и возвращает новый тензор,
в котором все элементы приведены к типу torch.uint8.
Этот метод не изменяет исходный тензор, а создает его копию
с новым типом данных. В отличие от метода to, который
требует явного указания типа, byte предназначен
исключительно для преобразования к беззнаковому 8-битному
целочисленному типу, что часто используется для хранения
изображений или бинарных масок.
Синтаксис
tensor.byte()
Метод не принимает никаких параметров.
Пример
Давайте создадим тензор с числами и преобразуем его в тип torch.uint8:
import torch
t = torch.tensor([10, 20, 30, 40, 50])
res = t.byte()
print(res)
print(res.dtype)
Результат выполнения кода:
tensor([10, 20, 30, 40, 50], dtype=torch.uint8)
torch.uint8
Пример
Значения с плавающей точкой округляются в меньшую сторону при преобразовании в uint8:
import torch
t = torch.tensor([1.9, 2.1, 3.5, 4.9, 5.1])
res = t.byte()
print(res)
Результат выполнения кода:
tensor([1, 2, 3, 4, 5], dtype=torch.uint8)
Пример
Значения за пределами диапазона uint8 (0-255) обрезаются по модулю 256:
import torch
t = torch.tensor([256, 300, -1, -10, 1000])
res = t.byte()
print(res)
Результат выполнения кода:
tensor([0, 44, 255, 246, 232], dtype=torch.uint8)
Пример
Метод byte часто используется для преобразования логических масок:
import torch
t = torch.tensor([True, False, True, False, True])
res = t.byte()
print(res)
Результат выполнения кода:
tensor([1, 0, 1, 0, 1], dtype=torch.uint8)
Пример
Применение byte к многомерным тензорам:
import torch
t = torch.tensor([
[1.2, 2.3, 3.4],
[4.5, 5.6, 6.7],
[7.8, 8.9, 9.0]
])
res = t.byte()
print(res)
Результат выполнения кода:
tensor([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
], dtype=torch.uint8)