如何使用TensorFlow hub从Keras模型中获取所有图层



我使用hub.KerasLayer的efficientnetv2,我想在使用model.summary()时看到所有图层,但它只显示"keras_layer (KerasLayer)">

tbody> <<tr>
图层(类型) 输出形状 参数#
keras_layer (KerasLayer)(没有,1280)5919312
辍学(辍学)(没有,1280)0
密度(密度)(没有,2)2562

这样你就可以"跳转到内部";模型;

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])

…当然,请注意输出很长,但请根据需要修改输出打印。

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

如果您想访问单个层,更好的选择可能是使用作者原始实现中的模型。它可以构造如下:

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

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

还请注意,TensorFlow的未来版本将包括EfficientNet v2(已经在夜间构建中可用)。

最新更新