You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Keras Xception模型的输出节点名称?

获取Keras Xception模型输出节点名方法

方法1:直接读取模型输出属性

实例化或加载完模型后直接调用output_names属性即可获取,代码示例:

import tensorflow as tf
from tensorflow.keras.applications import Xception

# 加载官方预训练Xception
model = Xception(weights='imagenet')
# 加载自己微调后保存的模型替换为下方代码
# model = tf.keras.models.load_model('your_custom_xception.h5')

# 直接打印输出节点名
print(model.output_names)
  • 官方预训练原版Xception的默认输出节点名为predictions
  • 如果你自定义过输出层,输出节点名就是你给输出层设置的name参数值,未手动设置的话会返回Keras自动生成的名称如dense_2这类格式

方法2:遍历计算图节点确认(适配冻结模型场景)

如果需要确认节点对应的算子类型,避免冻结时选错节点,可以遍历全图操作节点筛选:

for op in model.graph.get_operations():
    # 筛选输出层常用的Softmax类算子
    if 'Softmax' in op.type or 'predictions' in op.name.lower():
        print("节点名:", op.name, "输出张量:", op.outputs)
冻结模型适配OpenCV调用的补充说明

拿到输出节点名后,可通过以下代码将Keras模型转为OpenCV dnn模块可读取的冻结pb模型,注意替换代码里的输出节点名:

from tensorflow.python.framework.convert_to_constants import convert_variables_to_constants_v2

# 将Keras模型转为TensorFlow函数
infer_func = tf.function(lambda input_tensor: model(input_tensor))
infer_func = infer_func.get_concrete_function(
    tf.TensorSpec(model.inputs[0].shape, model.inputs[0].dtype)
)

# 将变量转为常量完成冻结
frozen_graph = convert_variables_to_constants_v2(infer_func)

# 保存冻结后的pb模型
tf.io.write_graph(
    graph_or_graph_def=frozen_graph.graph,
    logdir="./frozen_model",
    name="xception_frozen.pb",
    as_text=False
)
  • 后续在OpenCV中加载该pb模型做推理时,输出blob对应的节点名就填你之前获取到的输出节点名即可。

内容的提问来源于stack exchange,提问作者beaustroms

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 22:45:03