【深度学习】numpy.tile(),numpy.repeat(),torch.repeat(),torch.repeat_interleave()

其中

1. np.tile, tensor.repeat

numpy.tile()
torch.repeat()

两者类似,将矩阵或者numpy整体进行扩展:

# numpy.tile()
a
Out[44]: 
tensor([[1, 2],
        [3, 4]])

np.tile(a,[1,3])
Out[46]: 
array([[1, 2, 1, 2, 1, 2],
       [3, 4, 3, 4, 3, 4]], dtype=int64)

np.tile(a,[3,1])
Out[47]: 
array([[1, 2],
       [3, 4],
       [1, 2],
       [3, 4],
       [1, 2],
       [3, 4]], dtype=int64)
       
# torch.Tensor       
tensor([[1, 2],
        [3, 4]])
a.repeat([1,3])
Out[50]: 
tensor([[1, 2, 1, 2, 1, 2],
        [3, 4, 3, 4, 3, 4]])
a.repeat([3,1])
Out[51]: 
tensor([[1, 2],
        [3, 4],
        [1, 2],
        [3, 4],
        [1, 2],
        [3, 4]])

    

可以看出,np.tile(a, [1,3])torch.repeat(a, [1,3]) 是将矩阵按列进行扩展,也就是 shape:row, col*3。扩展方式是将列进行总体的重复。
【3,1】 情况相反。形状:123 123 123 这样。

2.np.repeat; tensor.repeat _interleave()

再看看np.repeat()torch.Tensor.repeat_interleave()

# numpy : 
 # axis=1,将矩阵行进列扩展repeats 倍数,方式是将每列连续重复
 # shape: 111,222,333 这样。 
np.repeat(a,repeats=3,axis=1)
Out[55]: 
tensor([[1, 1, 1, 2, 2, 2],
        [3, 3, 3, 4, 4, 4]])

# 将行进行(axis=0)扩展3 倍,连续重复每行3次。
np.repeat(a,repeats=3,axis=0)
Out[56]: 
tensor([[1, 2],
        [1, 2],
        [1, 2],
        [3, 4],
        [3, 4],
        [3, 4]])
# torch.tensor
# 方法与np.repeat 一样,按dim指定维度进行连续重
# 复每行或者列的方式进行扩展。
a.repeat_interleave(3, dim=1)
Out[59]: 
tensor([[1, 1, 1, 2, 2, 2],
        [3, 3, 3, 4, 4, 4]])
        
a.repeat_interleave(3, dim=0)
Out[60]: 
tensor([[1, 2],
        [1, 2],
        [1, 2],
        [3, 4],
        [3, 4],
        [3, 4]])

你可能感兴趣的:(动手学深度学习,python)