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

将PB模型转为TensorRT UFF模型时遇AttributeError问题求助

解决TensorRT UFF转换时from_tensorflow_frozen_model属性错误的问题

看起来你在TX2上把TensorFlow PB模型转TensorRT UFF格式时踩了版本兼容的坑,这个AttributeError本质是TensorRT版本和你用的旧API不匹配导致的,下面给你一步步解决的方案:

错误原因分析

你调用的from_tensorflow_frozen_model方法根本不在tensorrt.parsers.uffparser模块里——早期TensorRT版本中,UFF模型转换是由独立的uff库负责的,而不是tensorrt内置的parsers模块;到了TensorRT 7.x及以上版本,官方甚至已经逐步弃用UFF,转而推荐ONNX作为中间格式,这就导致旧的示例代码在新环境下跑不通。

具体解决步骤

1. 先确认你的TensorRT版本

先在代码里加一行打印版本的代码:

import tensorrt as trt
print(trt.__version__)

根据版本不同,处理方式分两种:

情况1:TensorRT 7.x及以上(JetPack 4.5+的TX2通常是这个版本)

官方更推荐用ONNX格式替代UFF,步骤更简单兼容性也更好:

  • 用tf2onnx把PB模型转ONNX:
    !pip install tf2onnx
    !python -m tf2onnx.convert --input your_frozen_model.pb --inputs input_node_name:0 --outputs output_node_name:0 --output model.onnx
    
  • 然后用TensorRT的ONNX Parser加载模型:
    import tensorrt as trt
    
    logger = trt.Logger(trt.Logger.WARNING)
    builder = trt.Builder(logger)
    network = builder.create_network(1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH))
    parser = trt.OnnxParser(network, logger)
    
    with open("model.onnx", "rb") as f:
        if not parser.parse(f.read()):
            for error in range(parser.num_errors):
                print(parser.get_error(error))
    # 后续构建引擎的步骤和原来一致
    

如果你坚持要用UFF,需要单独安装NVIDIA的uff库,然后用uff模块的转换函数:

import uff
# 转换PB到UFF字节流
uff_model = uff.from_tensorflow_frozen_model("your_frozen_model.pb", ["output_node_name"])
# 保存为UFF文件
with open("model.uff", "wb") as f:
    f.write(uff_model)

再用trt.UffParser解析这个UFF文件即可。

情况2:TensorRT 6.x及以下

这个版本还支持uffparser,但转换PB的函数依然在独立的uff库中,所以你需要:

  • 确保安装了uff:pip install uff(TX2上如果是JetPack自带环境,可能需要用apt安装对应包)
  • 把代码中调用from_tensorflow_frozen_model的部分改成从uff模块导入,而不是tensorrt.parsers.uffparser

2. 额外注意事项

  • 确认PB模型的输入输出节点名称正确:可以用TensorFlow的代码查看节点名:
    import tensorflow as tf
    with tf.gfile.GFile("your_frozen_model.pb", "rb") as f:
        graph_def = tf.GraphDef()
        graph_def.ParseFromString(f.read())
    for node in graph_def.node:
        print(node.name)
    
  • TX2上的JetPack版本和TensorRT版本必须严格匹配,不要随便pip安装tensorrt,尽量用JetPack自带的包,避免版本冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 02:28:52