将 TensorFlow 中的张量值转换为常规 Javascript 数组
Convert values of a tensor in TensorFlow to regular Javascript array
我在两个一维数组 (a,b) 上使用 TensorFlow.js 框架中的 outerProduct 函数,但我发现很难在常规 javascript 中获取结果张量的值格式。
即使在使用 .dataSync 和 Array.from() 之后,我仍然无法获得预期的输出格式。两个一维数组之间的结果外积应该给出一个二维数组,但我得到的是一维数组。
const a = tf.tensor1d([1, 2]);
const b = tf.tensor1d([3, 4]);
const tensor = tf.outerProduct(b, a);
const values = tensor.dataSync();
const array1 = Array.from(values);
console.log(array1);
预期结果是 array1 = [ [ 3, 6 ] , [ 4, 8 ] ],但我得到
array1 = [ 3, 6, 4, 8 ]
版本 < 15
tf.data
或 tf.dataSync
的结果始终是展平数组。但是可以使用张量的形状使用 map and reduce.
获得多维数组
const x = tf.tensor3d([1, 2 , 3, 4 , 5, 6, 7, 8], [2, 4, 1]);
x.print()
// flatten array
let arr = x.dataSync()
//convert to multiple dimensional array
shape = x.shape
shape.reverse().map(a => {
arr = arr.reduce((b, c) => {
latest = b[b.length - 1]
latest.length < a ? latest.push(c) : b.push([c])
return b
}, [[]])
console.log(arr)
})
<html>
<head>
<!-- Load TensorFlow.js -->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.14.1"> </script>
</head>
<body>
</body>
</html>
自版本 0.15
一个可以用tensor.array() or tensor.arraySync()
你可以带着你的 values
做一些类似
的事情
const values = [3, 6, 4, 8];
let array1 = []
for (var i = 0; i < values.length; i += 2) {
array1.push([values[i], values[i + 1]])
}
console.log(array1)
从 tfjs 版本 0.15.1 开始,您可以使用 await tensor.array()
获取嵌套数组。
我在两个一维数组 (a,b) 上使用 TensorFlow.js 框架中的 outerProduct 函数,但我发现很难在常规 javascript 中获取结果张量的值格式。
即使在使用 .dataSync 和 Array.from() 之后,我仍然无法获得预期的输出格式。两个一维数组之间的结果外积应该给出一个二维数组,但我得到的是一维数组。
const a = tf.tensor1d([1, 2]);
const b = tf.tensor1d([3, 4]);
const tensor = tf.outerProduct(b, a);
const values = tensor.dataSync();
const array1 = Array.from(values);
console.log(array1);
预期结果是 array1 = [ [ 3, 6 ] , [ 4, 8 ] ],但我得到 array1 = [ 3, 6, 4, 8 ]
版本 < 15
tf.data
或 tf.dataSync
的结果始终是展平数组。但是可以使用张量的形状使用 map and reduce.
const x = tf.tensor3d([1, 2 , 3, 4 , 5, 6, 7, 8], [2, 4, 1]);
x.print()
// flatten array
let arr = x.dataSync()
//convert to multiple dimensional array
shape = x.shape
shape.reverse().map(a => {
arr = arr.reduce((b, c) => {
latest = b[b.length - 1]
latest.length < a ? latest.push(c) : b.push([c])
return b
}, [[]])
console.log(arr)
})
<html>
<head>
<!-- Load TensorFlow.js -->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.14.1"> </script>
</head>
<body>
</body>
</html>
自版本 0.15
一个可以用tensor.array() or tensor.arraySync()
你可以带着你的 values
做一些类似
const values = [3, 6, 4, 8];
let array1 = []
for (var i = 0; i < values.length; i += 2) {
array1.push([values[i], values[i + 1]])
}
console.log(array1)
从 tfjs 版本 0.15.1 开始,您可以使用 await tensor.array()
获取嵌套数组。