pytorch加入不同db噪声

pytorch加入不同db噪声,第1张

原始干净信号(x)和噪音信号(d)的情况下,任务是向信号中添加合适强度(SNR)的噪音信号。

原始噪音(d)的信号强度:P_d所需要的噪音强度:P_noise=P_signal/10**(SNR/10)所需要产生的噪音:noise=np.sqrt(P_noise/P_d)*d产生的噪音强度为(SNR)的含噪信号:NoiseSignal=x+noise。

1.产生噪音那使用开根号是因为开根号后的数乘上所有的噪音信号,这样在计算噪音强度的时候可以直接提出来。2.因为原本的噪音本身是有强度的所以需要除一下,而添加高斯白噪音的时候就不需要添加,是因为高斯白噪声本身的强度和其方差是一样的1。

GAN本身是一种生成式模型,所以在数据生成上用的是最普遍的,最常见的是图片生成,常用的有DCGAN WGAN,BEGAN。目前比较有意思的应用就是GAN用在图像风格迁移,图像降噪修复,图像超分辨率了,都有比较好的结果。目前也有研究者将GAN用在对抗性攻击上,具体就是训练GAN生成对抗文本,有针对或者无针对的欺骗分类器或者检测系统等等,但是目前没有见到很典范的文章。好吧,笔者有一个项目和对抗性攻击有关,所以要学习一下GAN。

GANs组成:生成器判别器。结构如图1所示

针对问题: 给定一批样本,训练一个系统能够生成类似的新样本

核心思想:博弈论中的纳什均衡,

判别器D 的目的是判断数据来自生成器还是训练集,

生成器G 的目的是学习真实数据的分布,使得生成的数据更接近真实数据,

两者不断学习优化最后得到纳什平衡点。

D( x) 表示真实数据的概率分布,

G( z) 表示输入噪声z 产生的生成数据的概率分布

训练目标:G( Z)在判别器上的分布D( G( Z) ) 更接近真实数据在判别器上的分布D( X)

接下来就来实现我们的例子把,目标是把标准正态分布的数据,通过训练的GAN网络之后,得到的数据x_fake能尽量拟合均值为3方差为1的高斯分布N(3,1)的数据。

可以看出生成器其实就是简单的全连接网络,当然CNN,RNN等网络都是适合GAN的,根据需要选择。

可以看出判别器其实也是简单的全连接网络,当然CNN,RNN等网络都是适合GAN的,根据需要选择。

在这里想说的是对于判别器和生成器的训练是分开的,训练判别器的时候固定生成器,训练生成器的时候固定判别器,如此循环。本例子中先训练三次判别器,接着训练一次生成器。

为了便于理解具体训练过程,图2 、图3展示了判别器和生成器训练时的数据流向,具体就不展开了,参考注释。

画图函数敬上

然后调用main()函数就好了

红色是目标分布,蓝色是生成分布,还是有一定效果的额。

感受到是在调参了,请教我如何学习生成(xie)对抗(lun)网络(wen)。

  调参是深度学习过程中无法避免的一部分。不管是重现别人的论文还是对新的算法进行实现都要经历这一过程。为什么相似的网络结构下效果会差那么多呢?这就是调参的魅力了。对于简单一些的数据集,调参甚至能让测试集准确率提高百分之二十以上。根据我自己的调参经验,总结出以下技巧, 不定期更新

注:只是自己的经验记录,不一定全面也不一定准确。

@[toc]

  从数据处理到模型建立再到模型训练,都有一系列的参数可以调整,这些都可能是影响最终结果的因素。

  数据增强虽然实际上是在数据预处理过程中实现的,但是作为提高准确率的重要方法,还是把它单独列了出来。

  常见的数据增强方法有很多,网上资料也不少,我就不多赘述了。我主要用的数据增强方法是随机裁剪和随机旋转,需要强调的也只有一点。

  当然不同的问题需要不同的损失函数,一般在分类问题上我用的都是交叉熵损失函数 CrossEntropyLoss() 。有大神告诉我添加 ContrastiveLoss() 也可以对结果有帮助,我还没有试过。

   SGD 优化器似乎通常是提高效果的最佳选择,虽然有时收敛较慢。但是我在实验过程中发现 Adam 对效果的提高会更好,有时候甚至比 SGD 的准确率要高10%。应该也是需要具体问题具体分析,看哪个优化器适合了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11720976.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存