PyTorch正态分布随机数生成指南

torch.normal() 函数基础

torch.normal() 是 PyTorch 中用于生成服从正态分布随机张量的函数。其基本语法为:

torch.normal(mean, std, size=None)

其中 mean 是均值,std 是标准差,size 指定输出张量的形状。当 meanstd 都是张量时,它们必须具有相同的形状。

生成基础正态分布数据

生成一个形状为 (3, 2) 的随机张量,均值为 0,标准差为 1:

import torch
data = torch.normal(mean=0, std=1, size=(3,2))
print(data)

为数据添加噪声的方法

高斯噪声添加

使用 torch.normal() 直接生成噪声并叠加到原始数据上:

clean_data = torch.rand(3, 2) * 10  # 模拟原始数据
noise = torch.normal(mean=0, std=0.5, size=(3,2))  # 生成噪声
noisy_data = clean_data + noise

控制噪声强度

通过调整标准差参数控制噪声强度:

weak_noise = torch.normal(mean=0, std=0.1, size=clean_data.shape)
strong_noise = torch.normal(mean=0, std=2.0, size=clean_data.shape)

非对称噪声分布

生成非零均值的噪声模拟系统偏差:

bias_noise = torch.normal(mean=1.5, std=0.8, size=clean_data.shape)
biased_data = clean_data + bias_noise

可视化噪声效果

使用 matplotlib 可视化噪声添加前后的对比:

import matplotlib.pyplot as plt

plt.figure(figsize=(12,4))
plt.subplot(1,2,1)
plt.imshow(clean_data, cmap='viridis')
plt.title('Clean Data')

plt.subplot(1,2,2)
plt.imshow(noisy_data, cmap='viridis')
plt.title('Noisy Data')
plt.show()

应用场景示例

数据增强

在训练神经网络时为输入数据添加随机噪声:

def add_noise(batch, std=0.1):
    noise = torch.normal(mean=0, std=std, size=batch.size())
    return batch + noise

鲁棒性测试

测试模型对噪声的鲁棒性:

def test_robustness(model, test_loader, noise_std):
    correct = 0
    for data, target in test_loader:
        noisy_data = data + torch.normal(mean=0, std=noise_std, size=data.size())
        output = model(noisy_data)
        pred = output.argmax(dim=1)
        correct += pred.eq(target).sum().item()
    accuracy = 100. * correct / len(test_loader.dataset)
    return accuracy

注意事项

torch.normal() 在不同设备上的行为一致,既支持 CPU 也支持 CUDA 张量。对于可重复实验,需要设置随机种子:

torch.manual_seed(42)

当需要生成大量随机数据时,考虑使用 torch.randn() 结合缩放操作可能更高效:

# 等效于 torch.normal(mean=0, std=1)
data = torch.randn(3,2)

