null
null

Reputation: 1433

Padding with even kernel size in a convolutional layer in Keras (Theano)

I need to now how data is padded in a 1d convolutional layer using Keras with Theano as backend. I use a "same" padding.

Assuming we have an output_length of 8 and a kernel_size of 4. According to the original Keras code we have padding of 8//4 == 2. However, when adding two zeros at the left and the right end of my horizontal data, I could compute 9 convolutions instead of 8.

Can somebody explain me how data is padded? Where are zeros added and how do I compute the number of padding values on the right and left side of my data?

Upvotes: 2

Views: 2925

Answers (1)

Daniel Möller
Daniel Möller

Reputation: 86600

How to test the way keras pads the sequences:

A very simple test you can do is to create a model with a single convolutional layer, enforce its weights to be 1 and its biases to be 0, and give it an input with ones to see the output:

from keras.layers import *
from keras.models import Model
import numpy as np


#creating the model
inp = Input((8,1))
out = Conv1D(filters=1,kernel_size=4,padding='same')(inp)
model = Model(inp,out)


#adjusting the weights
ws = model.layers[1].get_weights()

ws[0] = np.ones(ws[0].shape) #weights
ws[1] = np.zeros(ws[1].shape) #biases

model.layers[1].set_weights(ws)

#predicting the result for a sequence with 8 elements
testData=np.ones((1,8,1))
print(model.predict(testData))

The output of this code is:

[[[ 2.] #a result 2 shows only 2 of the 4 kernel frames were activated
  [ 3.] #a result 3 shows only 3 of the 4 kernel frames were activated
  [ 4.] #a result 4 shows the full kernel was used   
  [ 4.]
  [ 4.]
  [ 4.]
  [ 4.]
  [ 3.]]]

So we can conclude that:

  • Keras adds the padding before performing the convolutions, not after. So the results are not "zero".
  • Keras distributes the padding equally, and when there is an odd number, it goes first.

So, it made the input data look like this before applying the convolutions

[0,0,1,1,1,1,1,1,1,1,0]

Upvotes: 5

Related Questions