Тип int32
Тип int32 (или torch.int32) представляет собой
32-битный целочисленный тип данных со знаком. Он занимает
4 байта памяти и может хранить целые числа в диапазоне
от -2,147,483,648 до 2,147,483,647.
Этот тип часто используется для хранения индексов,
меток классов и других целочисленных значений,
которые не требуют 64-битной точности.
Синтаксис
Для указания типа int32 при создании тензора используется
параметр dtype:
torch.tensor(data, dtype=torch.int32)
Пример
Давайте создадим тензор с типом int32
из списка целых чисел:
import torch
t = torch.tensor([1, 2, 3, 4, 5], dtype=torch.int32)
print(t)
print(t.dtype)
Результат выполнения кода:
tensor([1, 2, 3, 4, 5], dtype=torch.int32)
torch.int32
Пример
При создании тензора из списка чисел без указания типа
PyTorch автоматически выбирает int64 для целых чисел.
Давайте явно преобразуем тензор в тип int32
с помощью метода to:
import torch
t = torch.tensor([10, 20, 30, 40, 50])
print("Исходный тип:", t.dtype)
t_int32 = t.to(torch.int32)
print("Новый тип:", t_int32.dtype)
print(t_int32)
Результат выполнения кода:
Исходный тип: torch.int64
Новый тип: torch.int32
tensor([10, 20, 30, 40, 50], dtype=torch.int32)
Пример
Тип int32 часто используется при работе с индексами
и размерами тензоров. Давайте создадим двумерный тензор
с целыми числами и выполним операции индексации:
import torch
t = torch.tensor([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
], dtype=torch.int32)
idx = torch.tensor([0, 2], dtype=torch.int32)
res = t[idx]
print(res)
Результат выполнения кода:
tensor([
[1, 2, 3],
[7, 8, 9]
], dtype=torch.int32)
Пример
Арифметические операции с тензорами типа int32
выполняются без потери точности, если результат
остаётся в допустимом диапазоне. Рассмотрим пример:
import torch
t1 = torch.tensor([100, 200, 300], dtype=torch.int32)
t2 = torch.tensor([50, 25, 75], dtype=torch.int32)
res = t1 + t2
print(res)
print(res.dtype)
Результат выполнения кода:
tensor([150, 225, 375], dtype=torch.int32)
torch.int32
Пример
При выходе за пределы допустимого диапазона происходит переполнение. Давайте посмотрим, как это работает на практике:
import torch
max_val = torch.tensor([2147483647], dtype=torch.int32)
print("Максимальное значение:", max_val)
overflow = max_val + torch.tensor([1], dtype=torch.int32)
print("Результат переполнения:", overflow)
Результат выполнения кода:
Максимальное значение: tensor([2147483647], dtype=torch.int32)
Результат переполнения: tensor([-2147483648], dtype=torch.int32)