地震波阻抗反演实验
地震波阻抗反演实验
准备工作
数据集
我选用Convolutional neural network for seismic impedance inversion中的数据,其中包含2020道一维地震波以及波阻抗数据。
正演参数为频率为30Hz的雷克子波,。图1中为数据集中的4道数据展示,其中波阻抗数据已进行缩放。
随后将这些数据集划分为500个验证集、500个测试集和1020个训练集。
其他参数
- 损失函数使用MSE。优化算法使用Adam。训练迭代次数为400,批次大小为1,学习率为0.001。
基础CNN
先试了试Convolutional neural network for seismic impedance inversion中的网络模型。
图2为上述网络模型结构,包含两个卷积层和两个ReLU激活函数,卷积核大小为300。
训练中loss变化如图3所示。在这个模型中我们训练了400次,后续将用这个模型作为基准对比其他实验。
图4为测试集中随机选取的4组预测和真实波阻抗对比结果。图5为在每一组测试集上的Loss变化,该网络在整个测试集上的平均损失值为
0.19052282
。
CNN+MLP
这里给上述CNN网络最后加了一个331x331的全连接层进行训练看一下效果。
该网络在整个测试集上的平均损失值为
0.38929242
。
CNN+KAN
这里用同样大小(331x331)的KAN层替换上述MLP层,看看效果
该网络在整个测试集上的平均损失值为
0.8988899
。效果很差,几乎没有训练。于是我换了一下网络模型,卷积层输出换成了输出16维通道,将KAN大小改为16x1,即增加通道数进行训练。
该网络在整个测试集上的平均损失值为
0.15648946
。于是这里我又重新将前面CNN+MLP网络也改成了同样的多通道输出,MLP层改为16x1。得到的结果为
平均损失值为
0.18656108
。
CNN+GRU+MLP
后续又看了“基于闭环CNN-GRU和主动学习的地震波阻抗反演”中的方法,该论文中的方法有点类似对抗网络,反演得到的结果提供给正演,正演得到的结果提供给反演进行半监督学习。网络架构如图17所示。
这里我只用其中的反演网络在这个数据集上跑了下效果
可以看到网络训练效率还是很高的,并且该网络的输出非常平滑,感觉不太适合这个数据集。该网络在整个测试集上的平均损失值为
0.27449203
。
CNN+GRU+KAN
同样的这里将MLP改为了KAN进行实验。
该网络在整个测试集上的平均损失值为
0.26823914
。
结果
收敛速度的话没看出明显对比,可能是因为这里的全连接层只占到很小一部分,主要还是卷积层的工作。
从结果来看确实KAN要好一点。