Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Keras summation Layer acting weird, summing over training set

I am having trouble understanding the basic way Keras works. I am experimenting with a single summation layer, implemented as a Lambda layer using tensorflow as a backend:

from keras import backend as K

test_model = Sequential()
test_model.add( Lambda( lambda x: K.sum(x, axis=0), input_shape=(2,3)) )

x = np.reshape(np.arange(12), (2,2,3))
test_model.predict(x)

This returns:

array([[  6.,   8.,  10.],
   [ 12.,  14.,  16.]], dtype=float32)

Which is very weird, as it sums over the first index, which to my understanding corresponds to the index of the training data. Also, if I change the axis to axis=1 then the sum is taken over the second coordinate, which is what I would expect to get for axis=0.

What is going on? Why does it seem like the axis chosen effects how the data is passed to the lambda layer?

like image 752
edo arad Avatar asked Dec 02 '25 15:12

edo arad


1 Answers

The input_shape is the shape of one sample of the batch.
It doesn't matter if you have 200 or 10000 samples in a batch, all the samples should be (2,3).

But the batch itself is what is passed along from one layer to another.
A batch contains "n" samples, each sample with the input_shape:

  • Batch shape then is: (n, 2, 3) -- n samples, each sample with input_shape = (2,3)

You don't define "n" when input_shape is required, because "n" will be defined when you use fit or another training command, with the batch_size. (In your example, n = 2)


This is the original array:

[[[ 0  1  2]
  [ 3  4  5]]

 [[ 6  7  8]
  [ 9 10 11]]]

Sample 1 = [ 0  1  2], [ 3  4  5]
Sample 2 = [ 6  7  8], [ 9 10 11]

Summing on index 0 (the batch size dimension) will sum sample 1 with sample 2:

[ 6 8 10], [12 14 16]

Summing on index 1 will sum the first dimension of one sample's input shape:

[ 3, 5, 7 ], [15, 17, 19]
like image 186
Daniel Möller Avatar answered Dec 04 '25 09:12

Daniel Möller



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!