# Tensorflow Dividing a [X, 10, 10, 1] matrix by [X, 1]

## Question:

I’m trying to divide a [X, 10, 10, 1] matrix by the sum of each [10, 10, 1] matrix – so dividing [X, 10, 10, 1] by [X, 1] however using tf.broadcast_to gives an "incompatible shapes" error as shown directly below:

``````t1 = tf.ones([128, 10, 10, 1])
t1_sum = tf.reduce_sum(t1, [1, 2])  # Yields a [128, 1]
divided = tf.math.divide(t1, t1_sum_reshaped)
``````

Error w/ X=128 when using tf.broadcast_to: Incompatible shapes: [128,1] vs. [128,10,10,1] [Op:BroadcastTo]

My workaround to get division working is as follows, but it seems to be awfully slow (and dumb)

``````t1 = tf.ones([128, 10, 10, 1])
t1_sum = tf.reduce_sum(t1, [1, 2])                                                                            # Yields a [128, 1]
t1_sum = tf.stack([t1_sum, t1_sum, t1_sum, t1_sum, t1_sum, t1_sum, t1_sum, t1_sum, t1_sum, t1_sum], axis=-2)  # Yields a [128, 10, 1]
t1_sum = tf.stack([t1_sum, t1_sum, t1_sum, t1_sum, t1_sum, t1_sum, t1_sum, t1_sum, t1_sum, t1_sum], axis=-2)  # Yields a [128, 10, 10, 1]
divided = tf.math.divide(t1, t1_sum)
``````

Is there a better way to do this?

Seems like you can add the keepdims=True argument to your code and it will work as intended:

``````t1 = tf.ones([128, 10, 10, 1])
t1_sum = tf.reduce_sum(t1, [1, 2], keepdims=True) # Yields a [128, 1, 1, 1]
After doing this you can remove the line `t1_sum_reshaped = tf.broadcast_to(t1_sum, t1.shape` since it already has the desired shape.
``````t1 = tf.ones([128, 10, 10, 1])