```
# UNQ_C1 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)
# GRADED FUNCTION: yolo_filter_boxes
```

**Test produces the error below. Where did I go wrong? --Sorry for not knowing how to format the error message with color.**

**(I noticed that threshold is .6 in the function definition, but .5 internally in the tests; why the difference? could that be the source of error?)**

```
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-7-2cab1199ef30> in <module>
4 boxes = tf.random.normal([19, 19, 5, 4], mean=1, stddev=4, seed = 1)
5 box_class_probs = tf.random.normal([19, 19, 5, 80], mean=1, stddev=4, seed = 1)
----> 6 scores, boxes, classes = yolo_filter_boxes(boxes, box_confidence, box_class_probs, threshold = 0.5)
7 print("scores[2] = " + str(scores[2].numpy()))
8 print("boxes[2] = " + str(boxes[2].numpy()))
<ipython-input-6-630888cb84a6> in yolo_filter_boxes(boxes, box_confidence, box_class_probs, threshold)
35 # same dimension as box_class_scores, and be True for the boxes you want to keep (with probability >= threshold)
36 ## (≈ 1 line)
---> 37 filtering_mask = box_class_scores >= threshold
38
39 # Step 4: Apply the mask to box_class_scores, boxes and box_classes
/opt/conda/lib/python3.7/site-packages/tensorflow/python/ops/gen_math_ops.py in greater_equal(x, y, name)
4053 _result = pywrap_tfe.TFE_Py_FastPathExecute(
4054 _ctx._context_handle, tld.device_name, "GreaterEqual", name,
-> 4055 tld.op_callbacks, x, y)
4056 return _result
4057 except _core._NotOkStatusException as e:
TypeError: Cannot convert 0.5 to EagerTensor of dtype int64
```

Hello @EduardoChicago

Welcome back! I have edited your post for formatting, and you might edit it to see what I have added.

First, the `0.6`

in the function definition gives it a default value and it will be used if the `threshold`

argument is not supplied when calling the function. Since we supplied `threshold = 0.5`

, that value is used instead of `0.6`

. This should not cause a problem.

If we read the traceback, it was a type error that happened in the arrowed line:

When tensorflow compares two numbers, it needs them to be in the same type. I would guess that `box_class_scores`

was somehow typed to be `int64`

and consequently Tensorflow wanted `threshold`

to be `int64`

too. However, the latter is not possible because `0.5`

can’t become an integer.

Now, `threshold`

has to be a float, and `box_class_scores`

should be `float`

too. Therefore, you would need to first verify the current type of `box_class_scores`

, and if it was indeed an `int`

type, you would then need to trace back and figure out why it ended up that way. To check for a tensorflow variable’s type, you might add a print line after getting `box_class_scores`

, and just remember to remove the print line after all debugging work or it may interfere with the autograder at submission.

```
### START CODE HERE
# Step 1: Compute box scores
##(≈ 1 line)
box_scores = None
# Step 2: Find the box_classes using the max box_scores, keep track of the corresponding score
##(≈ 2 lines)
# IMPORTANT: set axis to -1
box_classes = None
box_class_scores = None
tf.print('dtype', 'box_class_scores', box_class_scores.dtype) #ADDED, remove this line after debugging
# Step 3: Create a filtering mask based on "box_class_scores" by using "threshold". The mask should have the
# same dimension as box_class_scores, and be True for the boxes you want to keep (with probability >= threshold)
## (≈ 1 line)
filtering_mask = None
# Step 4: Apply the mask to box_class_scores, boxes and box_classes
## (≈ 3 lines)
scores = None
boxes = None
classes = None
### END CODE HERE
```

Good luck debugging!

Cheers,

Raymond

Replying to Raymond. I understand the nature of the error but still would not know how to fix it. Indeed, box_class_scores are integers. They are generated by tf.math.argmax and tf.math.reduce_max working on box_scores, which are floats. I tried to impose a float type to the argmax output, but it is not allowed (dtypes can only be int32 and int64). How to make box_class_scores float?

Many thanks. (After I understand this issue, I will ask you how to format correctly my topics).

But the point is `box_class_scores`

should not be integers in the first place. Think about what you’re trying to achieve here. `argmax`

gives you the *index* of the element that is largest, which will be an integer. So you use that to compute `box_classes`

. But the actual score is the *value* at that position in the original scores array, which is not an integer, right? You don’t take `reduce_max`

**of** `argmax`

, you take `reduce_max`

of the actual scores.

If you have a tensor consisting of integers and you want to convert it to floats, that is easy:

`x = tf.cast(x, tf.float32)`

But I doubt that will help in this instance. You’ll most likely end up with an incorrect answer of the correct type.

Hi Paul. I think I got it. thanks!