InversionNet

网络结构

InversionNet构建了一个具有编码器与解码器的端到端卷积神经网络结构,以模拟地震数据与速度模型之间的关系。
输入地震数据的通道数为6,时间维度为1000,表示为 ( 6 , 1000 , 32 ) (6, 1000, 32) (6,1000,32),编码器将特征调整为 ( 512 , 1 , 1 ) (512, 1, 1) (512,1,1)的形式,最后解码器将其拟合为 ( 1 , 75 , 75 ) (1, 75, 75) (1,75,75)的速度模型。
在这里插入图片描述

编码器

输入数据为 ( 6 , 1000 , 32 ) (6, 1000, 32) (6,1000,32),应先将时间域降维至32,之后两个维度一起降维。

        self.convblock1 = ConvBlock(5, dim1, kernel_size=(7, 1), stride=(2, 1), padding=(3, 0))
        self.convblock2_1 = ConvBlock(dim1, dim2, kernel_size=(3, 1), stride=(2, 1), padding=(1, 0))
        self.convblock2_2 = ConvBlock(dim2, dim2, kernel_size=(3, 1), padding=(1, 0))
        self.convblock3_1 = ConvBlock(dim2, dim2, kernel_size=(3, 1), stride=(2, 1), padding=(1, 0))
        self.convblock3_2 = ConvBlock(dim2, dim2, kernel_size=(3, 1), padding=(1, 0))
        self.convblock4_1 = ConvBlock(dim2, dim3, kernel_size=(3, 1), stride=(2, 1), padding=(1, 0))
        self.convblock4_2 = ConvBlock(dim3, dim3, kernel_size=(3, 1), padding=(1, 0))
        x = self.convblock1(x)      # (None, 32, 500, 32)
        x = self.convblock2_1(x)    # (None, 64, 250, 32)
        x = self.convblock2_2(x)    # (None, 64, 250, 32)
        x = self.convblock3_1(x)    # (None, 64, 125, 32)
        x = self.convblock3_2(x)    # (None, 64, 125, 32)
        x = self.convblock4_1(x)    # (None, 128, 63, 32)
        x = self.convblock4_2(x)    # (None, 128, 63, 32)

单方向降维后进行两个维度同时降维,由 ( 128 , 32 , 32 ) (128, 32, 32) (128,32,32)降至 ( 512 , 1 , 1 ) (512, 1, 1) (512,1,1),代码同理。

解码器

解码部分则是将 ( 512 , 1 , 1 ) (512, 1, 1) (512,1,1)升维至 ( 1 , 80 , 80 ) (1, 80, 80) (1,80,80),后通过裁剪拟合为 ( 1 , 75 , 75 ) (1, 75, 75) (1,75,75)的速度模型。

        self.deconv1_1 = DeconvBlock(dim5, dim5, kernel_size=5)
        self.deconv1_2 = ConvBlock(dim5, dim5)
        self.deconv2_1 = DeconvBlock(dim5, dim4, kernel_size=4, stride=2, padding=1)
        self.deconv2_2 = ConvBlock(dim4, dim4)
        self.deconv3_1 = DeconvBlock(dim4, dim3, kernel_size=4, stride=2, padding=1)
        self.deconv3_2 = ConvBlock(dim3, dim3)
        self.deconv4_1 = DeconvBlock(dim3, dim2, kernel_size=4, stride=2, padding=1)
        self.deconv4_2 = ConvBlock(dim2, dim2)
        self.deconv5_1 = DeconvBlock(dim2, dim1, kernel_size=4, stride=2, padding=1)
        self.deconv5_2 = ConvBlock(dim1, dim1)
        self.deconv6 = ConvBlock_Tanh(dim1, 1)
        x = self.deconv1_1(x)       # (None, 512, 5, 5)
        x = self.deconv1_2(x)       # (None, 512, 5, 5)
        x = self.deconv2_1(x)       # (None, 256, 10, 10)
        x = self.deconv2_2(x)       # (None, 256, 10, 10)
        x = self.deconv3_1(x)       # (None, 128, 20, 20)
        x = self.deconv3_2(x)       # (None, 128, 20, 20)
        x = self.deconv4_1(x)       # (None, 64, 40, 40)
        x = self.deconv4_2(x)       # (None, 64, 40, 40)
        x = self.deconv5_1(x)       # (None, 32, 80, 80)
        x = self.deconv5_2(x)       # (None, 32, 80, 80)
        x = F.pad(x, [-5, 0, -5, 0], mode="constant", value=0)
                                    # (None, 32, 75, 75) 125, 100
        x = self.deconv6(x)         # (None, 1, 75, 75)

拟合结果:
在这里插入图片描述

评价指标

InversionNet的末端采用的标准损失函数是ℒ_1规范的损失函数
在这里插入图片描述
𝑦_𝑖 是真实速度模型, 𝑧_𝑖 预测速度模型 𝑛是速度模型中空间像素的数量. 输出的最后, 我们会裁剪输出层以符合目标速度模型的大小。
但是使用 ℒ_1损失训练的 CNN 无法完全捕捉速度模型的结构特征, 因为它没有对每个位置之间的相互作用进行建模. 为了更好地反映地质特征, 即速度在每个地下层内保持一致, 我们构建了一个局部连接的 CRF (Conditional Random Fields) 来改进 CNN 预测的速度模型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值