torch.normal() 函数基础
torch.normal() 是 PyTorch 中用于生成服从正态分布随机数的函数。该函数接受均值(mean)和标准差(std)作为参数,返回一个与输入张量形状相同的张量,其中每个元素都是从对应的正态分布中随机采样得到的。语法如下:
torch.normal(mean, std, size=None, *, generator=None, out=None)
mean 和 std 可以是标量或张量。如果两者都是标量,则生成的所有随机数都来自同一个正态分布。如果其中一个是张量,则每个元素将从对应的正态分布中采样。
生成随机数据并添加噪声
在实际应用中,生成的数据往往需要添加噪声以模拟真实场景。噪声可以来自多种分布,常见的有高斯噪声、均匀噪声等。以下是一个生成随机数据并添加高斯噪声的示例:
import torch
# 生成服从正态分布的随机数据
mean = 0.0
std = 1.0
data = torch.normal(mean, std, size=(1000,))
# 添加高斯噪声
noise_std = 0.1
noise = torch.normal(0, noise_std, size=data.size())
noisy_data = data + noise
不同噪声类型的添加方法
除了高斯噪声,还可以添加其他类型的噪声。以下是几种常见的噪声添加方法:
均匀噪声
noise = torch.rand_like(data) * 2 - 1 # 均匀分布在[-1, 1]的噪声
noisy_data = data + noise
椒盐噪声
def add_salt_pepper_noise(data, salt_prob, pepper_prob):
noisy_data = data.clone()
salt_mask = torch.rand_like(data) < salt_prob
pepper_mask = torch.rand_like(data) < pepper_prob
noisy_data[salt_mask] = 1.0
noisy_data[pepper_mask] = 0.0
return noisy_data
noisy_data = add_salt_pepper_noise(data

被折叠的 条评论
为什么被折叠?



