def zero_pad(X,pad):
"""
把数据集X的图像边界全部使用0来扩充pad个宽度和高度。
参数:
X - 图像数据集,维度为(样本数,图像高度,图像宽度,图像通道数)
pad - 整数,每个图像在垂直和水平维度上的填充量
返回:
X_paded - 扩充后的图像数据集,维度为(样本数,图像高度 + 2*pad,图像宽度 + 2*pad,图像通道数)
"""
X_paded = np.pad(X,(
(0,0), #样本数,不填充
(pad,pad), #图像高度,你可以视为上面填充x个,下面填充y个(x,y)
(pad,pad), #图像宽度,你可以视为左边填充x个,右边填充y个(x,y)
(0,0)), #通道数,不填充
'constant', constant_values=0) #连续一样的值填充
return X_paded
仔细观察可以看出来np.pad(arr3D, ((1, 1), (2, 2), (2, 2)), ‘constant’)中第二个参数的第一个数组(1,1)表示在三维数组的“前后”各加一个“层”,第二个数组(2, 2)表示在数组的“上下”各加两个“行”,
第三个数组(2, 2)表示在数组的“左右”各加两个“列” 即图中的状态。
更多维度的时候 依次类推 但是在深度学习中 更多的是通道数为三的图片 而且 第一个数组一般为(0,0).
感谢大家收看!
部分例子由https://blog.youkuaiyun.com/hustqb/article/details/77726660借鉴。