If I reshape the one_hot matrix to (depth, ), the tests pass. However, if I reshape the one_hot matrix to (depth, 1), the tests fail. Why is this? I thought we would need to use (depth, 1) to make sure we get a single-column matrix with rows = depth. Basically, I don’t understand why we need to use (depth, ).
Because
the shape of both
y_pred
andy_true
are[batch_size, num_classes]
,
later on, when you need to calculate the cost using tf.keras.losses.CategoricalCrossentropy | TensorFlow v2.14.0
If you reshape to [depth, 1]
, the shape will be [batch_size, num_classes, 1]
which throws an exception in the cost function.
However, you actually don’t need the reshape command here at all. I will report this upstream.
I don’t remember if it gives you 100% pass when you submit with that error, if it does, then you can ignore it. If it doesn’t, change it, but remember that it’s not needed here.
it seems that “[depth]” works for me, not “depth”, not “…, depth,1)”, not “…,(depth,1)”.
Here’s another explanation:
shape=[C, 1]
: This shape results in a column vector. Each element of the one-hot encoded tensor will be reshaped into its own column. This is often used when you want to represent each one-hot encoded label as a column vector.shape=[C,]
: This shape results in a one-dimensional tensor. The resulting tensor will be a flat array withC
elements. This is often used when you want to represent the one-hot encoded labels as a flat array.
if you see the code comments, the function should return a one-dimensional tensor (array) with the one hot encoding.