TRT推理AttributeError: ‘NoneType‘ object has no attribute ‘create_execution_context‘出错原因与解决

TensorRT 推理AttributeError: ‘NoneType’ object has no attribute 'create_execution_context’出错原因与解决

1.问题描述

出错代码段如下所示:

def load_model(engine_path):
    f = open(engine_path, "rb")
    runtime = trt.Runtime(trt.Logger(trt.Logger.WARNING))
    engine = runtime.deserialize_cuda_engine(f.read())
    context = engine.create_execution_context()
    return engine, context

当执行到context = engine.create_execution_context()这一行时,出现AttributeError: 'NoneType' object has no attribute 'create_execution_context'错误

2.出错原因及解决

在出错的这一行打个断点,发现engine = runtime.deserialize_cuda_engine(f.read())这一行在执行完之后,engineNone,如下图所示,说明此时就已经出问题了,程序并没有能够成功的从engine文件反序列化出模型。因此执行到engine.create_execution_context()时,自然就找不到这个接口了。
在这里插入图片描述
由于我印象中的这个engine文件之前是可以正常使用的,因此我首先怀疑的是环境问题,检查一下tensorrt安装的没有问题;然后就考虑是不是我生成的engine文件的问题,然后重新生成了个engine文件就正常了。如下图所示,总之engine不能是None
在这里插入图片描述
结论:重新生成或更换个engine/trt文件,检查环境

3.相似问题

以下两个链接与本文问题比较相似,但解决方法不同

相似问题1
相似问题2

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值