TFJS节点模型无法正确加载,没有可用功能

时间:2019-10-12 08:50:01

标签: node.js tensorflow tensorflow.js

我正在尝试使用Node将Keras模型导入Tensorflow.JS,并且没有发生明显的错误,但是,当我尝试使用导入的模型时,它没有可用的功能,因此显然未正确加载。我选择使用Express托管静态HTTP文件服务器,并且托管model.json以及20个二进制分片文件。

我认为,如果在读取此模型时遇到问题,则会出现明显的错误(因为我以前遇到过此错误,因此必须修改我的Express代码以对其进行修复...)

本地模型:

File Structure - if it helps!

静态HTTP服务器:

file_server.use(express.static(__dirname + '/model')); // Where the model resides

加载模型:

var tf = require('@tensorflow/tfjs-node');
const model = tf.loadLayersModel('http://127.0.0.1:3001/model.json');
console.log(typeof(model)); // Returns 'object'

var predictions = model.predict(image_tensor).data(); 
// TypeError: model.predict is not a function

我尝试使用await将模型加载到异步函数中,并尝试进行异步预测,但是问题仍然存在。

如果需要更多信息,请告诉我,我对Node和Web开发总体而言是新手,所以请原谅任何明显的疏忽!

再次感谢,乔什

1 个答案:

答案 0 :(得分:0)

经过一番弄乱后,我发现这不是在模型中加载问题,而是模型处于大范围观察范围之内。将const更改为var似乎可以解决此问题。我不知道为什么只有这些功能不可用,但是这段代码似乎可以解决该问题:

var tf = require('@tensorflow/tfjs-node');
var model = "";

exports.loadModel = async function() {
    model = await tf.loadLayersModel('http://127.0.0.1:3001/model.json');
}