将复杂张量转换为 JS 数组

Converting Complex Tensors to JS Arrays

当使用data() 或dataSync() 函数将复杂张量转换为JS 数组时,返回的数组是原始张量大小的两倍,包含实部和虚部作为两个不同的值。我期待一个复数数组。

async function convertToArray(){
    r = tf.tensor([1,2,3])
    i = tf.tensor([4,5,6])
    
    c = tf.complex(r,i)
    arr = await c.dataSync()
    console.log(arr)
};

convertToArray();

输出为:Float32Array(6) [ 1, 4, 2, 5, 3, 6 ] 而预期的输出是一个像这样的复杂数组:[ { re: 1, im: 4 }, { re: 2, im: 5 }, { re: 3, im: 6 } ]

如果我使用 array() 或 arraySync() 函数,我会收到“错误:[3] 与输入大小不匹配”错误。

r = tf.tensor([1,2,3])
i = tf.tensor([4,5,6])

c = tf.complex(r,i)
arr = await c.dataSync()

// convert to an array of object

t = arr.reduce((a, b, i) => i % 2 === 0 ?
    [...a, [b]] :
    [...a.slice(0, a.length - 1), a[a.length - 1].concat(b)], [])
    .map(([a, b]) => ({ re: a, im: b }))
console.log(t)