Tensorflow/Keras Conv2D layers with padding='SAME' behave strangely
我的问题:
我进行的一项简单实验表明,在Keras / TF的conv2d层中使用
实验说明-只要您有兴趣进一步阅读:
我使用
当
我还以为它没有简单地使用
不过,我修补了
Keras中的
padding ='Same'的示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 | # Importing dependency import keras from keras.models import Sequential from keras.layers import Conv2D # Create a sequential model model = Sequential() # Convolutional Layer model.add(Conv2D(filters=24, input_shape=(5,5,1), kernel_size=(2,2), strides =(2,2) ,padding='Same')) # Model Summary model.summary() |
代码输出-
1 2 3 4 5 6 7 8 9 10 | Model:"sequential_20" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_28 (Conv2D) (None, 3, 3, 24) 120 ================================================================= Total params: 120 Trainable params: 120 Non-trainable params: 0 _________________________________________________________________ |
图形表示形式:
下图显示了当padding ='Same'时输入的填充(input_shape =(5,5,1),kernel_size =(2,2),步幅=(2,2))。
-------------------------------------------------- -------------------------------------------------- --------------
Keras中的
padding ='Valid'的示例:Conv2D使用了与我们上面用于padding ='Same'相同的输入。即(input_shape = {5,5,1),kernel_size = {2,2),步幅=(2,2))
1 2 3 4 5 6 7 8 9 10 11 12 13 | # Importing dependency import keras from keras.models import Sequential from keras.layers import Conv2D # Create a sequential model model = Sequential() # Convolutional Layer model.add(Conv2D(filters=24, input_shape=(5,5,1), kernel_size=(2,2), strides =(2,2) ,padding='Valid')) # Model Summary model.summary() |
代码输出-
1 2 3 4 5 6 7 8 9 10 | Model:"sequential_21" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_29 (Conv2D) (None, 2, 2, 24) 120 ================================================================= Total params: 120 Trainable params: 120 Non-trainable params: 0 _________________________________________________________________ |
图形表示形式:
下图显示了当padding ='Valid'时没有为输入添加填充(input_shape =(5,5,1),kernel_size =(2,2),步幅=(2,2))。
-------------------------------------------------- -------------------------------------------------- --------------
现在让我们尝试使用与
代码-
1 2 3 4 5 6 7 8 9 10 11 12 13 | # Importing dependency import keras from keras.models import Sequential from keras.layers import Conv2D # Create a sequential model model = Sequential() # Convolutional Layer model.add(Conv2D(filters=24, input_shape=(6,6,1), kernel_size=(2,2), strides =(2,2) ,padding='Valid')) # Model Summary model.summary() |
代码输出-
1 2 3 4 5 6 7 8 9 10 | Model:"sequential_22" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_30 (Conv2D) (None, 3, 3, 24) 120 ================================================================= Total params: 120 Trainable params: 120 Non-trainable params: 0 _________________________________________________________________ |