had*_*enj 6 javascript tensorflow.js
我想使用tensorflow.js从 2D 张量获取数据。我尝试使用data()这样的方法:
const X = tf.tensor2d([[1, 2, 3, 4], [2, 2, 5, 3]]);\nX.data().then(X => console.log(X)};\nRun Code Online (Sandbox Code Playgroud)\n\n但结果是一个展平的一维数组:
\n\nFloat32Array(8)\xc2\xa0[1, 2, 3, 4, 2, 2, 5, 3]\nRun Code Online (Sandbox Code Playgroud)\n\n有没有办法保持数组的形状?
\n为了提高速度,张量中的数据始终扁平化存储为一维数组类型。
\n\n您给出的示例将不起作用,因为第二个参数tensor2d是shape。要使其工作,您需要将其包装到另一个数组:
const x = tf.tensor2d([[1, 2, 3, 4], [2, 2, 5, 3]]); //shape inferred as [2, 4]\nRun Code Online (Sandbox Code Playgroud)\n\n或者你可以明确提供形状:
\n\nconst x = tf.tensor2d([1, 2, 3, 4, 2, 2, 5, 3], [2, 4]); // shape explicitly passed\nRun Code Online (Sandbox Code Playgroud)\n\n正如您所建议的,当您检查数据时,无论原始形状如何,您总是会得到一维数组
\n\nawait x.data() // Float32Array(8) [1, 2, 3, 4, 2, 2, 5, 3]\nx.shape //\xc2\xa0[2, 4]\nRun Code Online (Sandbox Code Playgroud)\n\n但是,如果您print()使用张量,则会考虑形状,它将显示为
Tensor\n [[1, 2, 3, 4],\n [2, 2, 5, 3]]\nRun Code Online (Sandbox Code Playgroud)\n