目录

  • 简介
  • 构造函数
  • 析构函数
  • 成员函数

简介

IPlugin是一个类,用于实现自定义层(custom layer),我们可以继承这个类,然后实现它的成员函数。在使用IPlugin时,要include <NvInfer.h>

构造函数

继承IPlugin类需要实现两个构造函数。

  • 构造函数1
           plugin(const int parameter1, const int parameter2, …)
           此构造函数和我们常写的构造函数,没有什么区别。
  • 构造函数2
           plugin(const void* data, size_t length)
           此构造函数通过反序列化进行参数读入,和成员函数serialize对应。

析构函数

析构函数就是我们常写的析构函数,没有什么区别。

成员函数

  • configure
           virtual void nvinfer1::IPlugin::configure(
                  const Dims * inputDims, -----------------------------> 输入tensor的维度
                  int nbInputs, ----------------------------------------------> 输入个数
                  const Dims * outputDims, ----------------------------> 输出tensor的维度
                  int nbOutputs, --------------------------------------------> 输出个数
                  int maxBatchSize ---------------------------------------> 最大的BatchSize)
           函数功能:配置自定义层,这个函数会在调用initialize()之前调用
           Returns:没有返回值
  • enqueue
           virtual int nvinfer1::IPlugin::enqueue(
                  int batchSize, ---------------------------------------------> BatchSize
                  const void *const * inputs, ----------------------------> 输入tensor的内存
                  void ** outputs, -------------------------------------------> 输出tensor的内存
                  void * workspace, ---------------------------------------> 执行的工作空间
                  cudaStream_t stream ----------------------------------> 执行kernel函数的stream)
           函数功能:执行自定义层,具体的过程一般写在cu文件中
           Returns:返回0代表success,返回其他值会终止执行。
  • getNbOutputs
           virtual int nvinfer1::IPlugin::getNbOutputs( ) const
           函数功能:获得自定义层的输出个数
           Returns:自定义层的输出个数
  • getOutputDimensions
           virtual Dims nvinfer1::IPlugin::getOutputDimensions(
                  int index, ---------------------------------------------------> 输出tensor的index
                  const Dims * inputs, ------------------------------------> 输入tensor
                  int nbInputDims ------------------------------------------> 输入个数)
           函数功能:获得自定义层的输出tensor的维度信息
           Returns:自定义层的输出的维度信息
  • getSerializationSize
           virtual size_t nvinfer1::IPlugin::getSerializationSize( )
           函数功能:计算序列化缓冲区需要的size
           Returns: 序列化缓冲区的size
  • getWorkspaceSize
           virtual size_t nvinfer1::IPlugin::getWorkspaceSize(
                  int maxBatchSize ---------------------------------------> 最大的BatchSize) const
           函数功能:计算工作区间需要的size
           Returns:工作区间的size
  • initialize
           virtual int nvinfer1::IPlugin::initialize( )
           函数功能:在执行前,初始化自定义层,此函数会在创建engine时调用
           Returns:返回0代表success,返回其他值会终止执行。
  • serialize
           virtual void nvinfer1::IPlugin::serialize(
                  void * buffer -----------------------------------------------> 一个指向size>getSerializationSize()的缓冲区的指针)
           函数功能:将自定义层序列化
           Returns:没有返回值
  • terminate
           virtual void nvinfer1::IPlugin::terminate( )
           函数功能:释放自定义层初始化时请求的资源,此函数会在销毁engine时调用
           Returns:没有返回值

