【tensorrt】——error: invalid new-expression of abstract class type ‘torch2trt::InterpolatePlugin’

本文主要是介绍【tensorrt】——error: invalid new-expression of abstract class type ‘torch2trt::InterpolatePlugin’,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

tensorrt

给tensorrt写插件的时候,报错:

interpolate.cpp:63:93: error: invalid new-expression of abstract class type ‘torch2trt::InterpolatePlugin’

因为还有父类的虚函数没有实现。

可以通过一个简单的类实现进行测试,所有的函数不需要实现,这样看有哪些虚函数。比如:

class InterpolatePlugin : public IPluginV2 
{
public:InterpolatePlugin(std::vector<int64_t> size, std::string mode, bool align_corners) {};InterpolatePlugin(const char *data, size_t length){};// create from serialized dataInterpolatePlugin(const std::string &data) {  };int getNbOutputs() const override {};Dims getOutputDimensions(int index, const Dims* inputs, int nbInputDims) override{    };int initialize() override{};void terminate() override{};size_t getWorkspaceSize(int maxBatchSize) const override{};int enqueue(int batchSize, const void* const* inputs, void** outputs, void* workspace, cudaStream_t stream) override{        };size_t getSerializationSize() const override{};void serialize(void* buffer) const override{};void configureWithFormat(const Dims* inputDims, int nbInputs, const Dims* outputDims, int nbOutputs, DataType type,PluginFormat format, int maxBatchSize) override{};bool supportsFormat(DataType type, PluginFormat format) const override{};const char* getPluginType() const override{};const char* getPluginVersion() const override{};void destroy() override{};IPluginV2* clone() const override{};void setPluginNamespace(const char* libNamespace) override{}const char* getPluginNamespace() const override{}private:// float mNegSlope;// int mBatchDim;// configured by userstd::vector<int64_t> size;std::string mode;bool align_corners;
};

上面是IPluginV2, 下面是IPluginV2DynamicExt类的最简单,包含了所有虚函数。


class InterpolatePlugin : public IPluginV2DynamicExt
{
public:InterpolatePlugin(std::vector<int64_t> size, std::string mode, bool align_corners) {};InterpolatePlugin(const char *data, size_t length){};// create from serialized dataInterpolatePlugin(const std::string &data) {  };// ~InterpolatePlugin() override = default;// IPluginV2 methodsconst char* getPluginType() const override{};const char* getPluginVersion() const override{};int getNbOutputs() const override{};int initialize() override{};void terminate() override{};size_t getSerializationSize() const override{};void serialize(void* buffer) const override{};void destroy() override{};void setPluginNamespace(const char* libNamespace) override{};const char* getPluginNamespace() const override{};// void setClipParam(bool clip){};// IPluginV2Ext methodsnvinfer1::DataType getOutputDataType(int index, const nvinfer1::DataType* inputType, int nbInputs) const override{};// IPluginV2DynamicExt methodsIPluginV2DynamicExt* clone() const override{return new InterpolatePlugin(size, mode, align_corners);};DimsExprs getOutputDimensions(int outputIndex, const DimsExprs* inputs, int nbInputs, IExprBuilder& exprBuilder) override{};bool supportsFormatCombination(int pos, const PluginTensorDesc* inOut, int nbInputs, int nbOutputs) override{};void configurePlugin(const DynamicPluginTensorDesc* in, int nbInputs, const DynamicPluginTensorDesc* out, int nbOutputs) override{};size_t getWorkspaceSize(const PluginTensorDesc* inputs, int nbInputs, const PluginTensorDesc* outputs, int nbOutputs) const override{};int enqueue(const PluginTensorDesc* inputDesc, const PluginTensorDesc* outputDesc, const void* const* inputs,void* const* outputs, void* workspace, cudaStream_t stream) override{};private:std::vector<int64_t> size;std::string mode;bool align_corners;
};

这篇关于【tensorrt】——error: invalid new-expression of abstract class type ‘torch2trt::InterpolatePlugin’的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1056760

相关文章

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

springboot报错Invalid bound statement (not found)的解决

《springboot报错Invalidboundstatement(notfound)的解决》本文主要介绍了springboot报错Invalidboundstatement(not... 目录一. 问题描述二.解决问题三. 添加配置项 四.其他的解决方案4.1 Mapper 接口与 XML 文件不匹配

Python中__new__()方法适应及注意事项详解

《Python中__new__()方法适应及注意事项详解》:本文主要介绍Python中__new__()方法适应及注意事项的相关资料,new()方法是Python中的一个特殊构造方法,用于在创建对... 目录前言基本用法返回值单例模式自定义对象创建注意事项总结前言new() 方法在 python 中是一个

前端 CSS 动态设置样式::class、:style 等技巧(推荐)

《前端CSS动态设置样式::class、:style等技巧(推荐)》:本文主要介绍了Vue.js中动态绑定类名和内联样式的两种方法:对象语法和数组语法,通过对象语法,可以根据条件动态切换类名或样式;通过数组语法,可以同时绑定多个类名或样式,此外,还可以结合计算属性来生成复杂的类名或样式对象,详细内容请阅读本文,希望能对你有所帮助...

解决Spring运行时报错:Consider defining a bean of type ‘xxx.xxx.xxx.Xxx‘ in your configuration

《解决Spring运行时报错:Considerdefiningabeanoftype‘xxx.xxx.xxx.Xxx‘inyourconfiguration》该文章主要讲述了在使用S... 目录问题分析解决方案总结问题Description:Parameter 0 of constructor in x

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

Golan中 new() 、 make() 和简短声明符的区别和使用

《Golan中new()、make()和简短声明符的区别和使用》Go语言中的new()、make()和简短声明符的区别和使用,new()用于分配内存并返回指针,make()用于初始化切片、映射... 详细介绍golang的new() 、 make() 和简短声明符的区别和使用。文章目录 `new()`

提示:Decompiled.class file,bytecode version如何解决

《提示:Decompiled.classfile,bytecodeversion如何解决》在处理Decompiled.classfile和bytecodeversion问题时,通过修改Maven配... 目录问题原因总结问题1、提示:Decompiled .class file,China编程 bytecode

Oracle type (自定义类型的使用)

oracle - type   type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要特殊的格式, 如将name定义为(firstname,lastname)的形式,我们想把这个作为一个表的一列看待,这时候就要我们自己定义一个数据类型 格式 :create or repla