DBNet.pytorch
DBNet.pytorch copied to clipboard
导出onnx时遇到错误
@TD-wzw hello ,铁子我也是在转mobilev3 为backbone时碰到了这个问题,但是resnet18 就没事,这个问题你解决了吗?
@TD-wzw hello ,铁子我也是在转mobilev3 为backbone时碰到了这个问题,但是resnet18 就没事,这个问题你解决了吗?
你给原来那个激活函数换一下子换成这样就行 `class Hsigmoid(nn.Module): def init(self, inplace=True): super(Hsigmoid, self).init() self.inplace = inplace
def forward(self, x):
return F.relu6(x + 3., inplace=self.inplace) / 6.`
@TD-wzw 这个时relu-6算子的问题吧,我解决了,但是解决后该问题还在,你是处理了这个就好了吗?
这个解决完事儿了 我上边报的错是因为原来的Hsigmoid函数用到了threshold,换一种实现方式就行了,换成我上边发的那种
relu6算子不报错,报错的是threshold,把mobilenetv3网络结构里边的Hsigmoid改了就行
哦,我明白了,谢谢,那就是我只是解决了,relu6 的问题,我这里relu -6 也报错了 class HSwish(nn.Module): def relu6(self,x,inplace=True): return torch.clamp(x,0,6) def forward(self, x): out = x * self.relu6(x + 3, inplace=True) / 6 return out
relu6我没报过错,唯一报错的地方就是这个,直接用F.relu6就没毛病
@TD-wzw 铁子是class HardSigmoid(nn.Module): 这个类吧,你贴给我的是class HSwish(nn.Module)
要不你再仔细瞅瞅我给你贴的是啥?
Hsigmoid HSwish 它俩像么?
奥我错了哈哈哈,你说实现方式呗
你看一下 https://github.com/MhLiao/DB/blob/master/backbones/mobilenetv3.py 这个是原作者的dbnet,我照着它来的
不是,你下下来的是对的,因为我把那个函数名改了,作者写的是叫HardSigmoid,我写的就是叫HSigmoid,他俩一个意思 我就直接给你从开头说到最后得了 1.我的错出在HardSigmoid这个函数,因为它用了F.threshold() 2.解决问题时候参照了一下dbnet原作者的backbone代码,把HardSigmoid换成他那种写法问题就解决了 3.我是直接粘贴复制他的激活函数,他用什么名我就用什么名,和这个项目的激活名不一样,但东西是一个东西
我看了看原作者的他不是使用hardsigmoid ,是用了一个近似hardswish 的替代了?
mobilenetv3就是一个backbone,激活函数你可以随意换,哪怕你用relu或者啥都没人管你,原作者的backbone也是网上开源的一个mobilenetv3,每个人写法不一样,如果你想用原汁原味的mobilentv3直接去看论文,论文里激活函数用啥你就用啥
好的,明白了,谢谢铁子!