C Xtensor увеличивает значимые числа с плавающей запятой

#c #xtensor

Вопрос:

Я создаю нейронную сеть и использую xtensor для умножения массивов в прямой передаче. Сеть принимает xt::xarraylt;doublegt; и выводит десятичное число в диапазоне от 0 до 1. Мне дали лист с ожидаемыми результатами. когда я сравнил свои выходные данные с предоставленным листом, я обнаружил, что все результаты отличаются ровно через 7 цифр. например , если требуемое значение равно 0.1234567890123456 , я получаю такие значения, как 0.1234567-garbage-numbers-so-that-total-numbers-equal-16 , 0.1234567993344660 , 0.1234567221155667 .

Я знаю, что не могу получить это точное число 0.1234567890123456 из-за математики с плавающей запятой. Но как я могу отладить/ увеличить точность, чтобы она была близка к требуемому числу. Спасибо

Обновить:

 xt::xarraylt;doublegt; Layer::call(xt::xarraylt;doublegt; input)  {  return xt::linalg::dot(input, this-gt;weight)   this-gt;bias;  }  

для кода я просто вызываю этот call метод несколько раз, когда weight и bias являются xt::xarraylt;doublegt; массивами.

Комментарии:

1. Покажите свой код, особенно ту его часть, которая выводит значения. Виновата может быть ваша функция вывода, а не ваша арифметика.

2. добавил код, сэр. Я не знаю, но простой ответ может заключаться в том, что xtensor предоставляет точные числа до 15 или 16 десятичных цифр или даже больше, и почему-то есть большая вероятность, что мой код не работает, и у людей никогда раньше не было этой проблемы с xtensor.