在二维矩阵的四周填充0
应用场景
在卷积操作中,一般使用 padding='SAME'
填充0,但有时不灵活,我们想自己去进行补零操作,此时可以使用tf.keras.layers.ZeroPadding2D
语法
1 __init__( 2 padding=(1, 1), 3 data_format=None, 4 **kwargs 5 )
参数
-
padding:整数,或者2个整数的元组,或者2个整数的2个元组的元组
-
整数:以上下、左右对称的方式填充0
例子:1,表示上下各填充一行0,即:行数加2;左右各填充一列0,即:列数加2 -
2个整数的元组:第一个整数表示上下对称的方式填充0;第二个整数表示左右对称的方式填充0
例子:(1,1),表示上下各填充一行0,即:行数加2;左右各填充一列0,即:列数加2 -
2个整数的2个元组的元组:表示
((top_pad, bottom_pad), (left_pad, right_pad))
-
-
data_format:字符串, “channels_last” (默认) 或 “channels_first”, 表示输入中维度的顺序。
- channels_last 对应输入形状 (batch, height, width, channels)
- channels_first 对应输入尺寸为 (batch, channels, height, width)。
默认为在 Keras 配置文件 ~/.keras/keras.json 中的 image_data_format 值。 如果你从未设置它,将使用 “channels_last”。
输入形状:
4维 tensor :
- 如果 data_format 是 “channels_last”: (batch, rows, cols, channels)
- 如果 data_format 是 “channels_first”: (batch, channels, rows, cols)
输出形状:
4维 tensor :
- 如果 data_format 是 “channels_last”: (batch, padded_rows, padded_cols, channels)
- 如果 data_format 是 “channels_first”: (batch, channels, padded_rows, padded_cols)
例子
构建2维矩阵
import numpy as np import tensorflow as tf np.set_printoptions(threshold=np.inf) np.random.seed(1) arr=np.random.randint(1,9,(4,4)) print(arr)
执行结果:
1 [[6 4 5 1] 2 [8 2 4 6] 3 [8 1 1 2] 4 [5 8 6 5]]
例1
传递1个整数,填充0:
1 arr=arr.reshape(1,4,4,1) 2 inp=tf.keras.Input((4,4,1)) 3 x=tf.keras.layers.ZeroPadding2D(1)(inp) 4 model=tf.keras.Model(inp,x) 5 res=model(arr) 6 tf.print(tf.squeeze(res))
例2
传递2个整数的tuple,填充0:
1 arr=arr.reshape(1,4,4,1) 2 inp=tf.keras.Input((4,4,1)) 3 x=tf.keras.layers.ZeroPadding2D((1,2))(inp) 4 model=tf.keras.Model(inp,x) 5 res=model(arr) 6 print(tf.squeeze(res).numpy())
执行结果:
1 [[0 0 0 0 0 0 0 0] 2 [0 0 6 4 5 1 0 0] 3 [0 0 8 2 4 6 0 0] 4 [0 0 8 1 1 2 0 0] 5 [0 0 5 8 6 5 0 0] 6 [0 0 0 0 0 0 0 0]]
例3
1 arr=arr.reshape(1,4,4,1) 2 inp=tf.keras.Input((4,4,1)) 3 x=tf.keras.layers.ZeroPadding2D(((1,2),(3,4)))(inp) 4 model=tf.keras.Model(inp,x) 5 res=model(arr) 6 print(tf.squeeze(res).numpy())
执行结果:
1 [[0 0 0 0 0 0 0 0 0 0 0] 2 [0 0 0 6 4 5 1 0 0 0 0] 3 [0 0 0 8 2 4 6 0 0 0 0] 4 [0 0 0 8 1 1 2 0 0 0 0] 5 [0 0 0 5 8 6 5 0 0 0 0] 6 [0 0 0 0 0 0 0 0 0 0 0] 7 [0 0 0 0 0 0 0 0 0 0 0]]
原文连接:https://www.malaoshi.top/show_1EF5LMACXvfQ.html
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python keras.layers .ZeroPadding2D() 详解 - Python技术站