在 torch.normal()
函数中,size
参数用于指定生成张量的形状。torch.normal()
函数用于从正态(高斯)分布中生成随机数。函数的基本形式是:
python
torch.normal(mean, std, size)
mean
:均值,可以是标量或张量。如果是标量,表示生成的所有元素的均值;如果是张量,表示对应位置元素的均值。std
:标准差,可以是标量或张量。如果是标量,表示生成的所有元素的标准差;如果是张量,表示对应位置元素的标准差。size
:生成张量的形状。
以下是一些示例,展示了如何使用 size
参数生成不同形状的张量:
示例代码
python
import torch
# 生成一个形状为(3,)的一维张量
mean = 0.0
std = 1.0
size = (3,)
tensor_1d = torch.normal(mean, std, size)
print("1D Tensor:", tensor_1d)
# 生成一个形状为(2, 3)的二维张量
size = (2, 3)
tensor_2d = torch.normal(mean, std, size)
print("2D Tensor:", tensor_2d)
# 生成一个形状为(2, 3, 4)的三维张量
size = (2, 3, 4)
tensor_3d = torch.normal(mean, std, size)
print("3D Tensor:", tensor_3d)
# 生成一个形状为(3, 3)的二维张量,均值和标准差为张量
mean_tensor = torch.tensor([[0.0, 1.0, 2.0],
[0.0, 1.0, 2.0],
[0.0, 1.0, 2.0]])
std_tensor = torch.tensor([[1.0, 1.0, 1.0],
[1.0, 1.0, 1.0],
[1.0, 1.0, 1.0]])
size = (3, 3)
tensor_2d_with_tensor_mean_std = torch.normal(mean_tensor, std_tensor)
print("2D Tensor with tensor mean and std:", tensor_2d_with_tensor_mean_std)
输出示例
1D Tensor: tensor([ 0.0343, -0.4731, 1.1844])
2D Tensor: tensor([[ 0.1239, 1.1049, 0.4560],
[-0.3104, 0.6228, 0.2698]])
3D Tensor: tensor([[[ 0.0793, -0.2101, 0.7634, 0.1921],
[-0.1220, -0.9352, -1.3496, -0.6405],
[ 0.3821, 0.2745, 0.1925, 0.4075]],
[[-0.8833, 1.1430, 0.3650, -0.7995],
[ 0.1403, -0.2226, -0.2483, 0.5914],
[-0.3337, 0.3735, -0.0515, -1.1255]]])
2D Tensor with tensor mean and std: tensor([[-0.2971, 1.5936, 2.3287],
[ 1.0322, 1.3414, 1.7221],
[-0.6370, 1.5202, 1.3766]])
说明
- 一维张量 :
size = (3,)
生成一个形状为(3,)
的一维张量。 - 二维张量 :
size = (2, 3)
生成一个形状为(2, 3)
的二维张量。 - 三维张量 :
size = (2, 3, 4)
生成一个形状为(2, 3, 4)
的三维张量。 - 均值和标准差为张量 :如果
mean
和std
是张量,那么生成的张量每个元素的均值和标准差分别由对应位置的值决定。
通过指定不同的 size
参数,可以生成不同形状的张量。这对于初始化神经网络的权重特别有用,因为不同层的权重通常具有不同的形状。
如果您有更多问题或需要进一步的帮助,请告诉我!