【问题标题】:How can I "see" the model/network when loading a model from tfhub?从 tfhub 加载模型时,如何“查看”模型/网络?
【发布时间】:2020-10-11 05:50:05
【问题描述】:

我是这个话题的新手,所以请原谅我缺乏知识。有一个非常好的模型,叫做inception resnet v2,它基本上是这样工作的,输入是一张图像,并输出一个预测列表及其位置和有界矩形。我发现这非常有用,我想使用已经工作的模型来识别它现在不能识别的东西(例如,如果一个人是否戴着面具)。是的,我想为模型添加一个新的识别类。

import tensorflow as tf
import tensorflow_hub as hub
mod = hub.load("https://tfhub.dev/google/faster_rcnn/openimages_v4/inception_resnet_v2/1")

mod 是一个类型的对象 tensorflow.python.training.tracking.tracking.AutoTrackable,阅读文档(仅在 source code 上可用,没有上下文有点难以理解) 我试图检查它的一些属性,看看我是否能自己弄清楚。

好吧,我没有。如何查看网络、层、权重? fit 方法,是不是都被抽象掉了?我可以将其转换为 keras 吗?我想尝试一下,看看我是否可以修改它,看看我是否可以将模型导出到另一个表示,例如 pytorch。

我想这样做是因为我认为最好修改一个已经工作的模型,而不是从头开始创建一个。也因为我自己不擅长训练模型。

【问题讨论】:

    标签: python tensorflow deep-learning tensorflow-hub


    【解决方案1】:

    我也遇到过这个问题。 TensorFlow hub guide 说:

    在 TF2 中使用 hub.load() API 加载 TF1 Hub 格式的模型时,经常会出现此错误。添加正确的签名应该可以解决这个问题。

    mod = hub.load(handle).signatures['default']
    

    作为一个例子,你可以看到这个notebook

    【讨论】:

      【解决方案2】:

      您可以 dir 加载的模型资源以查看其上定义的内容

      m = hub.load(handle)
      dir(model)
      

      正如另一个答案中提到的,您还可以查看带有print(m.signatures)的签名

      Hub 模型是 SavedModel 资产,没有 keras .fit 方法。如果您想从头开始训练模型,则需要转到源代码。

      某些模型具有更广泛的导出接口,包括访问各个层,但此模型没有。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-03
        • 1970-01-01
        • 1970-01-01
        • 2020-09-10
        • 1970-01-01
        • 2020-02-17
        • 2011-01-29
        相关资源
        最近更新 更多