最近在验证序列化保存的结果,再次运行是否正确,却出现了一个问题,TensorRT对LeakRelu中的代码无法序列化,琢磨了两天发现是Leak Relu这个插件层有问题。
就Lrelu这层的代码而言,非常简单,大家若是不太了解,可以先看看Lrelu的原理公式和caffe源码中的前像计算的代码(注意Lrelu的代码就是relu的代码,只是加了一个参数,值大小一般是0.1.我的代码中是将其参数写死了)。除了读一些特定输出维度以外,由于没有什么参数,不需要像Prelu中那样进行内存的生成和内存的拷贝。
参考代码:https://github.com/hexiangquan/tensorRTyoloV3中的PluginFactory.h;(我的代码中不存在斜率参数,我是将参数在代码中写死了的)
若有不懂得问题或是异议可以留言,感谢!
记录一下调试TensorRT时获得的一些信息,在加入插入层的TensorRT的代码中,一般在对caffe训练的网络结构和模型进行parse时,各种参数已经加载到写入的插件层相应的mweight(权值类型的参数)中,这时候就可以查看mweight中有数据的大小,数据类型和数据存储的地址。而不是在进行engine构建时才加载进去。我也是第一次调试这块的代码,感觉还是收货蛮多。