normal

paddle. normal ( mean=0.0, std=1.0, shape=None, name=None ) [源代码]

返回符合正态分布(均值为 mean,标准差为 std 的正态随机分布)的随机 Tensor。

如果 mean 是 Tensor,则输出 Tensor 和 mean 具有相同的形状和数据类型。 如果 mean 不是 Tensor,且 std 是 Tensor,则输出 Tensor 和 std 具有相同的形状和数据类型。 如果 mean 和 std 都不是 Tensor,则输出 Tensor 的形状为 shape,数据类型为 float32。

如果 mean 和 std 都是 Tensor,则 mean 和 std 的元素个数应该相同。

如果 mean 是一个复数,则输出 Tensor 服从复正态分布,其数据类型为 complex64。 如果 mean 是复数类型的 Tensor,则输出 Tensor 的数据类型与 mean 相同。

参数

  • mean (float|complex|Tensor,可选) - 输出 Tensor 的正态分布的平均值。如果 mean 是 float,则表示输出 Tensor 中所有元素的正态分布的平均值。如果 mean 是 Tensor (支持的数据类型为 float32、float64、complex64、complex128),则表示输出 Tensor 中每个元素的正态分布的平均值。默认值为 0.0。

  • std (float|Tensor,可选) - 输出 Tensor 的正态分布的标准差。如果 std 是 float,则表示输出 Tensor 中所有元素的正态分布的标准差。如果 std 是 Tensor (支持的数据类型为 float32、float64),则表示输出 Tensor 中每个元素的正态分布的标准差。默认值为 0.0。

  • shape (list|tuple|Tensor,可选) - 生成的随机 Tensor 的形状。如果 shape 是 list、tuple,则其中的元素可以是 int,或者是形状为[]且数据类型为 int32、int64 的 0-D Tensor。如果 shape 是 Tensor,则是数据类型为 int32、int64 的 1D Tensor。如果 mean 或者 std 是 Tensor,输出 Tensor 的形状和 mean 或者 std 相同(此时 shape 无效)。默认值为 None。

  • name (str,可选) - 具体用法请参见 api_guide_Name,一般无需设置,默认值为 None。

返回

Tensor:符合正态分布(均值为 mean,标准差为 std 的正态随机分布)的随机 Tensor。

示例代码

>>> import paddle

>>> out1 = paddle.normal(shape=[2, 3])
>>> print(out1)
Tensor(shape=[2, 3], dtype=float32, place=Place(cpu), stop_gradient=True,
[[-0.85107994, -0.85490644, -1.35941815],
 [-0.55500370,  0.20964541,  2.24193954]])

>>> mean_tensor = paddle.to_tensor([1.0, 2.0, 3.0])
>>> out2 = paddle.normal(mean=mean_tensor)
>>> print(out2)
Tensor(shape=[3], dtype=float32, place=Place(cpu), stop_gradient=True,
[1.05411839, 3.71514320, 3.42665267])

>>> std_tensor = paddle.to_tensor([1.0, 2.0, 3.0])
>>> out3 = paddle.normal(mean=mean_tensor, std=std_tensor)
>>> print(out3)
Tensor(shape=[3], dtype=float32, place=Place(cpu), stop_gradient=True,
[0.48646951, 0.00815189, 3.74022293])

>>> paddle.seed(200)
>>> out4 = paddle.normal(mean=1+1j, shape=[2, 3])
>>> print(out4)
Tensor(shape=[2, 3], dtype=complex64, place=Place(cpu), stop_gradient=True,
[[(1.137553095817566+1.0932074785232544j)  ,
  (1.7955012321472168+0.5819810628890991j) ,
  (0.32699793577194214+0.9083631038665771j)],
 [(1.1745303869247437+0.09971672296524048j),
  (1.1627092361450195-0.30863022804260254j),
  (1.9428746700286865+1.0686945915222168j) ]])

>>> mean_tensor = paddle.to_tensor([1+1j, 2+2j, 3+3j])
>>> out5 = paddle.normal(mean=mean_tensor)
>>> print(out5)
Tensor(shape=[3], dtype=complex64, place=Place(cpu), stop_gradient=True,
[(1.136009693145752-0.11074113845825195j),
 (2.529331684112549+2.1968750953674316j) ,
 (2.2910101413726807+1.8114780187606812j)])

使用本API的教程文档