Pytorch копирует неточное значение числа с плавающей запятой - PullRequest
0 голосов
/ 10 октября 2019

Я конвертирую число с плавающей запятой (или числовой массив) в тензор Pytorch, и оно, похоже, копирует неточное значение в тензор. Ошибка появляется в 8-й значащей цифре и после. Это важно (без преднамеренности) для моей работы, поскольку я имею дело с хаотической динамикой, которая очень чувствительна к небольшому изменению начальных условий.

Я уже использую torch.set_printoptions(precision=16) для печати 16 значащих цифр.

np_x = state
print(np_x)
x = torch.tensor(np_x,requires_grad=True,dtype=torch.float32)
print(x.data[0])

и вывод:

0.7575408585008059
tensor(0.7575408816337585)

Было бы полезно узнать, чтоидет не так или как это можно решить?

1 Ответ

1 голос
/ 11 октября 2019

Потому что вы используете float32 dtype. Если вы преобразуете эти два числа в двоичные, вы обнаружите, что они на самом деле одинаковы. Строго говоря, наиболее точные представления этих двух чисел в формате float32 одинаковы.

0.7575408585008059
Most accurate representation = 7.57540881633758544921875E-1

0.7575408816337585
Most accurate representation = 7.57540881633758544921875E-1

Binary: 00111111 01000001 11101110 00110011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...