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. hive无法执行带where语句的SQL
  3. 调用startActivityForResult后直接调用onActivityResult
  4. SM35/BDC Record / Log 导出
  5. ios使用支付宝进行支付,注意事项 集成支付宝钱包支付iOS SDK的方法与经验。...
  6. swing和MySQL登录注册_JavaSwing+Mysql实现简单的登录界面+用户是否存在验证
  7. ASP.NET Core中间件初始化探究
  8. php asp 语法,ASP 语法
  9. java三态_Java中对象的三种状态
  10. c可以 char* 赋值但是c++不可以_雷佳音的妻子完全可以女团C位出道,这么有气质的女人,谁能不爱...
  11. 企业级实际性能测试案例与经验分享
  12. 一只火鸡带你了解大数据预测(经典)
  13. 我的世界java生存命令方块,我的世界作弊码大全(命令大全) MC命令方块指令
  14. 智能门锁的优劣,我们应该如何有效识别?
  15. 人工智能——特征工程思维导图
  16. fpga板子怎么和电脑连_FPGA与PC串口通信设计与实现
  17. 基于quartz实现定时任务管理系统
  18. 计算机游戏翻译,百度翻译电脑版
  19. 巴菲特50年投资之道
  20. dobot moveit 包_越疆科技dobot(magician)机械臂在ROS moveit下gazebo仿真控制和真实控制功能包 有兴趣的可以下载来玩...

热门文章

  1. Linux Shell脚本攻略学习总结:二
  2. Linux系统的启动引导过程
  3. CDN 监控系统(二)
  4. 算法 求一个数组的最长递减子序列 C
  5. html基础实验的实验原理,html网页设计实验报告.doc
  6. php {template header},php通过header发送自定义数据
  7. actuator的原理_使用Spring Boot Actuator监视Java应用程序
  8. 兰州理工大学计算机考研真题,2017年兰州理工大学计算机与通信学院893计算机操作系统考研题库...
  9. 会计师要计算机学的,会计师要具备哪些能力条件
  10. crt登录linux显示中文乱码,linux secureCRT 显示中文乱码