我正在尝试使用Node将Keras模型导入Tensorflow.JS,并且没有发生明显的错误,但是,当我尝试使用导入的模型时,它没有可用的功能,因此显然未正确加载。我选择使用Express托管静态HTTP文件服务器,并且托管model.json以及20个二进制分片文件。
我认为,如果在读取此模型时遇到问题,则会出现明显的错误(因为我以前遇到过此错误,因此必须修改我的Express代码以对其进行修复...)
本地模型:
静态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开发总体而言是新手,所以请原谅任何明显的疏忽!
再次感谢,乔什
答案 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');
}