gpt4 book ai didi

javascript - tensorflow js 模型(从 Keras 转换而来)有 3 个输出。我怎样才能提取它们?

转载 作者:行者123 更新时间:2023-11-28 03:09:48 25 4
gpt4 key购买 nike

我在 Keras 中训练了一个 yolov3 模型,它有 3 个输出(3D 张量)。那里没问题。然后我将这个模型转换为 tfjs 以在浏览器中运行它。如果我将模型 chop 为这一特定输出,我可以轻松获取每个输出的内容。但我无法立即获得完整的(3 个输出)。我想知道这是否可能?

这是我想做的(它不起作用,它挂起):

const myTracker = await tf.loadLayersModel(v3_model); 
const prediction = tf.tidy(() => {

// prepare inputs tensor
const inputs = tf.browser.fromPixels(canvas, 3).expandDims(0).toFloat().div(tf.scalar(255));
console.log("============ inputs tensor shape:" + inputs.shape); //--> 1,416,416,3

// get all 3 outputs
const outputs = myTracker.predict(inputs).arraySync();
outputs.print();
return outputs;
});

如果我在识别 3 个输出名称后只对 1 个输出感兴趣,则以下方法有效。

const myTracker = await tf.loadLayersModel(v3_model); 
const prediction = tf.tidy(() => {

// prepare inputs tensor
const inputs = tf.browser.fromPixels(canvas, 3).expandDims(0).toFloat().div(tf.scalar(255));
console.log("============ inputs tensor shape:" + inputs.shape); //--> 1,416,416,3

// get the full object of interesting layers
const layer3 = myTracker.getLayer('conv2d_3');
const layer8 = myTracker.getLayer('conv2d_8');
const layer13= myTracker.getLayer('conv2d_13');

// get 1 specific output from a new model build from the original
const myTracker_truncated = tf.model({inputs: myTracker.inputs, outputs: layer3.output});
const outputs = myTracker_truncated.predict(inputs).arraySync();
return outputs;
});

如果我检查 (console.log(myTracker)),我会得到以下输出结构:

outputNames: (3) […]
0: "conv2d_3
1: "conv2d_8"
2: "conv2d_13"
length: 3

outputs: (3) […]
0: Object { dtype: "float32", id: 662, originalName: "conv2d_3/conv2d_3", … }
1: Object { dtype: "float32", id: 665, originalName: "conv2d_8/conv2d_8", … }
2: Object { dtype: "float32", id: 668, originalName: "conv2d_13/conv2d_13", … }
length: 3

有人知道我想要实现的目标是否可行(在原始 keras 模型中将 3 个输出连接成 1 个输出)吗?

最佳答案

在使用tf.model创建模型时,可以通过使用输出数组来获得三个输出

tf.model({inputs: myTracker.inputs, outputs: [layer3.output, layer8.output, layer13.output, ...]});

prediction = myTracker_truncated.predict(inputs).arraySync()

现在预测将是一个由三个值组成的数组,分别对应于outputs中定义的层

关于javascript - tensorflow js 模型(从 Keras 转换而来)有 3 个输出。我怎样才能提取它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60238064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com