去噪自编码深度卷积网络实战_第1页
去噪自编码深度卷积网络实战_第2页
去噪自编码深度卷积网络实战_第3页
去噪自编码深度卷积网络实战_第4页
去噪自编码深度卷积网络实战_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、去噪自编码深度卷积网络实战地震去噪实战案例讲解很多同学都有个疑问:前面一直都是对理想数据进行处理,这样有多大用处呢?那用在实 际中是怎样应用的呢?第一节课我们讲过,自编码可以用在预训练、自动创作、自动填 充、去除噪声、数据降维等等方向。今天我们就从最常见的降噪这项应用开始讲解。一、降噪自动编码的由来降噪自动编码器(Denoising AutoEncoder)最初的应用是为了让自动编码网络有更强的鲁 棒性(Robust)。这是什么原理呢?就是将原始的完整数据以一定概率分布(通常使用二项分布)去擦除,然后将处理后的结果 作为输入的训练数据。这样训练出来的网络抗干扰能力更强,预测的结果往往更好。就比

2、如下图:/o区。o o o o 3oooo原始的数据是X,首先我们随机的去掉了乂中的两个数据形成了乂,然后我们用这个有破损 (术语叫Corruputed)的数据x作为训练数据来训练自编码网络y,训练过程中计算出的结 果是z,然后将z与原始x做误差迭代不断优化网络y。最后训练出来的y就有了更好的性 能。为什么训练破损的数据更能激发网络的鲁棒性呢?有论文解释说神经网络通过从破损数据中学习到有效特征数据,从而恢复完整的数据。这个训练过程是增强了神经网络特征提取的 能力。就是说学习破损数据的过程相当于一个简化的PCA,本质是进行降维提取。而降维 就是神经网络最擅长的工作之一。二、降噪自动编码在地震去噪

3、领域的应用那含有噪声的数据,也是前面提到了通过训练破损的数据,可以提高自编码网络学习能力。 一种破损的数据,同样可以使用自编码网络进行降噪处理。在地震勘探领域,伴随地震数据采集过程中,由于人为或环境因素的影响,不可避免地会引 入随机噪声。受污染的地震资料严重影响了后续的地震资料处理和成像。因此,抑制随机噪 声可以有效地提高地震资料的信噪比,有利于提高成像质量。比如我们常常会将左图的含噪数据进行降噪处理,变成右图的样子。自编码网络天生就有很强的特征信息提取能力,因此特别适合降噪的处理这一类的应用。那 到底效果如何呢?我们通过案例来告诉你。三、降噪自动编码实战案例这个部分,我们带领大家来实战操作地

4、震去噪的整个处理过程。1.网络结构Conv4输入 层Coru7Ctnv6CcnvSMaaP CorviConv2MaxF出 层 2B*2SUpSa m p nMaxF colinsConvSS个 3*3网络结构这部分和前面课程是一样的。实现了一个卷积自动编码网络。主要使用了卷积 层、最大池化层、上采样层等结构,形成镜像的关系。其中卷积和池化成对,通过层层堆 叠形成了深度学习关系。2.数据准备 我们的目标是这个工区的数据进行去噪处理。Noise0204060我们首先要准备训练数据集。我们准备了多个无噪声的训练数据,加上了噪声对神经网络 模型进行训练。3.网络训练(1)训练数据和标签数据准备自己写

5、了 getPathAddNoise的程序,将多个地震训练数据合成了一个含噪声的训练集。这 个程序比较复杂就不细讲了,最后结果就是生成了 3400个64x64的地震训练数据。X_testfloatS4 (34W, 64, 64, 1) f 言驾摆蚩斜L - W. zbobji iyi j干净的地震数据是怎样加上噪声的呢?我们对干净的地震仿真数据加上随机噪声,程序是 这样写的。注增规随机噪声noi5e_factor=.15data = data/abs(data)data = data 4- naise_f actor * np . random. randn(*dai:a .shape)这里的主

6、要步骤:首先是要将地震信号归一化到-1至1的取值空间。然后加上了 15%的随机噪声。(2)神经网络结构input_iing = kerasInpu (shape=(64j 64j 1)持磷k = Layers.Co-nvSDtlLS (33)j activatiQn= relu , p目dding= same ) (input_imgk = layers . MaKPooling2D( (2 2) f paddlng= sarre ) (x)k = layers . Conv2DBj (3_) 3 J , actlva_tlcn= relu 1 j paddlrig= same 1 ) ( k

7、Jk = layers . MaKPooling:2D 2 2) t padding= same ) (x)x = layers.Co-nv2D(8j (33J), activ3tion= 1 reLu j padding= 53me)(,) encoded = Layers ,MBKPKling2J( (2_ 2) j padding= same)(k)x = layers.CGnv2D(8j (33). activstion=reLuj padding=same)(encoded)茸中间房k = layers . Llp-SamplinDjJ (2j 2) (x)k = layers. C

