Метод bfloat16 класса Tensor
Метод bfloat16 класса Tensor преобразует элементы тензора в формат с плавающей запятой bfloat16 (Brain Floating Point). Этот формат отличается от стандартного float16 тем, что сохраняет тот же диапазон значений, что и float32, но с уменьшенной точностью мантиссы. Метод не изменяет исходный тензор, а возвращает новый тензор с типом torch.bfloat16. Преобразование выполняется без копирования данных, если тензор уже имеет тип bfloat16.
Синтаксис
tensor.bfloat16()
Пример
Давайте создадим тензор с числами и преобразуем его в формат bfloat16:
import torch
t = torch.tensor([1.5, 2.7, 3.9])
res = t.bfloat16()
print(res)
Результат выполнения кода:
tensor([1.5000, 2.7000, 3.9000], dtype=torch.bfloat16)
Пример
Преобразуем двумерный тензор в формат bfloat16 и проверим тип данных:
import torch
t = torch.tensor([[1, 2, 3], [4, 5, 6]], dtype=torch.float32)
res = t.bfloat16()
print(res.dtype)
Результат выполнения кода:
torch.bfloat16
Пример
Рассмотрим пример, демонстрирующий потерю точности при преобразовании в bfloat16. Для чисел, требующих высокой точности, значения могут округляться:
import torch
t = torch.tensor([1.1234567, 2.1234567])
res = t.bfloat16()
print("Original:", t)
print("bfloat16:", res)
Результат выполнения кода:
Original: tensor([1.1235, 2.1235])
bfloat16: tensor([1.1250, 2.1250], dtype=torch.bfloat16)