TensorFlow.JS整数乘法结果十进制数



我刚刚开始使用张量流.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.9999981, 117.3000031, 405.0000916]

这是意料之中的,因为默认的dtype是float32的,我们将该数据作为float上传到GPU,GPU的精度低于本机JS。

当你创建张量时,你必须明确地告诉dtype是int32

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

即使输入为 float32,您也可能在 TF.js>=0.13.0 的输出中获得整数的原因是,当我们输入足够小时,我们开始将计算转发到 CPU,而不是在 GPU 上执行此操作。

最新更新