python--numpy pad函数使用

原文:https://blog.csdn.net/qq_29592167/article/details/81043640

在卷积神经网络中,为了避免图片边缘像素点不能有效得到使用,同时,在卷积之后,图片被不断压缩的情况,我们有一个重要的操作叫做padding,翻译为填充,主要是通过在图片周围填充一定量的像素点来避免上述两种问题的产生。

如上图所示,红色区域为原始图像,我们需要将其周围做好填充,使其成为一个更大的图画,避免卷积结束后出现像素点的损失,从而避免了神经网络无法加深的问题。

在python的numpy库函数中,该函数已经被封装好。

arr1D = np.array([1,2,3,4])

‘constant’——表示连续填充相同的值,每个轴可以分别指定填充值,constant_values=(x, y)时前面用x填充,后面用y填充,缺省值填充0

>>> arr1 = np.pad(arr1D, ((2,2)), 'constant')

>>> arr1

array([0, 0, 1, 2, 3, 4, 0, 0])

‘edge’——表示用边缘值填充

 

arr1 = np.pad(arr1D, ((2,2)), 'edge')

>>> arr1

array([1, 1, 1, 2, 3, 4, 4, 4])

‘linear_ramp’——表示用边缘递减的方式填充

>>> arr1 = np.pad(arr1D, ((2,2)), 'linear_ramp')

>>> arr1

array([0, 0, 1, 2, 3, 4, 2, 0])

‘maximum’——表示最大值填充

 

>>> arr1 = np.pad(arr1D, ((2,2)), 'maximum')

>>> arr1

array([4, 4, 1, 2, 3, 4, 4, 4])

‘mean’——表示均值填充

 

>>> arr1 = np.pad(arr1D, ((2,2)), 'mean')

>>> arr1

array([2, 2, 1, 2, 3, 4, 2, 2])

‘median’——表示中位数填充

>> arr1 = np.pad(arr1D, ((2,2)), 'median')

>>> arr1

array([2, 2, 1, 2, 3, 4, 2, 2])

‘minimum’——表示最小值填充

>>> arr1 = np.pad(arr1D, ((2,2)), 'minimum')

>>> arr1

array([1, 1, 1, 2, 3, 4, 1, 1])

‘reflect’——表示对称填充

>>> arr1 = np.pad(arr1D, ((2,2)), 'reflect')

>>> arr1

array([3, 2, 1, 2, 3, 4, 3, 2])

>>> arr1 = np.pad(arr1D, ((3,3)), 'reflect')

>>> arr1

array([4, 3, 2, 1, 2, 3, 4, 3, 2, 1])

 
  1. >>> arr1 = np.pad(arr1D, ((4,4)), 'reflect')

  2. >>> arr1

  3. array([3, 4, 3, 2, 1, 2, 3, 4, 3, 2, 1, 2])

‘symmetric’——表示对称填充

 
  1. >>> arr1 = np.pad(arr1D, ((2,2)), 'symmetric')

  2. >>> arr1

  3. array([2, 1, 1, 2, 3, 4, 4, 3])

‘wrap’——表示用原数组后面的值填充前面,前面的值填充后面

 
  1. >>> arr1 = np.pad(arr1D, ((2,2)), 'wrap')

  2. >>> arr1

  3. array([3, 4, 1, 2, 3, 4, 1, 2])

但是如何调用还是要注意,首先,卷积操作基于整个图像,而通常一副彩色图是由三个二维矩阵组成的立体三维数组,所以,卷积核也是三维的,相应的,卷积运算就在两个维度上展开,卷积核的移动式向右,向下,再向右,向下,直到图片遍历结束为止,因此,我们的填充操作只在两个轴上进行,也就是我们通常意义的x轴和y轴,但问题的关键在于,当我们在python中,用np.array定义了一个三维数组之后,怎么把每一个纬度映射到我们通常所理解的三维图片上呢!这块是我个人的理解,不知道对不对,理论上一幅图,我们是要在x和y轴两个方向上做改变,但是,如果将三色图看成一个立体的,我们的改变实际上发生在x和z两个方向上,如果我们将每种通道的像素值(RGB)分别存储在一个二维数组里,就得到了一个三维数组,而对应的纬度计算时shape的第一个值与图片的表示正好相反,所以,需要我们对后两位进行作用。

如图所示,不过,一般的数据集都会考虑到这一点,所以,在操作数据集的时候,坐标顺序表示依然是正确的,只需要作用前两位填充即可。

python--numpy pad函数使用相关推荐

  1. python numpy 多项式函数 求导求根

    python numpy 多项式函数 求导求根 """求出多项式的 导函数与根 """import numpy as np import m ...

  2. Python numpy.median函数方法的使用

    NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随 ...

  3. Python numpy.mat函数方法的使用

    NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随 ...

  4. Python numpy.corrcoef函数方法的使用

    NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随 ...

  5. Python numpy.atleast_1d函数方法的使用

    NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随 ...

  6. Python numpy.atleast_2d函数方法的使用

    NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随 ...

  7. Python numpy.atleast_3d函数方法的使用

    NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随 ...

  8. Python numpy.var函数方法的使用

    NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随 ...

  9. Python numpy.digitize函数方法的使用

    NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随 ...

  10. Python numpy.vander函数方法的使用

    NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随 ...

最新文章

  1. 一文了解卷积神经网络在股票中应用
  2. 深入了解父类引用指向子类
  3. java中注解的使用与实例 (二)
  4. Android XML小工具
  5. 对话国际农民丰收节贸易会-林育庆:菲律宾谋定中国农业
  6. wxWidgets:wxMemoryInputStream类用法
  7. VS2015上配置opencv2.4.11
  8. python怎么用圆周率_Python语言中,如何使用圆周率?
  9. 正式请求:Could you...? May I...? _52
  10. 我可以编写一个CSS选择器来选择不具有某个类或属性的元素吗?
  11. java值传递和引用传递的例子,Java中的值传递和引用传递实例介绍
  12. 凸优化第四章凸优化问题 4.3 线性规划问题
  13. 苹果cms主动推送php,苹果cmsv10百度主动URL推送教程
  14. 顺序表实验——顺序表的基本操作
  15. 商鼎云|亚马逊云盘关停了?你需要了解分布式存储云盘
  16. Proptech崛起,房地产产业数智化,成了2020年的新风口
  17. AWS简介(Amazon Web Services )
  18. 有什么适合小团队的协作工具?
  19. 计算机专业高级职称评定条件,计算机高级工程师职称评定条件
  20. 通过光盘安装Ubuntu18.04教程

热门文章

  1. Mysql/Mairadb主从复制
  2. 工业机器人几个自由度_取件冲压上下料机械手和六自由度工业机器人805A
  3. java小知识_java小知识点简单回顾
  4. php比较函数代码,php字符串比较函数
  5. html svg波浪,svg+css3做一个动感的波浪效果实现
  6. JAVA继承心得体会及建议_Java继承总结
  7. 三维重建_快速分类–三向和双枢轴
  8. python枪战项目计划书_燕山大学操作系统课程设计计划书
  9. mysql物理读和逻辑读,SQL Server中STATISTICS IO物理读和逻辑读的误区
  10. 最近,又一家互联网公司裁员了,失业来得太突然…