神经网络样本增加噪声的原因:
数据集只能代表真实数据分布的局部情况,除非数据集无限大(连续分布)或者包含所有可能的数据(离散分布),否则网络不能完全学习到数据的真实分布,所以不能完全覆盖到真实的所有数据分布,即过拟合到局部优化点。此时,数据扩增成为增加数据集的多样性的一个方法,也就能扩大网络拟合数据真实分布的能力,尽可能减小经验风险,增加泛化性能,从而在未见过的测试集上表现更好。而数据扩增的一个简单方式就是对已有的数据进行扰动加噪。
添加高斯噪声:
主要利用了numpy库
np.random.normal()
“”“
normal(loc=0.0, scale=1.0, size=None)
Draw random samples from a normal (Gaussian) distribution.
loc:float 此概率分布的均值(对应着整个分布的中心centre)
scale:float 此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)
size:int or tuple of ints 输出的shape,默认为None,只输出一个值
”“”
完整代码
import numpy as np
def noise_Gaussian(points, mean):
noise = np.random.normal(0, mean, points.shape)
out = points + noise
return out
def main():
# 加载点云
points = np.loadtxt('./cloud_1.txt')[:, 0:3]
# 获取添加噪声的点云
out = noise_Gaussian(points, 0.05)
# 保存点云
np.savetxt("out.txt", out, fmt='%.6f', delimiter=' ')
if __name__ == '__main__':
main()
结果展示:
觉得能用的话,那就点个赞吧,亲!