0

我使用来自 tensorflow 的 mobilenet 并尝试离线加载模型。

模型在这里加载:

tf.loadModel(this.path)]

我的第一种方法是简单地下载 model.json 并指向该文件而不是我的代码中的完整 url,如下所示:

   // this.path = 'https://storage.googleapis.com/tfjs-models/tfjs/mobilenet_v1_1.0_224/model.json';
   this.path = "./model.json";

但后来我收到以下错误: 在此处输入图像描述

GET https://storage.googleapis.com/tfjs-models/tfjs/mobilenet_v1_1.0_224/group37-shard1of1 net::ERR_INTERNET_DISCONNECTED
weights_loader.js:47 

如何下载并正确指向权重以供离线使用?


更新 我现在只是使用错误消息中的链接手动下载了每个分片。

https://storage.googleapis.com/tfjs-models/tfjs/mobilenet_v1_1.0_224/group1-shard1of1 https://storage.googleapis.com/tfjs-models/tfjs/mobilenet_v1_1.0_224/group1-shard1of1 https:// storage.googleapis.com/tfjs-models/tfjs/mobilenet_v1_1.0_224/group1-shard1of1 等等,直到 https://storage.googleapis.com/tfjs-models/tfjs/mobilenet_v1_1.0_224/group55-shard1of1

现在组正确加载: 在此处输入图像描述

但我收到一条新的错误消息:

错误:根据提供的形状 [1,1,1024,1000] 和 dtype float32,张量应该有 1024000 个值,但有 410072

4

2 回答 2

0

当您下载 model.json 时,您可以在该 json 中看到 group1-shard1of2 和 group1-shard2of2 文本

将这些文本更改为 group1-shard1of2.txt 和 group1-shard2of2.txt

并将这些文件放在您的服务器位置

这会很好用

于 2022-02-17T02:37:26.207 回答
-1

如果您安装了 tensorflow,则可以使用 MobileNet 和 MobileNet 版本 2 模型,如下所示。文档在[这里][1]。对于原始版本,您可以使用以下代码获得在 imagenet 数据集上训练的模型的权重,图像大小为 224 X 224。有四组预训练的权重可用于图像大小 224、192,160,128,因此请选择您想要的。下面我选择了 224 X 224 图像尺寸的权重。变量权重将包含预训练的权重。

image_size=224
mobile = tf.keras.applications.mobilenet.MobileNet( include_top=True,
                                                           input_shape=(image_size,image_size,3), weights='imagenet',alpha=1, depth_multiplier=1, dropout=.1)
model = Model(inputs=mobile.input, outputs=mobile.output)  
model.compile(Adamax(lr=.001), loss='categorical_crossentropy', metrics=['accuracy'])
weights=model.get_weights()


  [1]: https://keras.io/api/applications/mobilenet/
于 2020-09-04T00:26:36.793 回答