Toybrick

leakyRelu这个操作

mrzs

中级会员

积分
278
楼主
发表于 2019-11-28 15:50:52    查看: 8309|回复: 2 | [复制链接]    打印 | 只看该作者
yolov3和tiny-yolov3 里面的卷积的激活函数就是 leakyRelu ,基于darknet的话转模型没问题,但是 基于keras的话,就不识别 leakyRelu 这个OP了,为啥会有这样的差异呢
回复

使用道具 举报

jefferyzhang

版主

积分
13580
沙发
发表于 2019-11-29 09:08:13 | 只看该作者
这个主要是因为tf会将很多OP给组合起来变成子图,造成本来可以识别的op被封装了一层就无法识别了。
并且硬件OP和软件OP并不是一一对应的,例如我们硬件会将 Conv2D-Relu-Maxpooling合成一个OP,效率很快。
有几种方案你可以试下:
1. keras转tf后,可以用remove traning nodes指令拆散子图结构,可以尝试下
2. 其实这里不建议用LeakyRelu,因为这个在硬件上是单独一个OP,如果你改成Relu,会被硬件三合一为一个OP,极大提高效率
3. 试着改下leakyRelu前后的op,尽量减少矩阵操作add、sub、div、mul之类的单独操作。
回复

使用道具 举报

mrzs

中级会员

积分
278
板凳
 楼主| 发表于 2019-11-29 10:16:26 | 只看该作者
jefferyzhang 发表于 2019-11-29 09:08
这个主要是因为tf会将很多OP给组合起来变成子图,造成本来可以识别的op被封装了一层就无法识别了。
并且硬 ...

sounds great,thanks
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表