BbS.okapop174.sbs/PoSt/1122_605089.HtM
BbS.okapop175.sbs/PoSt/1122_364328.HtM
BbS.okapop176.sbs/PoSt/1122_192982.HtM
BbS.okapop177.sbs/PoSt/1122_753002.HtM
BbS.okapop178.sbs/PoSt/1122_142145.HtM
BbS.okapop179.sbs/PoSt/1122_219194.HtM
BbS.okapop180.sbs/PoSt/1122_809307.HtM
BbS.okapop181.sbs/PoSt/1122_231219.HtM
BbS.okapop182.sbs/PoSt/1122_249989.HtM
BbS.okapop183.sbs/PoSt/1122_575486.HtM
BbS.okapop174.sbs/PoSt/1122_486380.HtM
BbS.okapop175.sbs/PoSt/1122_333640.HtM
BbS.okapop176.sbs/PoSt/1122_783675.HtM
BbS.okapop177.sbs/PoSt/1122_266236.HtM
BbS.okapop178.sbs/PoSt/1122_047397.HtM
BbS.okapop179.sbs/PoSt/1122_642989.HtM
BbS.okapop180.sbs/PoSt/1122_036556.HtM
BbS.okapop181.sbs/PoSt/1122_235959.HtM
BbS.okapop182.sbs/PoSt/1122_798047.HtM
BbS.okapop183.sbs/PoSt/1122_998398.HtM
BbS.okapop174.sbs/PoSt/1122_673513.HtM
BbS.okapop175.sbs/PoSt/1122_577341.HtM
BbS.okapop176.sbs/PoSt/1122_219041.HtM
BbS.okapop177.sbs/PoSt/1122_362581.HtM
BbS.okapop178.sbs/PoSt/1122_485870.HtM
BbS.okapop179.sbs/PoSt/1122_323969.HtM
BbS.okapop180.sbs/PoSt/1122_800366.HtM
BbS.okapop181.sbs/PoSt/1122_897645.HtM
BbS.okapop182.sbs/PoSt/1122_794996.HtM
BbS.okapop183.sbs/PoSt/1122_232848.HtM
BbS.okapop174.sbs/PoSt/1122_243529.HtM
BbS.okapop175.sbs/PoSt/1122_406336.HtM
BbS.okapop176.sbs/PoSt/1122_909422.HtM
BbS.okapop177.sbs/PoSt/1122_808090.HtM
BbS.okapop178.sbs/PoSt/1122_430066.HtM
BbS.okapop179.sbs/PoSt/1122_374081.HtM
BbS.okapop180.sbs/PoSt/1122_585151.HtM
BbS.okapop181.sbs/PoSt/1122_832898.HtM
BbS.okapop182.sbs/PoSt/1122_915897.HtM
BbS.okapop183.sbs/PoSt/1122_943398.HtM
BbS.okapop184.sbs/PoSt/1122_249287.HtM
BbS.okapop185.sbs/PoSt/1122_974816.HtM
BbS.okapop186.sbs/PoSt/1122_532003.HtM
BbS.okapop187.sbs/PoSt/1122_649055.HtM
BbS.okapop188.sbs/PoSt/1122_970729.HtM
BbS.okapop190.sbs/PoSt/1122_241729.HtM
BbS.okapop191.sbs/PoSt/1122_948793.HtM
BbS.okapop192.sbs/PoSt/1122_510806.HtM
BbS.okapop193.sbs/PoSt/1122_973894.HtM
BbS.okapop194.sbs/PoSt/1122_496186.HtM
BbS.okapop184.sbs/PoSt/1122_823660.HtM
BbS.okapop185.sbs/PoSt/1122_850162.HtM
BbS.okapop186.sbs/PoSt/1122_884981.HtM
BbS.okapop187.sbs/PoSt/1122_514419.HtM
BbS.okapop188.sbs/PoSt/1122_748723.HtM
BbS.okapop190.sbs/PoSt/1122_829898.HtM
BbS.okapop191.sbs/PoSt/1122_024652.HtM
BbS.okapop192.sbs/PoSt/1122_897600.HtM
BbS.okapop193.sbs/PoSt/1122_718531.HtM
BbS.okapop194.sbs/PoSt/1122_511303.HtM
BbS.okapop184.sbs/PoSt/1122_009512.HtM
BbS.okapop185.sbs/PoSt/1122_981499.HtM
BbS.okapop186.sbs/PoSt/1122_606023.HtM
BbS.okapop187.sbs/PoSt/1122_623190.HtM
BbS.okapop188.sbs/PoSt/1122_885112.HtM
BbS.okapop190.sbs/PoSt/1122_353139.HtM
BbS.okapop191.sbs/PoSt/1122_999087.HtM
BbS.okapop192.sbs/PoSt/1122_289777.HtM
BbS.okapop193.sbs/PoSt/1122_995708.HtM
BbS.okapop194.sbs/PoSt/1122_442097.HtM
BbS.okapop184.sbs/PoSt/1122_543973.HtM
BbS.okapop185.sbs/PoSt/1122_744422.HtM
BbS.okapop186.sbs/PoSt/1122_903270.HtM
BbS.okapop187.sbs/PoSt/1122_077775.HtM
BbS.okapop188.sbs/PoSt/1122_628997.HtM
BbS.okapop190.sbs/PoSt/1122_522468.HtM
BbS.okapop191.sbs/PoSt/1122_872068.HtM
BbS.okapop192.sbs/PoSt/1122_786185.HtM
BbS.okapop193.sbs/PoSt/1122_309317.HtM
BbS.okapop194.sbs/PoSt/1122_339866.HtM

#牛客AI配图神器#

全部评论

相关推荐

09-29 16:59
已编辑
门头沟学院 Java
牛客96609213...:疯狂背刺,之前还明确设置截止日期,还有笔试,现在一帮人卡在复筛,他反而一边开启扩招,还给扩招的免笔试,真服了,你好歹先把复筛中的给处理了再说
投递大疆等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务