np.pad()的一些学习小心得
在卷积神经网络中,为了避免因为卷积运算导致输出图像缩小和图像边缘信息丢失,常常采用图像边缘填充技术,即在图像四周边缘填充0,使得卷积运算后图像大小不会缩小,同时也不会丢失边缘和角落的信息。在Python的numpy库中,常常采用numpy.pad()进行填充操作,具体分析如下:
- np.pad()函数
pad(array, pad_width, mode, **kwargs)
返回值:数组
2.参数解释
array——表示需要填充的数组;
pad_width——表示每个轴(axis)边缘需要填充的数值数目。
参数输入方式为:((before_1, after_1), … (before_N, after_N)),其中(before_1, after_1)表示第1轴两边缘分别填充before_1个和after_1个数值。取值为:{sequence, array_like, int}
mode——表示填充的方式(取值:str字符串或用户提供的函数),总共有11种填充模式;
- 填充方式
‘constant’——表示连续填充相同的值,每个轴可以分别指定填充值,constant_values=(x, y)时前面用x填充,后面用y填充,缺省值填充0
‘edge’——表示用边缘值填充
‘linear_ramp’——表示用边缘递减的方式填充
‘maximum’——表示最大值填充
‘mean’——表示均值填充
‘median’——表示中位数填充
‘minimum’——表示最小值填充
‘reflect’——表示对称填充
‘symmetric’——表示对称填充
‘wrap’——表示用原数组后面的值填充前面,前面的值填充后面
4.举例:
import numpy as np
A = np.arange(95,99).reshape(2,2)
print(“A是:”,A)
print(np.pad(A,((1,2),(5,3)),‘constant’,constant_values = (4,2)))
运行结果是:
我的一些理解,如有不对请批评指正
5.原文链接:https://blog.csdn.net/zenghaitao0128/article/details/78713663
之前是看了这篇博客自己做的一些笔记,原文还有很多,大家可以去看
6.后来我又看了一点高维的,因为我的代码里是4维的数组,然后看了一个三维的,有一点启发。
x=np.random.randn(2,2,2)
y=np.pad(x,((2,5),(1,2),(4,3)),‘constant’)
表示在(2,5)三维上前面增加2个数组,后面增加5个数组;
(1,2)表示在二维上前面增加一行,后面增加两行;
(4,3)表示在一维上前面增加4个数字,后面增加3个数字。
————————————————
这一点启发来自于:
原文链接:https://blog.csdn.net/qq_41705596/article/details/93382328