【问题标题】:Tensorflow mobilenet use models offlineTensorFlow mobilenet 离线使用模型
【发布时间】:2020-12-23 05:28:25
【问题描述】:

我正在使用来自 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

【问题讨论】:

    标签: javascript tensorflow mobilenet


    【解决方案1】:

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

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

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

    效果会很好

    【讨论】:

      【解决方案2】:

      如果您安装了 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/
      

      【讨论】:

      • 抱歉,我真的不明白这对我离线运行 tensorflows.js 模型有何帮助?
      • 我想我不明白问题是什么。 “离线”对您来说是什么意思
      • 好吧,只是没有连接到互联网 :) 正如您所看到的,它现在尝试从 googleapis 获取权重。我想保存它们并将它们拉到本地,这样当我没有任何可用的互联网连接时我也可以使用它们。
      • 查看修改后的答案。有四组可能的权重。
      • 谢谢!实际上,我现在只是使用错误消息中的链接手动下载了每个分片。请参阅上面的更新
      猜你喜欢
      • 2018-10-07
      • 1970-01-01
      • 2018-06-17
      • 2021-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-22
      • 2020-08-06
      相关资源
      最近更新 更多