将结果存入变量中

3

我有下面这段示例代码。我能够从print函数在控制台中看到正确的结果。

  // Define a model for linear regression.
  const model = tf.sequential();
  model.add(tf.layers.dense({units: 1, inputShape: [1]}));
  model.add(tf.layers.dense({units: 4, inputShape: [1]}));
  model.add(tf.layers.dense({units: 10, inputShape: [1]}));

  model.add(tf.layers.dense({units: 1, inputShape: [1]}));  

  // Prepare the model for training: Specify the loss and the optimizer.
  model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});

  // Generate some synthetic data for training.
  const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);
  const ys = tf.tensor2d([1, 3, 5, 7], [4, 1]);

  // Train the model using the data.
  model.fit(xs, ys).then(() => {
    // Use the model to do inference on a data point the model hasn't seen before:
    // Open the browser devtools to see the output
    answer = model.predict(tf.tensor2d([3], [1, 1]));
    answer.print()

  });

我希望能够将答案放入一个数字变量中,以便我可以在其他地方使用。我得到的答案是:

Tensor [[4.9999123],]

但是我想将4.9999存入变量,以便可以将其四舍五入为5并在屏幕上打印出来(在html中)。


任何帮助都将不胜感激。 - K-Dawg
5个回答

2

2

有时候

最简单的方法是使用answer.dataSync(),但它会阻塞主线程。如果你熟悉async/await,answer.data()是解决方案。

可以正常工作,但有时候

answer.dataSync()

返回一个数组。当面对这个数组时,你需要尝试。

answer.dataSync()[0]

或者是其他数组数字。同样的问题也存在于


await answer.data()[0]

2

最简单的方法是使用answer.dataSync(),但它会阻塞主线程。如果您熟悉async / await,则answer.data()是解决方案。


谢谢。知道还有同步的方法也很有用。 - K-Dawg

1
这是我的最爱方式:

var answerdata = await answer.data()
var answerArray = Array.from(answerdata);

answerArray 将被展平,但这是快速简单的。如果您正在加载 Keras 模型或执行各种其他异步操作,则通常在异步函数中。


0

要将张量的值转换为普通的JavaScript变量,可以使用TensorflowJs的两个内置函数:一个是同步的dataSync(),另一个是异步的data()

dataSync()会阻塞UI线程。因此,尽可能使用异步的data()

const x = tf.tensor1d([45, 48]);
x.print();
/* Async way */
(async () => {
  const val = await x.data()
   // get the first element
  console.log(val[0])
})()
/* Sync way */
const val = x.dataSync()[0]
console.log(val)
<html>
  <head>
    <!-- Load TensorFlow.js -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/tensorflow/0.12.4/tf.js"> </script>
  </head>

  <body>
  </body>
</html>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接