Tensorflow.js加载模型返回函数预测未定义

时间:2018-09-27 20:55:36

标签: javascript tensorflow.js

当我这样加载保存的模型时(请不要介意预测函数没有输入的事实)

const tf = require('@tensorflow/tfjs');
require('@tensorflow/tfjs-node');

const model = tf.loadModel('file://./model-1a/model.json').then(() => {
  model.predict();
});

我收到此错误:

  

(节点:25887)UnhandledPromiseRejectionWarning:TypeError:   model.predict不是函数       在tf.loadModel.then(/home/ubuntu/workspace/server.js:10:9)       

但是当我只创建一个模型而不是加载它时,效果很好

const model = tf.sequential();
model.add(tf.layers.dense({units: 10, inputShape: [10005]}));
model.add(tf.layers.dense({units: 1, activation: 'linear'}));
model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});

模型预测功能可以正常工作吗?我不知道这里可能出什么问题,我希望有人可以帮助我。

1 个答案:

答案 0 :(得分:2)

您需要使用promises

loadModel()返回解析为已加载模型的Promise。因此,要访问它,您需要使用.then()表示法,或者位于async函数中并await

.then()

tf.loadModel('file://./model-1a/model.json').then(model => {
  model.predict();
});

async/await

async function processModel(){
    const model = await tf.loadModel('file://./model-1a/model.json');
    model.predict();
}
processModel();

或更简单,更直接的方式:

(async ()=>{
    const model = await tf.loadModel('file://./model-1a/model.json');
    model.predict();
})()