PaddleX 推論プログラムがエラーを報告します: ValueError: (InvalidArgument)generate_proposals_v2(): argument 'Scores' (position 0)

PaddleX 確保程序报错:ValueError: (InvalidArgument)generate_proposals_v2(): 引数 'Scores' (位置 0) は Tensor である必要がありますが、Tensor を取得しました (at …\paddle\fluid\pybind\op_function_common.cc:818)

通常、実行中の出力には次のような改善が見られ、その後エラーが報告されます。
[警告] Detector は、評価中、batch_size=1 での単一カードの評価のみをサポートしているため、batch_size は強制的に 1 に設定されます。
エラーは次のとおりです。


```python
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/tmp/ipykernel_170/264114651.py in <module>
     73 
     74     save_dir='output/yolov3_darknet53',  # 保存路径
---> 75     use_vdl=True)  # 其用visuadl进行可视化训练记录//ture->false

~/.data/webide/pip/lib/python3.7/site-packages/paddlex/cv/models/detector.py in train(self, num_epochs, train_dataset, train_batch_size, eval_dataset, optimizer, save_interval_epochs, log_interval_steps, save_dir, pretrain_weights, learning_rate, warmup_steps, warmup_start_lr, lr_decay_epochs, lr_decay_gamma, metric, use_ema, early_stop, early_stop_patience, use_vdl, resume_checkpoint)
    332             early_stop=early_stop,
    333             early_stop_patience=early_stop_patience,
--> 334             use_vdl=use_vdl)
    335 
    336     def quant_aware_train(self,

~/.data/webide/pip/lib/python3.7/site-packages/paddlex/cv/models/base.py in train_loop(self, num_epochs, train_dataset, train_batch_size, eval_dataset, save_interval_epochs, log_interval_steps, save_dir, ema, early_stop, early_stop_patience, use_vdl)
    395                         eval_dataset,
    396                         batch_size=eval_batch_size,
--> 397                         return_details=True)
    398                     # 保存最优模型
    399                     if local_rank == 0:

~/.data/webide/pip/lib/python3.7/site-packages/paddlex/cv/models/detector.py in evaluate(self, eval_dataset, batch_size, metric, return_details)
    497             with paddle.no_grad():
    498                 for step, data in enumerate(self.eval_data_loader):
--> 499                     outputs = self.run(self.net, data, 'eval')
    500                     eval_metric.update(data, outputs)
    501                 eval_metric.accumulate()

~/.data/webide/pip/lib/python3.7/site-packages/paddlex/cv/models/detector.py in run(self, net, inputs, mode)
    103 
    104     def run(self, net, inputs, mode):
--> 105         net_out = net(inputs)
    106         if mode in ['train', 'eval']:
    107             outputs = net_out

/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py in __call__(self, *inputs, **kwargs)
    946             and (not self._forward_post_hooks) and (not self._built) and in_dygraph_mode() and (not in_profiler_mode()):
    947             self._build_once(*inputs, **kwargs)
--> 948             return self.forward(*inputs, **kwargs)
    949         else:
    950             return self._dygraph_call_func(*inputs, **kwargs)

~/.data/webide/pip/lib/python3.7/site-packages/paddlex/ppdet/modeling/architectures/meta_arch.py in forward(self, inputs)
     69             for inp in inputs_list:
     70                 self.inputs = inp
---> 71                 outs.append(self.get_pred())
     72 
     73             # multi-scale test

~/.data/webide/pip/lib/python3.7/site-packages/paddlex/ppdet/modeling/architectures/yolo.py in get_pred(self)
    122 
    123     def get_pred(self):
--> 124         return self._forward()

~/.data/webide/pip/lib/python3.7/site-packages/paddlex/ppdet/modeling/architectures/yolo.py in _forward(self)
    113                     bbox, bbox_num = self.post_process(
    114                         yolo_head_outs, self.yolo_head.mask_anchors,
--> 115                         self.inputs['im_shape'], self.inputs['scale_factor'])
    116                 output = {'bbox': bbox, 'bbox_num': bbox_num}
    117 

/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py in __call__(self, *inputs, **kwargs)
    946             and (not self._forward_post_hooks) and (not self._built) and in_dygraph_mode() and (not in_profiler_mode()):
    947             self._build_once(*inputs, **kwargs)
--> 948             return self.forward(*inputs, **kwargs)
    949         else:
    950             return self._dygraph_call_func(*inputs, **kwargs)

~/.data/webide/pip/lib/python3.7/site-packages/paddlex/ppdet/modeling/post_process.py in forward(self, head_out, rois, im_shape, scale_factor)
     65         """
     66         if self.nms is not None:
---> 67             bboxes, score = self.decode(head_out, rois, im_shape, scale_factor)
     68             bbox_pred, bbox_num, _ = self.nms(bboxes, score, self.num_classes)
     69         else:

~/.data/webide/pip/lib/python3.7/site-packages/paddlex/ppdet/modeling/layers.py in __call__(self, yolo_head_out, anchors, im_shape, scale_factor, var_weight)
    546                                          self.num_classes, self.conf_thresh,
    547                                          self.downsample_ratio // 2**i,
--> 548                                          self.clip_bbox, self.scale_x_y)
    549             boxes_list.append(boxes)
    550             scores_list.append(paddle.transpose(scores, perm=[0, 2, 1]))

~/.data/webide/pip/lib/python3.7/site-packages/paddlex/ppdet/modeling/ops.py in yolo_box(x, origin_shape, anchors, class_num, conf_thresh, downsample_ratio, clip_bbox, scale_x_y, name)
    701                  conf_thresh, 'downsample_ratio', downsample_ratio,
    702                  'clip_bbox', clip_bbox, 'scale_x_y', scale_x_y)
--> 703         boxes, scores = core.ops.yolo_box(x, origin_shape, *attrs)
    704         return boxes, scores
    705     else:

ValueError: (InvalidArgument) yolo_box(): argument 'X' (position 0) must be Tensor, but got Tensor (at /paddle/paddle/fluid/pybind/op_function_common.cc:818)

デバッグするときは、save_interval_epochs=1 に変更できます。エラーが報告された場合は、別の方法を試して試行を続けてください。
解決策 1:

クエリ後、save_interval_epochs=5 (5 ラウンドごとにモデルを保存) とみなされ、保存時にエラーが発生しました。クエリを実行した後、train_batch_size の問題だと考える人もいますが、batch_size は GPU コアの整数倍にはできず、実験後も正しくありませんでした。

解決策 2:
pretrain_weights=None、事前トレーニングの重みは None に設定されますが、実験後は役に立ちません。

解決策 3: パドルのバージョンを 2.3.2 に下げます。(うまくいかない場合は、カーネルを再起動するか、環境を再起動してください)
正常に実行されました

おすすめ

転載: blog.csdn.net/weixin_51315141/article/details/130581771