首页 > 解决方案 > 在本地 Web 应用程序中的 javascript 中加载 json 预训练模型时出错

问题描述

目前我正在使用TensorFlow在python中训练一个模型并将其保存为model.json以及名为models的文件夹中的BIN文件,如下所示。我想做一个可以加载这个预训练模型进行预测的 Web 应用程序。但是,我遇到了错误Failed to load resource: net::ERR_NAME_NOT_RESOLVED我已经google了解决方案并尝试了几种方法,但错误仍然无法解决。

在此处输入图像描述

该模型在 .py 文件中进行了训练,并使用此行保存到 .json

tfjs.converters.save_keras_model(model, 'models')

供您参考,我在应用程序中使用 node.js 和 ExpressJs,因此,使用 EJS 文件而不是 HTML 文件。

EJS 文件

<!DOCTYPE html>
<html>
<head>
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@2.0.0/dist/tf.min.js"></script>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" >
    <link rel="stylesheet" type="text/css" href="/style/digit.css">
</head>
<body>
    <main>
        <p1>text here</p1>
    </main>   
    <script src="/js/digit-recognition.js"></script>
</body>
</html>

digit-recognition.js文件中

let model;

async function loadModel() {
    console.log("model loading..");
    model = undefined;
    model = await tf.loadLayersModel("models/model.json");
    console.log("model loaded..");
}
loadModel();

$("#predict-button").click(async function () {

    let predictions = await model.predict(tensor).data();
    let results = Array.from(predictions);
    console.log(results);
});

我收到控制台中显示的以下错误:

Failed to load resource: net::ERR_NAME_NOT_RESOLVED

更新于 2020 年 11 月 27 日上午 1131

我在网上尝试了许多建议的解决方案,但仍然无效,我得到的错误是现在

GET http://localhost:3000/models/model.json 404 (Not Found)

标签: javascriptexpresstensorflowtensorflow.js

解决方案


我相信这是一个路径问题。如果将models/文件夹移动到文件js/夹中,该digit-recognition.js文件应该可以找到它。


推荐阅读