MXNet报TypeError: TypeError: Changing attribute type for output from

错误描述

TypeError: Changing attribute type for output from HybridSequential'> to Dense'>is not allowed.

错误原因

在使用gluoncvmodel zoo上训练好模型进行微调的时候,修改输出层网络的输出类别的数量时报错

finetune_net.output = gluon.nn.Dense(args.classes)

将输出层改成了上面的代码,从错误信息中可以看出来,原网络的outpu层是一个HybridSequential,而我现在却给它赋值了一个Dense所以导致报错。

解决办法

  • 输出output观察网络结构
HybridSequential((0): Conv2D(1280 -> 1000, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): Flatten
)
  • 修改output层
    finetune_net = get_model(args.net,pretrained=True)with finetune_net.name_scope():if type(finetune_net.output) is gluon.nn.Dense:finetune_net.output = gluon.nn.Dense(args.classes)elif type(finetune_net.output) is gluon.nn.HybridSequential:#这里修改的需要和你输出原网络的结构类似output = gluon.nn.HybridSequential()output.add(gluon.nn.Conv2D(args.classes,kernel_size=(1,1),strides=(1,1),use_bias=False))output.add(gluon.nn.Flatten())finetune_net.output = output

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部