Numpy
np.pad
np.pad(array, pad_width, mode, **kwargs)
给一个n维矩阵最外围补一圈任意数,类似于CNN中的padding。
array:需要padding的array;pad_width:元组形式的数据,表明了不同的axis的padding位置,before_1表示在axis=0的最开始补,after_2表示在axis=1的末尾补;mode:padding的模式,可以是常量甚至也可以是函数。
下面是源代码中给出的参数描述,那么老长。
'''
Pads an array.
Parameters
----------
array : array_like of rank N
Input array
pad_width : {sequence, array_like, int}
Number of values padded to the edges of each axis.
((before_1, after_1), ... (before_N, after_N)) unique pad widths
for each axis.
((before, after),) yields same before and after pad for each axis.
(pad,) or int is a shortcut for before = after = pad width for all
axes.
mode : str or function
One of the following string values or a user supplied function.
'constant'
Pads with a constant value.
'edge'
Pads with the edge values of array.
'linear_ramp'
Pads with the linear ramp between end_value and the
array edge value.
'maximum'
Pads with the maximum value of all or part of the
vector along each axis.
'mean'
Pads with the mean value of all or part of the
vector along each axis.
'median'
Pads with the median value of all or part of the
vector along each axis.
'minimum'
Pads with the minimum value of all or part of the
vector along each axis.
'reflect'
Pads with the reflection of the vector mirrored on
the first and last values of the vector along each
axis.
'symmetric'
Pads with the reflection of the vector mirrored
along the edge of the array.
'wrap'
Pads with the wrap of the vector along the axis.
The first values are used to pad the end and the
end values are used to pad the beginning.
<function>
Padding function, see Notes.
stat_length : sequence or int, optional
Used in 'maximum', 'mean', 'median', and 'minimum'. Number of
values at edge of each axis used to calculate the statistic value.
((before_1, after_1), ... (before_N, after_N)) unique statistic
lengths for each axis.
((before, after),) yields same before and after statistic lengths
for each axis.
(stat_length,) or int is a shortcut for before = after = statistic
length for all axes.
Default is ``None``, to use the entire axis.
constant_values : sequence or int, optional
Used in 'constant'. The values to set the padded values for each
axis.
((before_1, after_1), ... (before_N, after_N)) unique pad constants
for each axis.
((before, after),) yields same before and after constants for each
axis.
(constant,) or int is a shortcut for before = after = constant for
all axes.
Default is 0.
end_values : sequence or int, optional
Used in 'linear_ramp'. The values used for the ending value of the
linear_ramp and that will form the edge of the padded array.
((before_1, after_1), ... (before_N, after_N)) unique end values
for each axis.
((before, after),) yields same before and after end values for each
axis.
(constant,) or int is a shortcut for before = after = end value for
all axes.
Default is 0.
reflect_type : {'even', 'odd'}, optional
Used in 'reflect', and 'symmetric'. The 'even' style is the
default with an unaltered reflection around the edge value. For
the 'odd' style, the extended part of the array is created by
subtracting the reflected values from two times the edge value.
Returns
-------
pad : ndarray
Padded array of rank equal to `array` with shape increased
according to `pad_width`.
import numpy as np
ones3_3 = np.ones([3,3], int)
print(ones3_3)
>>>[[1 1 1]
[1 1 1]
[1 1 1]]
在值为1的3×3的矩阵的行的开始补1行2,在行的末尾补2行3;在列的开始补两行4,列的末尾补3行5。这操作超好玩。( ̄▽ ̄)~*
X = np.pad(ones3_3, ((1, 2), (2, 3)), 'constant',
constant_values=((2,3), (4,5)))
print(X)
>>>
[[4 4 2 2 2 5 5 5]
[4 4 1 1 1 5 5 5]
[4 4 1 1 1 5 5 5]
[4 4 1 1 1 5 5 5]
[4 4 3 3 3 5 5 5]
[4 4 3 3 3 5 5 5]]
Torch
torch.unbind(x, dim=0)
移除某一维度并返回一个和移除维度长度相同的元组,每个元组中存放剩余维度的张量。
假设x.size() = [30, 128, 100],unbind之后返回:
30 torch.Size([128, 100])的张量元组。