gpt4 book ai didi

tensorflow.js - 如何在 TFJS hub 模型上使用 Model.save 功能?

转载 作者:行者123 更新时间:2023-12-04 04:19:44 24 4
gpt4 key购买 nike

我不知道 javascript,所以我想将仅在 JS 中可用的 HUB 模型移动到 SavedModel 格式。

我从教程中复制了这个脚本并尝试添加 model.save 函数,但它不起作用。

这是脚本:


<html><head>
<!-- Load the latest version of TensorFlow.js -->
<script src="https://unpkg.com/@tensorflow/tfjs"></script>
<script src="https://unpkg.com/@tensorflow-models/mobilenet"></script>

</head>
<body>
<div id="console"></div>
<!-- Add an image that we will use to test -->
<img id="img" src="https://i.imgur.com/JlUvsxa.jpg" width="227" height="227">

<script>
let net;

async function app() {
console.log('Loading mobilenet..');

// Load the model.
net = await mobilenet.load();
console.log('Successfully loaded model');

// Make a prediction through the model on our image.
const imgEl = document.getElementById('img');
const result = await net.classify(imgEl);
console.log(result);

console.log('Saving mobilenet...');
const saveResults = await net.save('downloads://my-model-1');
console.log('Mobilenet saved');
}
app();

</script>
</body></html>


这是我得到的错误:
Uncaught (in promise) TypeError: net.save is not a function
at app (TFjsmodelSaver.html:27)
app @ TFjsmodelSaver.html:27
async function (async)
app @ TFjsmodelSaver.html:19
(anonymous) @ TFjsmodelSaver.html:30

该错误清楚地表明 net.save 不是应用程序中的功能,但同时 net.classify 有效,并且保存在 tfjs 中: https://js.tensorflow.org/api/0.12.5/#tf.Model.save

我错过了什么?

顺便说一句,如果有一种方法可以在 SavedModel 中获取 HUB 模型而无需通过此操作,请指出它。我假设模型首先在 TF 中创建,然后移植到 TFJS,所以它们可能在某处可用......

最佳答案

mobilenet.load()返回 MobileNet 类型的 promise 。这是接口(interface)定义:

export interface MobileNet {
load(): Promise<void>;
infer(
img: tf.Tensor|ImageData|HTMLImageElement|HTMLCanvasElement|
HTMLVideoElement,
embedding?: boolean): tf.Tensor;
classify(
img: tf.Tensor3D|ImageData|HTMLImageElement|HTMLCanvasElement|
HTMLVideoElement,
topk?: number): Promise<Array<{className: string, probability: number}>>;
}

加载的模型不包含 save方法从而引发错误。

save is not a function



保存模型值得吗?
加载的模型不用于训练。所以每次需要时都可以使用 mobilenet.load 加载。 .

mobilenet 包只是mobilet savedModel 的包装器。 github repo 包含不同版本的 mobilenet 的 url,可以从中下载 savedModel。可以使用 tf.loadGraphModel 在本地加载模型.但是这个本地加载的模型将是 tf.GraphModel 类型。并且不包含方法 classifyinfer
一个 next release将提供保存 tf.GraphModel 的功能

关于tensorflow.js - 如何在 TFJS hub 模型上使用 Model.save 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59635220/

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