Тип int16
Тип данных int16 (или torch.int16) в PyTorch представляет
16-битное знаковое целое число. Он занимает 2 байта памяти и может хранить
целые числа в диапазоне от -32,768 до 32,767. Этот тип полезен для
экономии памяти при работе с целочисленными данными, когда точности
int32 или int64 избыточны, а отрицательные значения
необходимы (в отличие от uint8).
Синтаксис
Для указания типа int16 используется константа
torch.int16 или torch.short (устаревший синоним).
Этот тип можно передавать в параметр dtype различных функций
создания тензоров, таких как tensor, zeros,
ones и других.
torch.tensor(data, dtype=torch.int16)
Пример
Давайте создадим тензор из списка чисел с типом int16:
import torch
t = torch.tensor([1, 2, 3, 4, 5], dtype=torch.int16)
print(t)
print(t.dtype)
Результат выполнения кода:
tensor([1, 2, 3, 4, 5], dtype=torch.int16)
torch.int16
Пример
Создадим тензор из нулей с типом int16 и укажем размерность:
import torch
t = torch.zeros(2, 3, dtype=torch.int16)
print(t)
print(t.dtype)
Результат выполнения кода:
tensor([
[0, 0, 0],
[0, 0, 0],
], dtype=torch.int16)
torch.int16
Пример
Преобразуем существующий тензор к типу int16 с помощью метода
to:
import torch
t = torch.tensor([1.5, 2.7, 3.9])
t_int16 = t.to(torch.int16)
print(t_int16)
print(t_int16.dtype)
Результат выполнения кода:
tensor([1, 2, 3], dtype=torch.int16)
torch.int16
При преобразовании из чисел с плавающей точкой дробная часть отбрасывается (округляется в сторону нуля).
Пример
Важно помнить о диапазоне значений int16. При попытке записать
число вне диапазона происходит переполнение:
import torch
t = torch.tensor([32767], dtype=torch.int16)
print(t)
t_overflow = torch.tensor([32768], dtype=torch.int16)
print(t_overflow)
Результат выполнения кода:
tensor([32767], dtype=torch.int16)
tensor([-32768], dtype=torch.int16)
Как видно, число 32768 (на единицу больше максимального) превратилось в -32768 (минимальное значение) из-за циклического переполнения.