如何显示包含嵌套模型的TensorFlow Keras模型的全部层?
方法1:使用summary()的内置展开参数
TensorFlow 2.5及以上版本的model.summary()提供了expand_nested参数,设置为True即可直接展开所有嵌套模型的内部层,还可以搭配show_trainable=True同时显示每层的可训练状态:
model.summary(expand_nested=True, show_trainable=True)
执行后输出会自动把MobileNetV3Small的所有内部层按层级展开展示。
方法2:递归遍历全层(兼容低版本TF)
如果你的TensorFlow版本较低不支持上述参数,或者需要自定义输出内容,可以手写递归遍历函数:
def print_all_layers(model, indent_level=0): indent = " " * indent_level for layer in model.layers: # 打印当前层基础信息 print(f"{indent}层名:{layer.name} | 类型:{layer.__class__.__name__} | 输出形状:{layer.output_shape} | 参数量:{layer.count_params()}") # 如果当前层是包含子层的容器(比如预训练模型、Sequential实例),递归遍历子层 if hasattr(layer, "layers"): print_all_layers(layer, indent_level + 1) # 调用函数打印全部层 print_all_layers(model)
函数会用缩进区分层级,逐层输出所有嵌套的子层信息。
方法3:单独打印基础模型结构
如果你只需要查看MobileNetV3Small的内部层,直接调用基础模型的summary方法即可:
base_model.summary()
内容的提问来源于stack exchange,提问作者YoniChechik
相关产品推荐
相关产品推荐

