1 定义
torch.randn 函数是PyTorch中用于生成服从标准正态分布(均值为0,方差为1)的随机数的函数
1)用来创建指定大小的张量;
2)张量中的元素是从标准正态分布中采样得到的随机数。
torch.randn函数的使用方式如下:
torch.randn(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
参数说明:
*size:表示生成的随机数张量的大小。可以是一个整数,表示生成一个具有指定大小的1维张量,也可以是一个整数元组,表示生成一个具有指定大小的多维张量。
out:可选参数,用于指定输出张量。
dtype:可选参数,用于指定输出张量的数据类型,默认为None,表示使用默认的数据类型。
layout:可选参数,用于指定输出张量的布局,默认为torch.strided。
device:可选参数,用于指定输出张量所在的设备,默认为None,表示使用默认设备。
requires_grad:可选参数,用于指定输出张量是否需要梯度计算,默认为False。
2 应用
torch.randn(batch_size,channels,width,height)
生成一个形状为(batch_size,channels,width,height)的四维张量,会生成一个均值为0,标准差为1的正态分布中的随机数,用于初始化模型参数或生成输入数据。
import torch
input = torch.randn(8,3,224,224)
print(input.size())
# 输出结果为 torch.Size([8, 3, 224, 224])
为了进一步的理解四维张量,将数字改小一些看输出结果
import torch
input = torch.randn(2,3,4,4)
print(input)
torch.randn(2,3,4,4)中参数的两种理解方式:
1)顺序剖解:
- 一个四维的:包含batch_size = 2个三维的 (黄色框线)
- 每一个三维:包含channels = 3个 二维的 (绿色框线)
- 每一个二维:包含1个4*4的矩阵(红色框线)
2)逆序剖解
- 最内层是4*4的二维矩阵(红色框线)
- 3个二维矩阵构成一个三维 (绿色框线)
- 2个三维构成一个四维(黄色框线)