torch.randn()参数size与输出张量形状详解
torch.randn(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor
Returns a tensor filled with random numbers from a normal distribution with mean 0 and variance 1 (also called the standard normal distribution). out_i ∼ N(0,1), The shape of the tensor is defined by the variable argument size.
Parameters
size (int…) – a sequence of integers defining the shape of the output tensor. Can be a variable number of arguments or a collection like a list or tuple.
查看torch.randn()官方文档介绍,实际上torch.randn()返回一个张量,包含了从标准正态分布(均值为0,方差为1,即高斯白噪声)中抽取的一组随机数。张量的形状由参数sizes定义。
好像并没有说清楚,参数size怎么作用的,这里给大家演示一下,注意size输入为一系列的正整数:
当size是1个数时,返回一个长度为4的正态分布张量
torch.randn(4)
tensor([ 1.3186, -0.8001, -0.2989, 0.6381])
当size是2个数时,返回一个2行3列的张量,最小元素的每一行服从正态分布
torch.randn(2, 3)
tensor([[ 1.3435, -1.2493, -0.8758],
[ 1.1435, -1.5320, -0.9512]])
当size是3个数时,返回一个2行1列的张量,其中每个元素又是一个3行4列的张量,最小元素的每一行服从正态分布
torch.randn(2, 3, 4)
tensor([[[-2.0315, 0.1029, 0.4129, -0.3980],
[-0.5129, -0.4984, -0.5934, 0.6140],
[-0.0393, -2.1767, 0.1968, -0.5267]],
[[ 0.7545, -0.1527, -1.5746, -0.8272],
[ 0.6985, -1.1397, -1.2289, -0.3513],
[-1.1178, 0.1474, -0.7278, -1.1510]]])
当size是4个数时,返回一个2行3列的张量,其中每个元素又是一个4行2列的张量,最小元素的每一行服从正态分布
torch.randn(2, 3, 4, 2)
tensor([[[[ 3.9611e-01, 1.0144e-01],
[ 1.9349e+00, -1.2640e+00],
[ 1.4645e+00, 8.3730e-01],
[-1.3819e+00, 1.4743e+00]],
[[ 9.6525e-01, 5.6580e-01],
[-1.1867e+00, -8.8815e-01],
[-1.0240e+00, 1.7835e+00],
[ 1.4675e+00, 1.0380e-03]],
[[-7.6963e-01, 7.4316e-01],
[ 8.5112e-01, 1.8237e+00],
[ 8.0043e-01, 1.8327e+00],
[-2.1753e-01, -8.7711e-02]]],
[[[ 1.5652e+00, 2.3123e-01],
[-5.3719e-01, 1.4747e+00],
[-1.1808e+00, 5.1531e-02],
[-4.3431e-01, 1.3920e-02]],
[[-1.1366e-01, 3.9695e-01],
[-4.2535e-02, 1.0583e+00],
[ 1.2490e-01, 2.8763e-01],
[ 1.7470e+00, -5.3276e-01]],
[[-1.4223e+00, 1.4635e+00],
[-1.8354e+00, 7.7747e-01],
[-6.5236e-01, -9.7374e-01],
[-3.3809e-01, -7.6553e-01]]]])
当size是5个数时,返回一个2行1列的张量,其中每个元素又是一个2行2列的张量,又其中的每一个元素是一个2行3列的张量,最小元素的每一行服从正态分布
torch.randn(2, 2, 2, 2, 3)
tensor([[[[[-6.6070e-01, -1.9625e+00, 6.8532e-01],
[-2.1039e+00, 7.9951e-01, 1.6203e-01]],
[[ 4.6921e-01, 2.4813e-01, -2.4625e+00],
[ 3.5252e-01, -5.5093e-01, 4.9952e-01]]],
[[[-5.9623e-01, 9.4782e-01, -1.0019e+00],
[ 7.4276e-01, 1.3005e-01, -5.1987e-02]],
[[-1.0716e+00, -1.5122e-01, 4.2387e-01],
[-4.8268e-01, 1.0938e+00, -1.6504e-01]]]],
[[[[-8.0815e-01, 1.2935e+00, -1.1570e+00],
[-1.6112e+00, -7.4303e-02, 5.3961e-01]],
[[-8.0979e-02, 1.7036e+00, 6.7780e-01],
[-8.9132e-01, -1.3144e+00, -2.6456e-01]]],
[[[ 1.4088e+00, -7.4264e-01, -5.1429e-01],
[ 1.9509e+00, -6.5441e-01, 2.0825e-03]],
[[-9.7385e-01, -3.0170e-01, -4.1639e-01],
[-1.9800e+00, 4.5140e-02, 9.3495e-01]]]]])
当size是n个数时,m_1,m_2,…,m_n,若n为奇数,则返回一个m_1行1列的张量,其中每个元素是一个m_2行m_3列的张量,…,又其中每个元素是一个m_n-1行m_n列的张量,最小元素的每一行服从正态分布
当size是n个数时,m_1,m_2,…,m_n,若n为偶数,则返回一个m_1行m_2列的张量,其中每个元素是一个m_3行m_4列的张量,…,又其中每个元素是一个m_n-1行m_n列的张量,最小元素的每一行服从正态分布