贤者之路, Caffe转TensorRT

 

【引】将Caffe转TensorRT的时候,有很多自己设计的接口TensorRT库本身不支持。我们需要自己创建Plugin,本文介绍TensorRT的创建,如何自定义Plugin,和快速书写cuda函数。

 

【结构】

将Caffe转TensorRT的时候,有很多自己设计的接口TensorRT库本身不支持。我们需要继承TensorRT里面的IPlugin类来创建自己的Plugin。然后ICaffeParser对象会通过IPluginFacotry 解析Prototext里的网络结构,参数等信息,并将解析的信息放在内存中以便之后的计算。同时IBuilder负责设置网络数据类型(int8 FP16)batchSzie等一些通用信息。这样一个网络就被建立,网络的结构,参数都被创建在内存之中被INetworkDefinition对象所管理

 

【重载plugin】

class UpsampleLayer : public IPlugin
{
public:
    UpsampleLayer(){}
    //serilize constructure
    UpsampleLayer(size_t stride):stride_(stride)
    {
    }
    //deserilize constructure
    UpsampleLayer(const void* buffer,size_t sz, size_t stride):stride_(stride)
    {
        /* 反序列化, 将连续放置的内存,读取到成员变量里面 */
        const int* d = reinterpret_cast<const int*>(buffer);
        channel_=d[0];
        w_=d[1];
        h_=d[2];
    }

    // get output size infomation
    inline int getNbOutputs() const override { return 1; };
    Dims getOutputDimensions(int index, const Dims* inputs, int nbInputDims) override
    {
        channel_=inputs[0].d[0];
        w_=inputs[0].d[1];
        h_=inputs[0].d[2];
        return DimsCHW(inputs
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值