TensorFlow.JS Результаты умножения целых чисел Десятичное число - PullRequest
0 голосов
/ 07 октября 2018

Я только начинаю работать с tenorflow.js и создал два простых тензора и пытаюсь выполнить с ними операцию умножения.

По какой-то причине результат умножения двух тензоров на целочисленные значения с плавающей точкой приводит кбыть значениями десятичного числа для некоторых из них.Это происходит в браузере Safari версии 11.1.2 и не уверен, почему.

// Create new 1D Tensors
const data3 = tf.tensor1d([4, 6, 5, 9]);
const data4 = tf.tensor1d([5, 4, 23, 45]);

// Multipying and Chaining Print Operations
data3.mul(data4).print();

Вывод в веб-консоль Safari:

Тензор [20, 23.9999981117,3000031, 405,0000916]

1 Ответ

0 голосов
/ 18 декабря 2018

Это ожидается, так как по умолчанию dtype равен float32, и мы загружаем эти данные как плавающие в GPU, который имеет меньшую точность, чем собственный JS.

При создании тензоров вы должны явноскажем, что тип d int32:

data3 = tf.tensor1d([4, 6, 5, 9, 11], 'int32');
data4 = tf.tensor1d([5, 4, 23, 45, 23], 'int32');
data3.mul(data4).print();

Причина, по которой вы можете получить целые числа в выходных данных для TF.js> = 0.13.0, даже если входные данные имеют тип float32, заключается в том, что мы начали пересылку вычислений вПроцессор, когда вход достаточно мал, вместо того, чтобы делать это на GPU.

...