Problem in yolo eval()

{moderator edit - solution code removed}

# BEGIN UNIT TEST
tf.random.set_seed(10)
yolo_outputs = (tf.random.normal([19, 19, 5, 2], mean=1, stddev=4, seed = 1),
                tf.random.normal([19, 19, 5, 2], mean=1, stddev=4, seed = 1),
                tf.random.normal([19, 19, 5, 1], mean=1, stddev=4, seed = 1),
                tf.random.normal([19, 19, 5, 80], mean=1, stddev=4, seed = 1))
scores, boxes, classes = yolo_eval(yolo_outputs)
print("scores[2] = " + str(scores[2].numpy()))
print("boxes[2] = " + str(boxes[2].numpy()))
print("classes[2] = " + str(classes[2].numpy()))
print("scores.shape = " + str(scores.numpy().shape))
print("boxes.shape = " + str(boxes.numpy().shape))
print("classes.shape = " + str(classes.numpy().shape))

assert type(scores) == EagerTensor, "Use tensoflow functions"
assert type(boxes) == EagerTensor, "Use tensoflow functions"
assert type(classes) == EagerTensor, "Use tensoflow functions"

assert scores.shape == (10,), "Wrong shape"
assert boxes.shape == (10, 4), "Wrong shape"
assert classes.shape == (10,), "Wrong shape"
    
assert np.isclose(scores[2].numpy(), 171.60194), "Wrong value on scores"
assert np.allclose(boxes[2].numpy(), [-1240.3483, -3212.5881, -645.78, 2024.3052]), "Wrong value on boxes"
assert np.isclose(classes[2].numpy(), 16), "Wrong value on classes"
    
print("\033[92m All tests passed!")
# END UNIT TEST
InvalidArgumentError                      Traceback (most recent call last)
<ipython-input-49-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-48-be30a5b2b24a> 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(boxes, box_confidence, box_class_probs, threshold = score_threshold)
     34 
     35     # Scale boxes back to original image shape.

<ipython-input-2-8fd399182535> 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,2] vs. [19,19,5,80] [Op:Mul]

I am stuck in this problem why I got this error please help?

You are misinterpreting the contents of yolo_outputs. Please see the docstring, which explains the contents of that variable. Note that if you are just porting your solution forward from the old version of the course, that doesn’t work without some rearrangement: they changed the definitions of some of the APIs.

1 Like