РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
140 of 769 menu

Тип float16

Тип float16 (или torch.float16) представляет собой 16-битное число с плавающей точкой, соответствующее стандарту IEEE 754. Этот тип данных занимает 2 байта памяти и состоит из 1 бита знака, 5 бит экспоненты и 10 бит мантиссы. float16 позволяет существенно экономить память и ускорять вычисления на современных GPU, поддерживающих тензорные ядра.

Синтаксис

Для указания типа float16 при создании тензора используется параметр dtype:

torch.tensor(data, dtype=torch.float16)

Также можно преобразовать существующий тензор в тип float16 с помощью метода to:

tensor.to(torch.float16)

Пример

Давайте создадим тензор типа float16 из списка чисел:

import torch t = torch.tensor([1, 2, 3, 4, 5], dtype=torch.float16) print(t) print(t.dtype)

Результат выполнения кода:

tensor([1., 2., 3., 4., 5.], dtype=torch.float16) torch.float16

Пример

Преобразуем существующий тензор в тип float16:

import torch t = torch.tensor([1.5, 2.7, 3.2]) t16 = t.to(torch.float16) print(t16) print(t16.dtype)

Результат выполнения кода:

tensor([1.5000, 2.6992, 3.1992], dtype=torch.float16) torch.float16

Пример

Использование типа float16 для экономии памяти при создании больших тензоров:

import torch t = torch.randn(1000, 1000, dtype=torch.float16) memory = t.element_size() * t.numel() print(f"Memory: {memory} bytes") print(t.shape) print(t.dtype)

Результат выполнения кода:

Memory: 2000000 bytes torch.Size([1000, 1000]) torch.float16

Пример

Сравнение точности вычислений между типами float32 и float16 на примере сложения:

import torch a32 = torch.tensor([0.1], dtype=torch.float32) b32 = torch.tensor([0.2], dtype=torch.float32) res32 = a32 + b32 a16 = torch.tensor([0.1], dtype=torch.float16) b16 = torch.tensor([0.2], dtype=torch.float16) res16 = a16 + b16 print(f"float32 result: {res32.item()}") print(f"float16 result: {res16.item()}") print(f"Difference: {abs(res32.item() - res16.item())}")

Результат выполнения кода:

float32 result: 0.30000001192092896 float16 result: 0.300048828125 Difference: 4.881620407104492e-05

Смотрите также

  • тип float32,
    стандартный тип чисел с плавающей точкой в PyTorch
  • тип float64,
    тип для вычислений с двойной точностью
  • тип bfloat16,
    альтернативный 16-битный тип с большим диапазоном значений
  • функцию set_default_dtype,
    которая устанавливает тип по умолчанию для новых тензоров
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить