Web 使用tensorflow.js打印预测时出现问题

Web 使用tensorflow.js打印预测时出现问题,web,predict,tensorflow.js,mobilenet,Web,Predict,Tensorflow.js,Mobilenet,我已经使用命令行工具对mobilenet_v2模型进行了再培训,并使用为浏览器准备模型 make_image_classifier \ --image_dir image_data \ --tfhub_module https://tfhub.dev/google/tf2-preview/mobilenet_v2/feature_vector/4 \ --saved_model_dir trained_models/1 \ --labels_output_file class_l

我已经使用命令行工具对mobilenet_v2模型进行了再培训,并使用为浏览器准备模型

make_image_classifier \
  --image_dir image_data \
  --tfhub_module https://tfhub.dev/google/tf2-preview/mobilenet_v2/feature_vector/4 \
  --saved_model_dir trained_models/1 \
  --labels_output_file class_labels.txt \
  --tflite_output_file trained_model.tflite
为了测试TF-Lite模型,我使用了。 我遵循了工具的说明,因此使用了提供的代码

如果我现在尝试在浏览器中预测图像,则无法获得预期的输出。看起来只有概率被打印出来而没有标签

const MODEL_URL = 'model/model.json';
const model = await tf.loadGraphModel(MODEL_URL);

var canvas = document.getElementById("canvas").getContext("2d");;
const img = canvas.getImageData(0,0, 224,224)

const tfImg = tf.browser.fromPixels(img).expandDims(0);
const smalImg = tf.image.resizeBilinear(tfImg, [224, 224]);

let result = await model.predict(smalImg);

console.log(result.print())
输出:张量 [0.0022475,0.0040588,0.0220788,0.0032885,0.000126,0.0030831,0.8462179,0.1188994],]


用python测试模型效果很好,我得到了带有标签和概率的预期输出。我做错什么了吗?

在python代码中,预测之后有以下内容:

#输出数据是预测结果
结果=np.挤压(输出数据)
top_k=results.argsort()[-5:[:-1]
标签=加载标签(args.label\u文件)
对于top_k中的i:
如果是浮动U型:
打印({:08.6f}:{})。格式(浮点(结果[i]),标签[i]))
其他:
打印({:08.6f}:{})。格式(浮点(结果[i]/255.0),标签[i]))
在js中预测之后,需要进行相同的处理。
标签的数组
包含数据集的所有标签。它需要在js中加载,因为它是从
labels.txt
文件加载到python代码中的

const topkIndices=result.topk(5)
const topkIndices=等待topk.index.data();
const categories=(Array.from(topkIndices)).map((p:number)=>labels[p]);
const topkValues=等待topk.values.data()
const data=Array.from(topkValues.map)(p=>p*100);
//类别将包含前5个标签和
//数据将包含相应的概率

能否请您在问题中添加python代码以及如何将模型转换为js?谢谢您的回答。我添加了指向我使用的工具/说明的链接。如果您需要更多信息,请告诉我。请参阅下面的答案
const MODEL_URL = 'model/model.json';
const model = await tf.loadGraphModel(MODEL_URL);

var canvas = document.getElementById("canvas").getContext("2d");;
const img = canvas.getImageData(0,0, 224,224)

const tfImg = tf.browser.fromPixels(img).expandDims(0);
const smalImg = tf.image.resizeBilinear(tfImg, [224, 224]);

let result = await model.predict(smalImg);

console.log(result.print())