【问题标题】:Get value of TensorFlow JS model.predict into a variable将 TensorFlow JS model.predict 的值获取到变量中
【发布时间】:2020-01-28 22:01:18
【问题描述】:

我正在尝试在 JS 中实现一个神经网络,它可以预测某些值,然后将这些值存储在一个变量中以备后用。

async function processModel(inputs) {
  const model = await tf.loadLayersModel(modelURL);
  inputs = tf.tensor(inputs);

  var predictions = model.predict(inputs);
  predictions = predictions.dataSync();

  console.log(typeof(predictions));

  return predictions;
}

启动它会告诉我predictions 的类型是object。 我想获取返回的 Promise 的值并将这些值存储在一个变量中,这样我就可以将它们与其他变量进行比较。

谁能帮我解决这个问题?

【问题讨论】:

    标签: javascript tensorflow machine-learning


    【解决方案1】:

    prredictions 在一个数组中。数组索引是获取预测值的方式

    【讨论】:

      【解决方案2】:

      根据datasync methodvariable.dataSync() 返回DataTypeMap[NumericDataType]。它返回任何NumericDataType 中的TypedArray

      根据MDN documentation on TypedArray

      TypedArray 对象描述了一个类似数组的底层视图 二进制数据缓冲区。

      所以,console.log(typeof(predictions)) 将在控制台中打印 object 是正确的。

      但由于predictionsTypedArray,您可以像使用常规JavaScript 数组一样使用它。可以打印predictions[0]等。

      我们来看一个TypedArray的例子:

      // create a TypedArray with a size in bytes
      const typedArrayExample = new Float32Array(2);
      typedArrayExample[0] = 32.36;
      
      console.log(typeof(typedArrayExample));   // object
      console.log(typedArrayExample);           // {"0": 32.36000061035156, "1": 0}
      console.log(typedArrayExample[0]);        // 32.36000061035156

      参考:

      【讨论】:

        【解决方案3】:

        您可以使用 arraySync() 方法访问输出张量中的预测值。例如如果输出张量是一个只有一个输出值的二维数组,那么下面的代码会给你预测值。

         const resultTensor = model.predict(tf.tensor2d([50], [1, 1]));
         const predictedValue = resultTensor.arraySync()[0][0];
         console.log(predictedValue);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-07-17
          • 1970-01-01
          • 2020-10-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-12
          • 1970-01-01
          相关资源
          最近更新 更多