Javascript 错误:加载模型时无法读取为文件
我认为我犯了一个新手错误,但我很难找出到底出了什么问题 错误:Javascript 错误:加载模型时无法读取为文件,javascript,node.js,tensorflow,tensorflow.js,Javascript,Node.js,Tensorflow,Tensorflow.js,我认为我犯了一个新手错误,但我很难找出到底出了什么问题 错误: C:\Users\Awesome\Google Drive\Source\Programming\JS\Testing>节点分类rlc.jpg (节点:38620)未处理的PromisejectionWarning:错误:无法读取为文件:“model.json” 在readFile(C:\Users\Awesome\Google Drive\Source\Programming\JS\Testing\node\u modules\f
C:\Users\Awesome\Google Drive\Source\Programming\JS\Testing>节点分类rlc.jpg
(节点:38620)未处理的PromisejectionWarning:错误:无法读取为文件:“model.json”
在readFile(C:\Users\Awesome\Google Drive\Source\Programming\JS\Testing\node\u modules\filereader\filereader.JS:266:15)
在FileReader.self.readAsText(C:\Users\awome\Google Drive\Source\Programming\JS\Testing\node\u modules\FileReader\FileReader.JS:295:7)
在C:\Users\Awesome\Google Drive\Source\Programming\JS\Testing\node\u modules\@tensorflow\tfjs core\dist\io\browser\u files.JS:226:36
在新的承诺下(
库希望文件位于loadFromFiles
函数中。
默认情况下,无法在节点中使用该文件。
所以您需要在节点环境中以某种方式填充它,查看这些库
使用文件api的示例:
const fs=require('fs');
const path=require('path');
const FileAPI=require('file-api');
const uploadModel=“model.json”
const uploadModelPath=path.join(process.cwd(),uploadModel);
//聚填料
Object.keys(FileApi).forEach(key=>{
进程[key]=FileApi[key];
})
const uploadModelFile=新文件({
缓冲区:fs.readFileSync(uploadModelPath)
});
此库非常旧,可能无法使用,您可以尝试搜索其他polyfill库或编写您的库。
您可以查看文件的读取方式,也可以分叉并添加处理节点文件的可能性。使用文件api处理您的解决方案。出现以下错误:C:\Users\Aweasome\Google Drive\Source\Programming\JS\Testing\node\U modules\file\file.JS:35抛出新错误(“无名称”);^错误:在新文件中没有名称(C:\Users\Awesome\Google Drive\Source\Programming\JS\Testing\node\u模块\←[4M文件←[24m\File.js:35:13)在对象上。(C:\Users\Awesome\Google Drive\Source\Programming\js\Testing\classify.js:24:25)”。继续挖掘感谢您的建议。您需要为文件指定名称,如name:“abc-song.txt“
。您可以在node_moduels中看到库的源代码,我曾经通过阅读库的源代码来理解问题。我发现,将mime回滚到以前的版本以解决另一个问题,现在似乎正在执行,但函数“processMetaData”在@teachablemachine中,模块正在为提供的无效metada抛出错误。调查仍在继续,再次感谢。
const tf = require('@tensorflow/tfjs');
const tfnode = require('@tensorflow/tfjs-node');
const tmImage = require('@teachablemachine/image');
const fs = require('fs');
global.FileReader = require('filereader');
const uploadModel = "model.json"
const uploadWeights = "weights.bin"
const uploadMetadata = "metadata.json"
const readImage = path => {
const imageBuffer = fs.readFileSync(path);
const tfimage = tfnode.node.decodeImage(imageBuffer);
return tfimage;
}
const imageClassification = async path => {
const image = readImage(path);
const model = await tmImage.loadFromFiles(uploadModel,uploadWeights,uploadMetadata);
const predictions = await model.predict(image);
console.log('Classification Results:', predictions);
}
if (process.argv.length !== 3) throw new Error('Incorrect arguments: node classify.js <IMAGE_FILE>');
imageClassification(process.argv[2]);
/Testing
/node_modules
classify.js
metadata.json
model.json
package-lock.json
rlc.jpg
weights.bin