W2 A2 | Word_to_vec_map' | operands could not be broadcast together with shapes (50,) (2,) (50,) ',)

Kindly help am getting the following error in the sentence_to_avg(sentence, word_to_vec_map) function in Course 5 Week 2 Assignment.

operands could not be broadcast together with shapes (50,) (2,) (50,) ',)

I guess you might hard-code avg shape with 50, or use constant value 50 somewhere. Although the function comments say its return value avg is a “numpy-array of shape (50,)”, you should use the shape of any word vector in word_to_vec_map. Because anyone call this function may pass in different arguments, just like the unit test in exercise.

Try starting your avg variable with this:

avg = np.zeros(word_to_vec_map[any_word].shape)

it got rid of that error for me. Now i am dealking with a bug in the auto grader. The notebook says everything is correct, but im not getting any points from the auto gradder

2 Likes

Hi dbiber.
I tried your method and got the right answer, but why can’t I use “words[0]” instead of “any_word”. If i do that i will get the following error message.
*avg = *

  • [-0.008005 0.56370833 -0.50427333 0.258865 0.55131103 0.03104983*
  • -0.21013718 0.16893933 -0.09590267 0.141784 -0.15708967 0.18525867*
  • 0.6495785 0.38371117 0.21102167 0.11301667 0.02613967 0.26037767*
  • 0.05820667 -0.01578167 -0.12078833 -0.02471267 0.4128455 0.5152061*
  • 0.38756167 -0.898661 -0.535145 0.33501167 0.68806933 -0.2156265*
  • 1.797155 0.10476933 -0.36775333 0.750785 0.10282583 0.348925*
  • -0.27262833 0.66768 -0.10706167 -0.283635 0.59580117 0.28747333*
  • -0.3366635 0.23393817 0.34349183 0.178405 0.1166155 -0.076433*
  • 0.1445417 0.09808667]*

KeyError Traceback (most recent call last)
in
25 print(“\033[92mAll tests passed!”)
26
—> 27 sentence_to_avg_test(sentence_to_avg)
28
29 # END UNIT TEST

in sentence_to_avg_test(target)
16 assert tuple(avg.shape) == tuple(word_to_vec_map[‘a’].shape), “Check the shape of your avg array”
17 assert np.allclose(avg, [1.25, 2.5]), “Check that you are finding the 4 words”
—> 18 avg = target(“love a a_nw c_w a_s”, word_to_vec_map)
19 assert np.allclose(avg, [1.25, 2.5]), “Divide by count, not len(words)”
20 avg = target(“love”, word_to_vec_map)

in sentence_to_avg(sentence, word_to_vec_map)
22
23 # Initialize the average word vector, should have the same shape as your word vectors.
—> 24 avg = np.zeros(word_to_vec_map[words[0]].shape)
25
26 # Initialize count to 0

KeyError: ‘love’

Hello Lijiang,

Please look at the implementation that you are try to do for:

#Initialize the average word vector, should have the same shape as your word vectors.

So, it should have the use of ‘any_word’ in it.

I know that is not very clear from the given statement in the notebook that instructed you- “When creating the avg array of zeros, you’ll want it to be a vector of the same shape as the other word vectors in the `word_to_vec_map”, but you need to make that out from the statement.

I will ask the staff to make this statement more clear for future references as I can see you all struggling to find the real solution.