一、需求
对于张量,我们希望能够对其进行随机初始化,且。
二、实现
import torch
# 1. 张量根据标准正态分布(mean=0, std=1)进行随机初始化
a = torch.randn(size=(3, 5))
b = torch.randn(size=(2, 4, 4))
# 随机初始化的张量的mean接近于0且std接近于1(由于数据量太少,所以误差会比较大)
print(a, a.mean().item(), a.std().item())
print(b, b.mean().item(), b.std().item())
# 2. 张量根据一般正态分布(mean=mu, std=sigma)进行随机初始化
mu = 2
sigma = 6
c = mu + sigma * torch.randn(size=(3, 5))
d = mu + sigma * torch.randn(size=(2, 4, 4))
# 随机初始化的张量的mean接近于2且std接近于6(由于数据量太少,所以误差会比较大)
print(c, c.mean().item(), c.std().item())
print(d, d.mean().item(), d.std().item())
三、效果(程序执行一次输出结果)
tensor([[-0.1577, -1.1384, 0.3573, -0.3869, 2.2071],
[-0.2356, 1.7997, 1.6409, -1.3254, -0.7604],
[ 1.6190, -0.5193, 0.1736, -0.2998, -0.5120]]) 0.1641494482755661 1.1231410503387451
tensor([[[ 0.0238, 0.0624, 1.2002, -0.0963],
[-0.4617, -0.4194, 0.1404, -0.0497],
[-0.8695, -1.7731, 1.2776, 1.2151],
[ 0.6929, -0.7230, -2.0728, -0.6245]],
[[-0.6560, -0.0338, 1.0010, 0.7865],
[ 0.2711, 0.9265, 0.3155, -1.9558],
[-1.9122, 0.6705, -0.7552, 1.1139],
[-0.2056, -0.8133, 1.4233, 1.5125]]]) -0.024651043117046356 1.0221213102340698
tensor([[ 0.4474, 2.9793, 7.1230, -11.5415, -0.0688],
[ 13.4291, 4.3203, -4.9895, 9.2665, 1.7634],
[ 8.6169, 5.1654, -5.6114, 1.5580, -2.8541]]) 1.9735734462738037 6.494339942932129
tensor([[[ 6.1913, 12.8018, 7.7551, -0.4036],
[-9.9380, 1.2322, 7.5808, 4.9575],
[-3.1395, -8.1253, 5.8119, 14.8277],
[ 2.8647, 7.0317, 0.9330, 0.8613]],
[[ 1.7921, -4.0716, -7.3107, -6.9644],
[ 7.0471, 20.2164, 0.4942, 6.4316],
[ 2.8614, 5.3229, 6.7565, 10.2164],
[ 3.1384, 5.6582, 1.5364, 1.6309]]]) 3.312441110610962 6.568889617919922