Course 4 Week 3 YOLO Shape Error

Hi guys! I’m kind of stucked here with this shape error:

<ipython-input-4-91a148c96ade> in yolo_filter_boxes(boxes, box_confidence, box_class_probs, threshold)
     24     # Step 1: Compute box scores
     25     ##(≈ 1 line)
---> 26     box_scores = np.multiply(box_confidence , box_class_probs)
     27 
     28     # Step 2: Find the box_classes using the max box_scores, keep track of the corresponding score

ValueError: operands could not be broadcast together with shapes (19,19,5,4) (19,19,5,80) 

Someone have any tips for that?

Thank you

See the hint for Step 1 - it does not mention using np.multiply:

image

Hi, @TMosh ! I’ve tried like that too. But it also didn’t worked:

---------------------------------------------------------------------------
InvalidArgumentError                      Traceback (most recent call last)
<ipython-input-10-14e5cd22cb79> in <module>
      5                 tf.random.normal([19, 19, 5, 1], mean=1, stddev=4, seed = 1),
      6                 tf.random.normal([19, 19, 5, 80], mean=1, stddev=4, seed = 1))
----> 7 scores, boxes, classes = yolo_eval(yolo_outputs)
      8 print("scores[2] = " + str(scores[2].numpy()))
      9 print("boxes[2] = " + str(boxes[2].numpy()))

<ipython-input-9-bb957b4aeed5> in yolo_eval(yolo_outputs, image_shape, max_boxes, score_threshold, iou_threshold)
     31 
     32     # Use one of the functions you've implemented to perform Score-filtering with a threshold of score_threshold (≈1 line)
---> 33     scores, boxes, classes = yolo_filter_boxes(box_confidence, boxes, box_class_probs,score_threshold)
     34 
     35     # Scale boxes back to original image shape.

<ipython-input-2-cfdd2cdc7e86> in yolo_filter_boxes(boxes, box_confidence, box_class_probs, threshold)
     24     # Step 1: Compute box scores
     25     ##(≈ 1 line)
---> 26     box_scores = box_confidence * box_class_probs
     27 
     28     # Step 2: Find the box_classes using the max box_scores, keep track of the corresponding score

/opt/conda/lib/python3.7/site-packages/tensorflow/python/ops/math_ops.py in binary_op_wrapper(x, y)
   1123     with ops.name_scope(None, op_name, [x, y]) as name:
   1124       try:
-> 1125         return func(x, y, name=name)
   1126       except (TypeError, ValueError) as e:
   1127         # Even if dispatching the op failed, the RHS may be a tensor aware

/opt/conda/lib/python3.7/site-packages/tensorflow/python/ops/math_ops.py in _mul_dispatch(x, y, name)
   1455     return sparse_tensor.SparseTensor(y.indices, new_vals, y.dense_shape)
   1456   else:
-> 1457     return multiply(x, y, name=name)
   1458 
   1459 

/opt/conda/lib/python3.7/site-packages/tensorflow/python/util/dispatch.py in wrapper(*args, **kwargs)
    199     """Call target, and fall back on dispatchers if there is a TypeError."""
    200     try:
--> 201       return target(*args, **kwargs)
    202     except (TypeError, ValueError):
    203       # Note: convert_to_eager_tensor currently raises a ValueError, not a

/opt/conda/lib/python3.7/site-packages/tensorflow/python/ops/math_ops.py in multiply(x, y, name)
    507   """
    508 
--> 509   return gen_math_ops.mul(x, y, name)
    510 
    511 

/opt/conda/lib/python3.7/site-packages/tensorflow/python/ops/gen_math_ops.py in mul(x, y, name)
   6164       return _result
   6165     except _core._NotOkStatusException as e:
-> 6166       _ops.raise_from_not_ok_status(e, name)
   6167     except _core._FallbackException:
   6168       pass

/opt/conda/lib/python3.7/site-packages/tensorflow/python/framework/ops.py in raise_from_not_ok_status(e, name)
   6841   message = e.message + (" name: " + name if name is not None else "")
   6842   # pylint: disable=protected-access
-> 6843   six.raise_from(core._status_to_exception(e.code, message), None)
   6844   # pylint: enable=protected-access
   6845 

/opt/conda/lib/python3.7/site-packages/six.py in raise_from(value, from_value)

InvalidArgumentError: Incompatible shapes: [19,19,5,4] vs. [19,19,5,80] [Op:Mul]

Perhaps there is an error in your yolo_eval() function.

It looks like perhaps you are trying to port forward your solution from the previous version of the course. That doesn’t work without some adjustments. E.g. they changed the function signature of the yolo_filter_boxes function. You can see from the exception trace that you show that you have reversed the first two arguments. :scream_cat:

That’s not the only thing they changed. Here’s an earlier thread that discusses this issue.

1 Like