【问题标题】:How to get all layers from Keras Model with TensorFlow hub如何使用 TensorFlow hub 从 Keras 模型中获取所有层
【发布时间】:2021-10-13 16:50:13
【问题描述】:

我使用来自hub.KerasLayer 的efficientnetv2,我想在使用model.summary() 时查看所有层,但它只显示“keras_layer (KerasLayer)”

Layer (type) Output Shape Param #
keras_layer (KerasLayer) (None, 1280) 5919312
dropout (Dropout) (None, 1280) 0
dense (Dense) (None, 2) 2562

【问题讨论】:

    标签: tensorflow2.0 tensorflow-hub


    【解决方案1】:

    这样你就可以“跳入”模型;

    import tensorflow_hub as hub
    
    malli = hub.KerasLayer("https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet21k_b0/feature_vector/2")
    print("Thickness of the model:", len(malli.weights))
    for i in range(len(malli.weights)):
        print("In layer ",malli.weights[i].name," the content is: ", malli.weights[i])
    

    ...当然要注意输出很长,但是根据您的需要修改输出打印。

    【讨论】:

      【解决方案2】:

      TensorFlow 的SavedModel 本质上是一个计算图。虽然您原则上可以检查其结构,但没有关于高级架构块的信息。

      如果您想访问各个层,更好的选择可能是使用作者original implementation 中的模型。可以这样构造:

      from effnetv2_model import get_model
      model = get_model('efficientnetv2-s', weights='imagenet21k-ft1k', with_endpoints=True)
      

      预训练的权重可用于与TensorFlow Hub 相同的配置。 model.summary() 显示单个 (Fused)MBConv 块。

      另请注意,TensorFlow 的未来版本 will include EfficientNet v2(已在夜间构建中提供)。

      【讨论】:

        猜你喜欢
        • 2021-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-07
        • 1970-01-01
        • 2019-11-04
        • 2018-05-18
        相关资源
        最近更新 更多