Q:

Is adding a dimension broadcasting?

Given
a = tf.constant([[1, 2, 3], [10, 20, 30], [100, 200, 300], [1000, 2000, 3000]])

all of the following are equivalent
b = tf.constant([100000, 200000, 300000])
print((a+b).eval())

bb = tf.constant([[100000, 200000, 300000]])
print((a+bb).eval())

bbb = tf.constant([[100000, 200000, 300000], [100000, 200000, 300000], [100000, 200000, 300000], [100000, 200000, 300000]])
print((a+bbb).eval())

and produce
[[100001 200002 300003]
 [100010 200020 300030]
 [100100 200200 300300]
 [101000 202000 303000]]

I understand that bb is "broadcast" to the value corresponding to bbb by tf.add (here +). Is the addition of a dimension that transforms b to the value of bbb all broadcasting, or is it something else?

A:

As you mentioned in the comments, b, bb are both valid forms of broadcasting. As mentioned in the numpy documentation,

Arrays do not need to have the same number of dimensions.

