一文玩转pytorch转onnx-tensorRT ——(B)pytorch转onnx

说明

  • pytorch转onnx全打通,就可以使用onnx的全产业链了。实际上,pytorch转onnx会遇到一些小问题,比如我遇到的upsample,找的资料蛮多的,但是归根结底有效的方法,是升级pytorch1.1到1.2,顺带提一句,更新到pytorch1.2,使用清华源加速到方法sudo pip install torch==1.2.0 torchvision==0.4.0 -f https://download.pytorch.org/whl/torch_stable.html -i https://pypi.tuna.tsinghua.edu.cn/simple。而据网上一些修改或者重新定义symbole中的方法(修改/usr/local/lib/python3.5/dist-packages/torch/onnx/symbolic.py里的层),还是要搞清楚是否是同样的版本引起的,不然反而平添一些额外的问题。

  • pytorch中的BN层转onnx转onnx前,model的bn层如果不修改running-mean-var,即默认为0,1时候,好像转到tensorRT下,会重新计算;而nvidia的retiannet-example好像没有对bn层做特殊的处理,结果也是正确的。所以这儿需要注意。不过通过mergebn和eval后再转模型,结果好像是对的了
    查看这个链接tensorFlow转onnx,如果看里面的bn层参数,bn层是会保留is_test,但还不清楚具体怎么使用这个参数,难不成用疼送人RT也可以反向传播梯度?这么修改后实验的结果是正确的,即不再因为bn层是否在训练状态而导致结果不一致。另外冻结的代码是for m in model.modules():m.eval()

  • 查看onnx的信息

如何创建自定义的onnx层?

  • 这是重点,未来会考虑转dcn过去,但自定义的dcn估计转onnx时会出问题,这儿先留个坑。标题中链接是可以参考的。
  • 使用onnx这个轮子先走到这里,未完待续……
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值