我刚开始使用tensorflow.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 Web控制台上的输出:
张量 [20,23.9999981,117.3000031,405.0000916]
答案 0 :(得分:0)
这是预料之中的,因为默认dtype为float32
,并且我们将这些数据以float形式上传到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上进行