MXNet报TypeError: TypeError: Changing attribute type for output from
错误描述
TypeError: Changing attribute type for output from
错误原因
在使用gluoncv的model 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
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
