Javascript 将结果放入变量中
我有下面的示例代码。我能够从打印功能在控制台中看到正确的结果Javascript 将结果放入变量中,javascript,tensorflow.js,Javascript,Tensorflow.js,我有下面的示例代码。我能够从打印功能在控制台中看到正确的结果 // 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.den
// 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放入一个变量中,这样我就可以把它四舍五入并在屏幕上打印出来(用html) 我发现答案是:
answer.data().then((d)=>{
console.log(d[0])
})
answer有一个返回承诺的数据方法。你可以从承诺中得到数据
我找到了这个问题的答案:
Rocksetta在以下网站上发布了他们代码的链接:
最简单的方法是使用,但它会阻塞主线程。如果您对async/await感到满意,那么,answer.data()
就是解决方案。有时
最简单的方法是使用answer.dataSync(),但它会阻止
主线程。如果您对async/await感到满意,请回答.data()
这就是解决办法
工作正常,但其他时间
answer.dataSync()
返回一个数组。当面对阵列时,您需要尝试
answer.dataSync()[0]
或者其他一些数组号。同样的问题
await answer.data()[0]
要将张量的值转换为普通JavaScript变量,可以使用TensorflowJs的两个内置函数:一个是同步的,另一个是异步的 将阻止UI线程。因此,只要有可能,应首选异步 常数x=tf.tensor1d([45,48]); x、 打印(); /*异步方式*/ (异步()=>{ const val=wait x.data() //获取第一个元素 console.log(val[0]) })() /*同步方式*/ const val=x.dataSync()[0] console.log(val)
以下是我最喜欢的方式:
var answerdata = await answer.data()
var answerArray = Array.from(answerdata);
answerArray
将被展平,但它又快又简单。如果您正在加载Keras模型或执行其他各种异步操作,通常都处于异步函数中。如果您需要任何帮助,将不胜感激。谢谢您知道也有一种同步方法可以做到这一点,这很有用。