Tensorflow.js tf.Tensor转JS号

Tensorflow.js tf.Tensor to JS number

我正在使用 Tensorflow.js 进行一些工作,我想绘制一些存储为 tf.Tensors 的数据。我找不到将它们转换为普通JS数字的方法。

const a = tf.Scalar(1)
const b = tf.Scalar(2)
var array = []
// Now o want to push the numbers 1 and 2 to mye array
array.push(a)
array.push(b)

此代码为我提供了一个张量对象数组。我想要一个数字数组。知道如何进行吗?谢谢。

.dataSync() 下载 GPU 的值和 returns 一个 Float32Array Tensor 中包含的值。因此,如果您想将值作为张量存储在数组中并希望从中获取数字数组,您可以使用 map() 映射它以创建下载值的数组,因为您在例如,您可以直接映射到 Float32Array 中的第一个元素以获取其值:

let values = array.map(t => t.dataSync()[0])

示例:

const a = tf.scalar(1)
const b = tf.scalar(2)
var array = []
array.push(a)
array.push(b)

let values = array.map(t => t.dataSync()[0])
console.log(values);
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.11.2">
</script>

您可以使用 a.get()b.get() 来获取它们的值。 工作代码是:

const a = tf.scalar(1)
const b = tf.scalar(2)
var array = []
// Now o want to push the numbers 1 and 2 to mye array
array.push(a.get())
array.push(b.get())
console.log(array) // Outputs [1,2]

您可以尝试Codepen

中的工作代码

标量.get()

const a = tf.scalar(1)
const b = tf.scalar(2)
const array = [a, b].map(s => s.get()); // array [1, 2]