深度学习-np.pad 填充详解

70 篇文章 13 订阅
32 篇文章 4 订阅

大家伙在学习深度学习的卷积网络里有一个填充的问题是难免遇到的 所以np给了pad()这个函数来实现填充 但是多维度(大多数情况下是三维的)的pad函数却很难理解 博主就稍微写一点自己的理解 试图帮助大家理解 不喜勿喷 谢谢!

对一维数组的填充:

  import numpy as np
arr1D = np.array([1, 1, 2, 2, 3, 4])
'''不同的填充方法'''
print 'constant:  ' + str(np.pad(arr1D, (2, 3), 'constant'))
print 'edge:  ' + str(np.pad(arr1D, (2, 3), 'edge'))
print 'linear_ramp:  ' + str(np.pad(arr1D, (2, 3), 'linear_ramp'))
print 'maximum:  ' + str(np.pad(arr1D, (2, 3), 'maximum'))
print 'mean:  ' + str(np.pad(arr1D, (2, 3), 'mean'))
print 'median:  ' + str(np.pad(arr1D, (2, 3), 'median'))
print 'minimum:  ' + str(np.pad(arr1D, (2, 3), 'minimum'))
print 'reflect:  ' + str(np.pad(arr1D, (2, 3), 'reflect'))
print 'symmetric:  ' + str(np.pad(arr1D, (2, 3), 'symmetric'))
print 'wrap:  ' + str(np.pad(arr1D, (2, 3), 'wrap'))

运行结果:
在这里插入图片描述
constant连续一样的值填充,有关于其填充值的参数。constant_values=(x, y)时前面用x填充,后面用y填充。缺参数是为0000。。。
edge用边缘值填充
linear_ramp边缘递减的填充方式
maximum, mean, median, minimum分别用最大值、均值、中位数和最小值填充
reflect, symmetric都是对称填充。前一个是关于边缘对称,后一个是关于边缘外的空气对称╮(╯▽╰)╭
wrap用原数组后面的值填充前面,前面的值填充后面
也可以有其他自定义的填充方法
对多维数组填充:

import numpy as np 
arr3D = np.array([[[1, 1, 2, 2], [1, 1, 2, 2], [1, 1, 2, 2],[1, 1, 2, 2]],
 				[[5, 1, 2, 6], [5, 1, 2, 6], [5, 1, 2, 6], [5, 1, 2, 6]],
  				[[1, 1, 2, 2], [1, 1, 2, 2], [1, 1, 2, 2], [1, 1, 2, 2]]]) 

在这里插入图片描述
立体的展示就是这样:
在这里插入图片描述

print(np.pad(arr3D,((0,0),(0,1),(0,1))))
[[[1 1 2 2 0]
  [1 1 2 2 0]
  [1 1 2 2 0]
  [1 1 2 2 0]
  [0 0 0 0 0]]

 [[5 1 2 6 0]
  [5 1 2 6 0]
  [5 1 2 6 0]
  [5 1 2 6 0]
  [0 0 0 0 0]]

 [[1 1 2 2 0]
  [1 1 2 2 0]
  [1 1 2 2 0]
  [1 1 2 2 0]
  [0 0 0 0 0]]]

前后 上下 左右
也就是下边,右边各加一行0填充
在这里插入图片描述
边缘填充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zqx951102

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值