TensorflowJS:无法解析 model.json

dvb*_*len 9 json tensorflow tensorflow.js

我已重新训练 Mobilenet 模型并将其转换为 model.json 文件。该文件已加载到我的图像分类平台中(获得 200 OK 状态代码),但未被识别为正确的 json。

我已经使用这些网站来验证我的 json 文件

https://jsonlint.com/

https://jsonformatter.curiousconcept.com/

两者都将我的文件返回为经过验证的 json。

其他两个 JSON 文件以相同的方式加载到页面中,并且它们不返回任何错误

但我仍然不断收到此错误:

Uncaught (in promise) Error: Failed to parse model JSON of response from https://localhost/pathto/model.json. Please make sure the server is serving valid JSON for this request.

有谁知道该文件可能有什么问题?

编辑:我没有以任何方式接触 model.json,我只是将其加载到我的 index.js 文件中并收到错误。

这也是我的index.js(完整版本):

  const MODEL_URL =
      "https://localhost/tfjs_models/model.json";
    const WEIGHTS_URL =
      "https://localhost/tfjs_models/weights_manifest.json";
    let model;
    let IMAGENET_CLASSES = [];
    let offset = tf.scalar(128);
    async function loadModelAndClasses() {
  $.getJSON(
    "https://localhost/tfjs_models/labels.json",
    function(data) {
      $.each(data, function(key, val) {
        IMAGENET_CLASSES.push(val);
      });
    }
  );
  model = await tf.loadGraphModel(MODEL_URL, WEIGHTS_URL);
  //console.log("After model is loaded: " + tf.memory().numTensors);
  $(".loadingDiv").hide();
  $("#inputImage").attr("disabled", false);
}
loadModelAndClasses();
function readURL(input) {
  if (input.files && input.files[0]) {
    var reader = new FileReader();

    reader.onload = function(e) {
      $("#imageSrc")
        .attr("src", e.target.result)
        .width(224)
        .height(224);
    };

    reader.readAsDataURL(input.files[0]);
    //console.log("After image is loaded: " + tf.memory().numTensors);

    reader.onloadend = async function() {
      console.log("Before predictions: " + tf.memory().numTensors);

      let imageData = document.getElementById("imageSrc");

      //console.log("After offset: " + tf.memory().numTensors);
      let pixels1 = tf.fromPixels(imageData);
      let pixel2 = pixels1.resizeNearestNeighbor([224, 224]);
      let pixel3 = pixel2.toFloat();
      console.log("After pixels are formed: " + tf.memory().numTensors);

      let pixels = pixel3.sub(offset);
      let pixels4 = pixels.div(offset);
      let pixels5 = pixels4.expandDims();
      console.log("After pre-processing: " + tf.memory().numTensors);

      const output = await model.predict(pixels5);
      console.log("After output: " + tf.memory().numTensors);
      const predictions = Array.from(output.dataSync())
        .map(function(p, i) {
          return {
            probabilty: p,
            classname: IMAGENET_CLASSES[i]
          };
        })
        .sort((a, b) => b.probabilty - a.probabilty)
        .slice(0, 10);

      //console.log(predictions);
      var html = "";
      for (let i = 0; i < 10; i++) {
        html += "<li>" + predictions[i].classname + "</li>";
      }
      $(".predictionList").html(html);
      console.log("After predictions: " + tf.memory().numTensors);

      pixels.dispose();
      pixels1.dispose();
      pixel2.dispose();
      pixel3.dispose();
      pixels4.dispose();
      pixels5.dispose();
      output.dispose();
      console.log("After dispose: " + tf.memory().numTensors);
    };
  }
}
Run Code Online (Sandbox Code Playgroud)

这是由 TensorflowJS Converter 生成的模型的链接。

https://github.com/dvbeelen/tfjs_model

edk*_*ked 0

模型加载错误。这是文档

这应该足以加载模型

model = await tf.loadGraphModel(MODEL_URL)
Run Code Online (Sandbox Code Playgroud)

weights_manifest.json不需要提供的需求

  • 你好!这个问题解决了吗?3年后遇到同样的问题:) (2认同)