自学内容网 自学内容网

【TORCH】torch.normal()中的size参数

torch.normal() 函数中,size 参数用于指定生成张量的形状。torch.normal() 函数用于从正态(高斯)分布中生成随机数。函数的基本形式是:

torch.normal(mean, std, size)
  • mean:均值,可以是标量或张量。如果是标量,表示生成的所有元素的均值;如果是张量,表示对应位置元素的均值。
  • std:标准差,可以是标量或张量。如果是标量,表示生成的所有元素的标准差;如果是张量,表示对应位置元素的标准差。
  • size:生成张量的形状。

以下是一些示例,展示了如何使用 size 参数生成不同形状的张量:

示例代码

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) 的三维张量。
  • 均值和标准差为张量:如果 meanstd 是张量,那么生成的张量每个元素的均值和标准差分别由对应位置的值决定。

通过指定不同的 size 参数,可以生成不同形状的张量。这对于初始化神经网络的权重特别有用,因为不同层的权重通常具有不同的形状。

如果您有更多问题或需要进一步的帮助,请告诉我!


原文地址:https://blog.csdn.net/xiong_xin/article/details/140235222

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!