import numpy as np
import matplotlib.pyplot as plt
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.random.seed(1)
x = np.random.randn(4,3,3,2)
x_paded = zero_pad(x,2)
#查看信息
print ("x.shape =", x.shape)
print(x)
print ("x_paded.shape =", x_paded.shape)
print ("x[1, 1] =", x[1, 1])
生成的数据
x.shape = (4, 3, 3, 2)
[[[[ 1.62434536 -0.61175641]
[-0.52817175 -1.07296862]
[ 0.86540763 -2.3015387 ]]
[[ 1.74481176 -0.7612069 ]
[ 0.3190391 -0.24937038]
[ 1.46210794 -2.06014071]]
[[-0.3224172 -0.38405435]
[ 1.13376944 -1.09989127]
[-0.17242821 -0.87785842]]]
[[[ 0.04221375 0.58281521]
[-1.10061918 1.14472371]
[ 0.90159072 0.50249434]]
[[ 0.90085595 -0.68372786]
[-0.12289023 -0.93576943]
[-0.26788808 0.53035547]]
[[-0.69166075 -0.39675353]
[-0.6871727 -0.84520564]
[-0.67124613 -0.0126646 ]]]
[[[-1.11731035 0.2344157 ]
[ 1.65980218 0.74204416]
[-0.19183555 -0.88762896]]
[[-0.74715829 1.6924546 ]
[ 0.05080775 -0.63699565]
[ 0.19091548 2.10025514]]
[[ 0.12015895 0.61720311]
[ 0.30017032 -0.35224985]
[-1.1425182 -0.34934272]]]
[[[-0.20889423 0.58662319]
[ 0.83898341 0.93110208]
[ 0.28558733 0.88514116]]
[[-0.75439794 1.25286816]
[ 0.51292982 -0.29809284]
[ 0.48851815 -0.07557171]]
[[ 1.13162939 1.51981682]
[ 2.18557541 -1.39649634]
[-1.44411381 -0.50446586]]]]
x_paded.shape = (4, 7, 7, 2)
x[1, 1] = [[ 0.90085595 -0.68372786]
[-0.12289023 -0.93576943]
[-0.26788808 0.53035547]]
x_paded[1, 1] = 1.74481176421648
这里用x[1,1]来取数据,例如
x[1,1]
x[1, 1, :, :]和这个x[1,1]结果一样
x[1, 1] = [[ 0.90085595 -0.68372786]
[-0.12289023 -0.93576943]
[-0.26788808 0.53035547]]
x[1,1,2]取出的是
x[1, 1, 2] = [-0.26788808 0.53035547]
x[1,1,2,1]取出的是
x[1, 1, 2, 1] = 0.530355466738186
不断加深维度,最后变成一个值,维度都从0开始算
带上":"的理解
X[:,0]结果输出为:
[1 1 3 4 5 6 6 0 4 2 5 9 3]
X[:,1]结果输出为:
[2 2 4 5 6 7 7 4 6 9 8 7 7]
X[:,m:n]结果输出为:
[[1]
[1]
[3]
[4]
[5]
[6]
[6]
[0]
[4]
[2]
[5]
[9]
[3]]
X[:,:,0]结果输出为:
[[ 1 1 3 7 4]
[ 1 1 3 8 5]
[ 8 1 3 7 4]
[ 1 1 3 7 7]
[ 9 1 3 7 4]
[ 8 1 3 7 43]
[ 1 1 3 7 4]
[ 1 1 3 17 4]
[11 1 3 7 4]]
X[:,:,1]结果输出为:
[[ 2 0 4 9 0]
[ 4 5 6 9 0]
[ 2 8 5 3 6]
[ 1 2 5 6 8]
[ 2 3 5 67 4]
[ 2 9 43 3 0]
[ 22 2 42 29 20]
[ 5 20 24 9 10]
[ 2 110 14 4 2]]
X[:,:,m:n]结果输出为:
[[[ 1]
[ 1]
[ 3]
[ 7]
[ 4]]
[[ 1]
[ 1]
[ 3]
[ 8]
[ 5]]
[[ 8]
[ 1]
[ 3]
[ 7]
[ 4]]
[[ 1]
[ 1]
[ 3]
[ 7]
[ 7]]
[[ 9]
[ 1]
[ 3]
[ 7]
[ 4]]
[[ 8]
[ 1]
[ 3]
[ 7]
[43]]
[[ 1]
[ 1]
[ 3]
[ 7]
[ 4]]
[[ 1]
[ 1]
[ 3]
[17]
[ 4]]
[[11]
[ 1]
[ 3]
[ 7]
[ 4]]]