Open edwinlong95 opened 2 years ago
__init__
里的backbone是str类型,是在初始化之后通过配置invoke的方法才把他初始化出来的,要打印backbone的话不要在__init__
里打印,可以在其他函数里比如说_forward
里打印
__init__
里的backbone是str类型,是在初始化之后通过配置invoke的方法才把他初始化出来的,要打印backbone的话不要在__init__
里打印,可以在其他函数里比如说_forward
里打印
好像还是不行,采用了一下几种方式:
def _forward(self):
body_feats = self.backbone(self.inputs)
print("---------------print params-----------------")
model = self.backbone # 或者 model = body_feats
params_info = paddle.summary(model, (1, 3, 320, 320))
print(params_info)
print("--------------------------------------------")
neck_feats = self.neck(body_feats, self.for_mot)
if isinstance(neck_feats, dict):
assert self.for_mot == True
emb_feats = neck_feats['emb_feats']
neck_feats = neck_feats['yolo_feats']
if self.training:
yolo_losses = self.yolo_head(neck_feats, self.inputs)
if self.for_mot:
return {'det_losses': yolo_losses, 'emb_feats': emb_feats}
else:
return yolo_losses
else:
yolo_head_outs = self.yolo_head(neck_feats)
if self.for_mot:
boxes_idx, bbox, bbox_num, nms_keep_idx = self.post_process(
yolo_head_outs, self.yolo_head.mask_anchors)
output = {
'bbox': bbox,
'bbox_num': bbox_num,
'boxes_idx': boxes_idx,
'nms_keep_idx': nms_keep_idx,
'emb_feats': emb_feats,
}
else:
if self.return_idx:
_, bbox, bbox_num, _ = self.post_process(
yolo_head_outs, self.yolo_head.mask_anchors)
else:
bbox, bbox_num = self.post_process(
yolo_head_outs, self.yolo_head.mask_anchors,
self.inputs['im_shape'], self.inputs['scale_factor'])
output = {'bbox': bbox, 'bbox_num': bbox_num}
return output
body_feats出来的是list对象,不能传入到paddle.summary()中;直接model = self.backbone,仍然是str啊?
利用paddle.summary()函数数想显示ppyolo_r50vd_dcn_1x_visdrone(configs/sniper/ppyolo_r50vd_dcn_1x_visdrone.yml)模型的参数,但是给出了下面的错误提示:
添加的代码为:
就是最后几行代码,从print()函数到结束。我也查过贵方的issue中关于打印模型结构的问题,但是仍然没有找到怎么解决。 参考的api文档:https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/summary_cn.html。 问题:想知道应该怎么使用这个函数来显示模型结构,就那上面这个ppyolo_r50vd_dcn_1x_visdrone模型来举例?
paddlepaddle:2.2.0;PaddleDetection:2.3