首先如果你的自定义操作可以通过一些矩阵操作来实现,那么你大可不必自己去通过plug in的方式实现,可以使用tensor RT 的OP来组合实现。

他的OP极其类似tensor flow的操作,如果看到不理解,那就去谷歌tensor flow的操作,触类旁通即可,但仍有一些文档描述错误。

一些我使用过典型的OP备注如下,并附上一个测试OP的脚本,按需修改即可:

1、reduce层的理解:

reduce主要是在各个轴上进行对应的操作。

axes,注意官方说的是bit。可以组合然后对应到int,比如对于NCHW要进行全局平均池化,那么此时的axes对应的轴应该是H和W组合起来就是bit1+bit2对应int的6。

keep_dim就是reduce后对应轴压缩为一个数,如果为false则维度降低1(或者N,看对几个轴进行操作,比如前面的全局平均池化,就是对两个维度操作,降低2维);如果为True则对应轴置为1,如NCHW全局平均池化后变为NC11。

2、constant层理解:

主要是提供了一种从外界输入数据的方法。

权重的参数类型为weight,weight可以冲numpy直接自动转换,所以可以直接载入numpy对象,通过get_output返回itensor。

用途:比如gather操作的index要求为itensor类型,itensor类型并没有构造函数,所以可以通过constant layer来返回itensor。

3、shuffle层理解:

shuffle层完成了转置和reshape的功能。

需要通过建立层后对该层的后面三个参数进行赋值。

4、gather层的理解:

对于NCHW,axis 0、1、2分别代表C、H、W轴。indices设置[x]对应取batch size的x层、x行、x列,但要注意当x为列表多个值时返回值的顺序按照行列通道顺序。

5、unarry层的理解:

主要用于对每个元素进行同样的一元操作,可以进行的运算如下,要注意:

平方不是exp,exp是以e为底数的对应元素值次方,平方需要使用

传递参数的时候,传递的是(两个tensorrt,不是字符串)tensorrt.tensorrt.UnaryOperation.SUM

6、network.mark_output

注意:

当需要在passer网络后面加东西时,需要将结果unmark;

在网络最后需要使用mark标注网络,再调试网络输出时,可以不注释调试层后面的层,只需要使用mark_output该层就可以。

7、view的处理

View的参数要在size后面加item。

8、他们的全连接层中得bias如果没有,要自定义一个0矩阵,而不是API说的可选。

tensorRT教程——tensor RT OP理解(实现自定义层,搭建网络)相关推荐

  1. 【Tensorflow】op的理解和自定义损失函数

    tensorflow中的基本概念 本文是在阅读官方文档后的一些个人理解. 官方文档地址:https://www.tensorflow.org/versions/r0.12/get_started/ba ...

  2. 基于TensorRT的BERT实时自然语言理解(下)

    基于TensorRT的BERT实时自然语言理解(下) BERT Inference with TensorRT 请参阅Python脚本bert_inference.py还有详细的Jupyter not ...

  3. 基于TensorRT的BERT实时自然语言理解(上)

    基于TensorRT的BERT实时自然语言理解(上) 大规模语言模型(LSLMs)如BERT.GPT-2和XL-Net为许多自然语言理解(NLU)任务带来了最先进的精准飞跃.自2018年10月发布以来 ...

  4. 7.STM32中对DMA_Config()函数的理解(自定义)测试DMA传输数据时CPU还可继续工作其他的事

    STM32中对DMA_Config()函数的理解(自定义):

  5. 3.STM32中对EXTI_PE5_Config()函数的理解(自定义)之中断控制按键LED

    STM32中对EXTI_PE5_Config()函数的理解(自定义)

  6. 2.STM32中对Key_GPIO_Config()函数的理解(自定义)之轮询控制按键LED

    STM32中对Key_GPIO_Config()函数的理解(自定义)

  7. 1.STM32中对LED_GPIO_Config()函数的理解(自定义)之流水灯

    STM32中对LED_GPIO_Config()函数的理解(自定义)

  8. c++类指针赋值表达式必须是可修改的左值_C++进阶教程系列:全面理解C++中的类...

    原标题:C++进阶教程系列:全面理解C++中的类 关注Linux公社 最近刷了一些题,也面试了一些公司,把关于C++中关于类的一些概念总结了一下. 在这里也反思一下,面试前信心满满自以为什么都懂,毫无 ...

  9. springboot banner在线生成_SpringBoot系列教程10--小花样之SpringBoot配置自定义Banner

    SpringBoot系列教程10--小花样之SpringBoot配置自定义Banner 作者:一一哥 一. Spring Boot 常用配置 本章节主要介绍一下 Spring Boot 中的一些常用配 ...

最新文章

  1. zabbix添加自定义监控项目-配置邮件告警-测试告警
  2. Kali Linux常用服务配置教程DHCP服务原理
  3. 论文笔记:Forecasting at Scale(Prophet)
  4. Android初级教程获取手机系统联系人信息
  5. 对CloseHandle用法的理解
  6. 矩池云如何使用 Tmux 工具在后台运行任务
  7. 【WP7进阶】——XNA游戏精灵的动画
  8. FontLab 7 for Mac(字体编辑器)
  9. codesys工程ST语言学习笔记(六)ST语言读写CVS文件excel格式(文件读写)
  10. 机器学习基础篇-逻辑回归和多分类问题
  11. 分布式 | dble 读写分离场景下为什么普通的读 sql 发送到了 master 实例上
  12. html css blockquote,css之blockquote美化
  13. php 后台实现订单支付成功后语音提示
  14. 提到单片机很多人都很觉得不陌生,大街小巷上面电子产品都用到
  15. linux marvell 网卡驱动,坑爹的marvell linux 网卡驱动
  16. 【深度学习】YOLOv7目标检测模型使用记录 yolov7-tiny
  17. hive计算几个月的最大最小时一定要把string类型转换成int类型
  18. java-poi实现生成word
  19. Python爬取《明日之子》(腾讯视频)评论和弹幕,看看大家都在吐槽什么
  20. 3DMAX的用途,游戏建模高效学习技巧,高薪职位选择

热门文章

  1. 20210905 Ax=b的解的三种情况
  2. 从零开始学黑苹果-基础安装教程(10.11.6)
  3. CF957D Riverside Curio
  4. EC-PCA: 利润中心记账流程
  5. python批量下载网页文件夹_Python抓取网页批量下载文件方法初探(正则表达式+BeautifulSoup) (转)...
  6. [转载]程序员三部曲
  7. js中的this及箭头函数
  8. 数字视频处理(五)——频率域陷波滤波
  9. Kafka处理服务器发来的消息并与数据库交互——具体流程
  10. 远程桌面管理_IIS7远程桌面连接工具使用方法