我正在做一个项目,通过使用Mask-RCNN在SpaceNet数据集上检测建筑物。当我运行这段代码时:
model.train(dataset_train, dataset_val,
learning_rate=config.LEARNING_RATE,
epochs=1,
layers='heads')我得到了这个错误:
1772 batch_images[b] = mold_image(image.astype(np.float32), config)
-> 1773 batch_gt_class_ids[b, :gt_class_ids.shape[0]] = gt_class_ids
1774 batch_gt_boxes[b, :gt_boxes.shape[0]] = gt_boxes
1775 batch_gt_masks[b, :, :, :gt_masks.shape[-1]] = gt_masksValueError:无法将输入数组从形状(70)广播到形状(1)
还收到了这样的警告:

当我调试变量'gt_class_ids‘和'batch_gt_class_ids’时,我得到了如下结果:

发布于 2019-09-10 18:25:41
正如@Mahesh所说,我调试了变量gt_class_ids,并意识到它的形状是(x,1)。“x”可以是70、15或其他任何值,问题出在gt_class_ids.shape[0]部分。gt_class_ids.shape[0]给了我们'x',x也可以是任何数字。所以我去了
model.py
(我的方向是: C:\Users\MUSTAFAAKTAS\Desktop\SpaceNet_MaskRCNN\mrcnn\model.py)
文件,并更改为batch_gt_class_ids[b, :gt_class_ids.shape[1]] = gt_class_ids
而是batch_gt_class_ids[b, :gt_class_ids.shape[0]] = gt_class_ids。
因此,它返回'1‘而不是'x’。
这个解决方案对我很有效:)
发布于 2019-09-10 01:20:55
ValueError: could not broadcast input array from shape (70) into shape (1)表示在1773行batch_gt_boxes[b, :gt_boxes.shape[0]] = gt_boxes中存在阵列形状不匹配,更具体地说,您尝试将值从形状70的数组广播到形状1的数组。
您能否在此脚本上运行调试器并共享gt_class_ids和batch_gt_class_ids的值?这可以帮助更好地解决问题。谢谢
https://stackoverflow.com/questions/57858127
复制相似问题