Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
tensorflow.js中预测的输出概率_Tensorflow_Tensorflow.js - Fatal编程技术网

tensorflow.js中预测的输出概率

tensorflow.js中预测的输出概率,tensorflow,tensorflow.js,Tensorflow,Tensorflow.js,我通过tensorflow.js转换器从tensorflow生成了一个model.json 在python中tensorflow模型的原始实现中,它是这样构建的: model = models.Sequential([ base_model, layers.Dropout(0.2), layers.Flatten(), layers.Dense(128, activation='relu'), layers.Dense(num_classes)

我通过tensorflow.js转换器从tensorflow生成了一个model.json

在python中tensorflow模型的原始实现中,它是这样构建的:

model = models.Sequential([
        base_model,
    layers.Dropout(0.2),
    layers.Flatten(),
    layers.Dense(128, activation='relu'),
    layers.Dense(num_classes)
    ])
根据官方网站上的教程,在tensorflow中,概率可以通过score=tf.nn.softmax(预测[0])生成

如何在tensorflow.js中获得此概率

我已复制代码模板,如下所示:

$("#predict-button").click(async function () {
    if (!modelLoaded) { alert("The model must be loaded first"); return; }
    if (!imageLoaded) { alert("Please select an image first"); return; }
    
    let image = $('#selected-image').get(0);
    
    // Pre-process the image
    console.log( "Loading image..." );
    let tensor = tf.browser.fromPixels(image, 3)
        .resizeNearestNeighbor([224, 224]) // change the image size
        .expandDims()
        .toFloat()
        // RGB -> BGR
    let predictions = await model.predict(tensor).data();
    console.log(predictions);
    let top5 = Array.from(predictions)
        .map(function (p, i) { // this is Array.map
            return {
                probability: p,
                className: TARGET_CLASSES[i] // we are selecting the value from the obj
            };
        }).sort(function (a, b) {
            return b.probability - a.probability;
        }).slice(0, 2);
        console.log(top5);
    $("#prediction-list").empty();
    top5.forEach(function (p) {
        $("#prediction-list").append(`<li>${p.className}: ${p.probability.toFixed(6)}</li>`);
        });
请帮忙!!!
谢谢

要使用softmax函数从模型的logits中提取概率,可以执行以下操作:

这是logit数组,也是从模型中得到的
预测

const logits = [-2.5525975227355957, 7.398464679718018, -3.252196788787842, 4.710395812988281, -4.636396408081055]
您可以对值数组调用
tf.softmax()

const probabilities = tf.softmax(logits)
结果:

[0.0000446, 0.9362511, 0.0000222, 0.0636765, 0.0000056]
1
然后,如果希望以最大的概率获取索引,可以使用
tf.argMax()

结果:

[0.0000446, 0.9362511, 0.0000222, 0.0636765, 0.0000056]
1
编辑 我不太熟悉jQuery,所以这可能不正确。但下面是我如何按降序获得输出概率的方法:

let probabilities = tf.softmax(predictions).dataSync();
$("#prediction-list").empty();
probabilities.forEach(function(p, i) {
  $("#prediction-list").append(
    `<li>${TARGET_CLASSES[i]}: ${p.toFixed(6)}</li>`
  );
});
let probabilities=tf.softmax(预测).dataSync();
$(“#预测列表”).empty();
概率。forEach(函数(p,i){
$(“#预测列表”)。追加(
`
  • ${TARGET_CLASSES[i]}:${p.toFixed(6)}
  • ` ); });
    不是p.probability.toFixed(6)
    概率吗?它只是输出变量“predictions”中的值,包括问题中预测的输出。它现在包含在编辑的问题中。概率与预测的输出值完全相同。我不明白这些概率不是你想要的吗?听起来很棒!所以,您能直接告诉我应该如何修改原始代码,以降序显示(而不是在console.log中)每个输出的概率吗?(很抱歉,当我想在线发布我的模型时,我只是javascript的初学者)@Maximus你能检查一下更新的答案吗?没有,因为它的形状是5。你能试试概率打印吗?现在怎么样?我认为问题在于我没有使用
    dataSync()
    下载张量。它现在可以工作了。谢谢