8、o-nv2D(Sj (3 BJ, actiwation= reLu j padding= same ) (kJk = layers . LlpSanpling:2D( (2j 2) (x)k = layers. ConvSDflS (3_, 3), 3ctivatron= reLu j padding= same )k = layers . LlpSanpling2D( (2j 2) (x)decoded = Layers .ConvSDflj (3j 3), activation= tanh j. padding=1 same)fx)autoencflder = keras.Model(in

9、put_imgj. decided) crwtffejicoder.匚omp tL或叩timizer= 1 adarn, t?55= mean_absQlute_曰rro-r1) autoencoder . compllef o-pimlzer= 1 adadelta 1 j loss = inean_squarecl_error ) autoencoder.s ummarY()这里的神经网络结构与上节课非常类似。但有两点不同,一是优化器从adam改为了 adadelta,这个优化器有个特点就是速度较快。二是loss函数改为mean_squared_error, 这个损失函数在处理无异常值的情

10、况下,效果更好。接下来我们通过30个周期迭代,让模型进行了深度的学习。邮溯墟模壑Epochs=B0H=autoencoder.fit(K_teetX_teet epoch s=Epoclis,b3tch_size=LZ8j shuffle=True喜 construct a plot that pLntsN = nparange(lj Epochs-H)pitstyle. jss( ggplot)pitfigure)pit.plot(Nj H.historyloss j label=train_Loss)plt.title( Training Loss Jpit.xlabel(Epoch )p

11、it .yl3bel( Lo5S,r)pit. legend(Loc=rbest1)这里有个很有意思的地方是,我们的训练数据和标签数据都用的是一个,就是含噪声的训 练数据。这个训练方式和有监督学习不太一样。这种训练方式称为自监督学习。即我们不 需要标签数据,直接从唯一的训练集中学习数据特征。为了体现自编码网络强大的学习能 力,我们直接用含噪声的数据集来训练,看看它能不能从中学习到有效的信号。在整个网络的调优过程中,有以下几个经验分享给大家:一是训练数据的尺寸尽量小一些,从28至64的范围比较合适,再大的话数据量就会较 大,造成训练速度较慢。二是训练数据的数量尽量多一些,训练周期长一些,这样学习

12、质量比较高。一般来说数量 在1万以上比较好,比如Mnist的训练数据是6万,训练周期在50次以上。本次教程限于 原理呈现,只用了 3000多个训练数据,训练了 30个周期,还未体现自编码更好的效果。 三是最后一层的激活函数为tanh,而不是前面的sigmoid。因为地震数据远比Mnist图片数 据复杂,使用逻辑激活函数不能满足要求。4.结果检验从训练过程来看,loss值持续下降并逐步收敛,证明构建的网络结构比较有效,参数设置 正确。Training LassEpoch现在我们来构造测试的数据。我们制作了和训练数据不同的一个测试仿真数据,然后加上了 15%的随机噪声。左图是清晰 数据,右图是噪声

13、数据。ClearNoise程序是这样写的:import segyiolist=data/test/testl.sgyrf = s e gyio. ope n (list j ignore_geMiiet ry=True) f.ranap()切data = np.asarrayfnp.copyfx) for k in f.trace:) data = data0s64j0:64|noise_factor=6.15data = data/abs(data) .maxOf -1 j -) data_test = data + noise_factor * nprandom. randn(*data

14、. shape左归一建箭基础上云噪声明虑 data test = np,reshape(data test(lj 64丁 641)首先,加载测试仿真数据。然后把数据进行归一化,加上15%的随机噪声。最后构造为1x64x64x1 的结构。data_cons= autoencoder.predict(data_test) clip =况g屋示苞囹,宓禽摆才磨.殍虚 vmirij wnax = -clip clip# Figurreolor=rkr jf姑10):没贸图形的X小figj axs = pit subplots (nrow5=l ncols=3j f i.gsize=figsizej f

15、acecolor= w , edgec squeeze=zalsejShareK=Truejdpi=l)axs = axs.ravel()data_cons = np.reshape(data_consj (64j 64)data_teet = np.rehape(data_tetj (64, 64)axs0.imshowfdataj cmap=plt.cmJ seismicj vmin=vminj vmaK=vmaK)aws0.set_title(Clear)axs0.grid(False)clip = le-0显示应鼠堑值越太越明显axsl . imshow(data_tetj cmap=

16、plt. cm. seismiCj vmin=wiinj vmaK=wiaK)1,set_title(Noise) axsl.grid(False)clip = le-0建示盘岛堑憧越*越明显wninj vnax = -clip clipaxs2 . imshow(data_consj cmap=plt. cm. seismiCj vmin=vininj vmaK=vmaK)axs2.set_title(denoise )axs2.grid(False)我们把测试数据放入到训练好的模型进行预测处理。最后我们使用matplotlib来画出地震 数据处理的效果图。现在我们来看看最后的处理效果。左边是干净的原始测试信号,中间是加上了随机噪声的信号,右边是去掉噪声的信号。从上 面的结果来看,这次的实验加的噪声比较大,噪声对原始信号造成了较大的干扰。神经网络 模型对信号噪声去除效果比较明显。不过处理

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论