TensorRT学习笔记6 - IPlugin相关推荐

  1. NVIDIA可编程推理加速器TensorRT学习笔记(二)——实操

    NVIDIA可编程推理加速器TensorRT学习笔记(二)--实操 ​ TensorRT 是 NVIDIA 自家的高性能推理库,其 Getting Started 列出了各资料入口,如下: 本文基于博 ...

  2. TensorRT学习笔记5 - 运行fc_plugin_caffe_mnist

    目录 安装依赖 运行过程 代码解析 遇到的问题 安装依赖 cuda(安过) cudnn(安过) cuBLAS(在cuda toolkit里) pybind11(放到/home/user/下):git ...

  3. TensorRT学习笔记--基于FCN-ResNet101推理引擎实现语义分割

    目录 前言 1--Pytorch模型转换为Onnx模型 2--Onnx模型可视化及测试 2-1--可视化Onnx模型 2-2--测试Onnx模型 3--Onnx模型转换为Tensor RT推理模型 4 ...

  4. NVIDIA可编程推理加速器TensorRT学习笔记(三)——加速推理

    文章目录 简单张量RT示例 将预训练的图像分割 PyTorch 模型转换为 ONNX 将 ONNX 模型导入 TensorRT,生成引擎并执行推理 对输入进行批处理 分析应用程序 优化您的应用程序 使 ...

  5. TensorRT学习笔记(三)

    TENSORRT工作流程: 下表列出了TensorRT功能及其支持的API. 下列表显示TensorRT支持的平台 关键词: UFF: 通用框架格式(UFF)是描述DNN(深度神经网络)的执行图的数据 ...

  6. TensorRT学习笔记7 - 保存与读取序列化的结果

    目录 保存序列化的结果 读取序列化的结果 我们使用TensorRT转化Caffe模型时,每次都要使用如下代码将模型序列化,之后再进行反序列化,才可以进行inference.但是build engine ...

  7. TensorRT学习笔记4 - 运行sampleGoogleNet

    目录 步骤 步骤 cd /your/tensorrt/path/samples/sampleGoogleNet make cd /your/tensorrt/path/bin sudo ./sampl ...

  8. TensorRT学习笔记3 - 运行sampleMNIST

    目录 步骤 遇到的问题 步骤 cd /your/tensorrt/path/samples/sampleMNIST make cd /your/tensorrt/path/bin sudo ./sam ...

  9. TensorRT学习笔记2 - 基础知识

    目录 TensorRT是什么 TensorRT怎么用 相关链接 TensorRT是什么 大家或多或少都训练过神经网络,比如LeNet.YOLO.SSD等.我们也都知道,模型的训练速度和测试速度大幅依赖 ...

最新文章

  1. C#杂记系列之日期函数
  2. MindCon极客周 | 第三届全新席卷而来,SIG英雄帖,做硬核玩家,夺万元大奖!
  3. 1013 B. And
  4. VMware虚拟机扩展Ubuntu系统磁盘空间
  5. Tiny6410上安装debian基本系统的过程
  6. python手机编译器可以干什么_世界上最好的Python编辑器是什么?
  7. Python Map, Filter and Reduce
  8. windos 为什么会突然服务停止了_女生为什么会突然说分手?
  9. 将jQuery的复选框设置为“已选中”?
  10. Error opening Velodyne socket dump file 的一种可能解决方法
  11. 微信小程序个人笔记!
  12. 485通讯的校验和_台达PLC和昆仑通态触摸屏通讯设置
  13. 国内外免费sns源码程序大集合
  14. HaaS506-HD1本地更新固件教程
  15. kali 破解压缩包密码
  16. 004 ZeroMQ PUB XSUB-XPUB SUB模式
  17. Java Swing
  18. 在纯Win10环境下部署DzzOffice+OnlyOffice协同办公系统
  19. android实现自动评论脚本,自动点击器评论器app下载
  20. ubuntu设置全攻略

热门文章

  1. wdpc V3 phpmyadmin打不开的一种解决方式(实测有效)
  2. vant ui wepy_UI设计需要学习什么软件呢?
  3. 基于贝叶斯决策理论的分类器
  4. PIC单片机入门_框架与存储器
  5. [Medical Image Processing] 2. GrayScale Histogram and Threshold-【Isodata Algorithm】
  6. 23种设计模式C++源码与UML实现--享元模式
  7. cmake的使用-目标类型详解
  8. 嵌入式linux入门-常用命令介绍
  9. 【论文笔记】李盟, et al. 一种恶意代码特征选取和建模方法. 计算机应用与软件 08(2015):272-277.
  10. C/C++中 static 的作用