如何获取TensorFlow.js模型中对应NumPy数组的tensor2d实际值
TensorFlow.js获取predict输出张量具体数值的解决方案
你之前的写法错误根源在于参数传递逻辑错位:model.predict()要求输入为张量,你将取值操作放在输入参数中自然触发类型错误,正确流程是先调用predict得到输出张量,再从输出张量中提取数值,可选方案如下:
方案1:同步取值(适合小尺寸张量场景)
调用张量内置的同步取值方法直接获取结果:
const x = tf.tensor2d([company_name]) const output = model.predict(x) // 方式A:转为嵌套数组,对应shape为[1,1]的二维张量直接取[0][0] const resultArr = output.arraySync() const targetValue = resultArr[0][0] console.log(targetValue) // 输出38.340986这类具体数值 // 方式B:转为扁平一维数组,取第0位即可 const resultData = output.dataSync() const targetValue2 = resultData[0] // 方式C:直接按坐标取值,二维张量传入行列索引 const targetValue3 = output.get(0, 0) // 取值完成后手动释放张量内存,避免内存泄漏 x.dispose() output.dispose()
方案2:异步取值(适合大尺寸张量,避免阻塞主线程)
使用异步API配合Promise或者async/await语法实现取值:
// Promise写法 const x = tf.tensor2d([company_name]) const output = model.predict(x) output.array().then(resultArr => { const targetValue = resultArr[0][0] console.log(targetValue) x.dispose() output.dispose() }) // async/await写法 async function getPredictResult() { const x = tf.tensor2d([company_name]) const output = model.predict(x) const resultArr = await output.array() const targetValue = resultArr[0][0] x.dispose() output.dispose() return targetValue } // 调用函数获取结果 getPredictResult().then(val => console.log(val))
内容的提问来源于stack exchange,提问作者Radon333
相关产品推荐
相关产品推荐

