论文笔记: 深度学习速度模型构建的层次迁移学习方法 (未完)

摘要: 分享对论文的理解, 原文见 Jérome Simon, Gabriel Fabien-Ouellet, Erwan Gloaguen, and Ishan Khurjekar, Hierarchical transfer learning for deep learning velocity model building, Geophysics, 2003, R79–R93. 这次的层次迁移应该指从 1D 到 2D 再到 3D.

摘要

深度学习具有使用最少的资源 (这里应该是计算资源, 特别是预测时的计算资源) 处理大量地震资料的潜力.
神经网络直接将数据 (即地震记录) 映射到模型 (如速度模型).
由于数据量太大, 直接做 2D 或 3D 不可行, 因此在一个子问题 (1D) 上训练神经网络.
通过迁移学习, 减少了 2D 训练数据的使用量. 注: 如何从 1D 迁移到 2D 是一个核心问题.
root-mean-square 误差为 ( 198 ± 91 198 \pm 91 198±91) m/s.
再次用到了 RMS 速度模型 (参见 论文笔记: 循环神经网络进行速度模型反演).

引言

DL 不仅用于 FWI, 也用于常规处理的各个步骤.
DL-FWI 暂时还不能成为工业标准, 但它有可能在缩短训练时间后超越物理规律驱动的 FWI (即数值模拟 FWI).
当前的 DL-FWI 只处理尺寸小的速度模型 (如 301*301), 可能有些薄层和盐丘, 但总体不具有实际数据的代表性.
Fabien-Ouellet and Sarkar (2020) 的方法可以处理较大规模数据, 但获得的速度模型横向连续性不好 (不符合物理规律, 这个用我们的边界提取辅助任务可能会缓解).
共中心点 CMP 道集看来用得比较多, 我们用的是共炮点 CSP 道集.
图像处理任务使用几万至几百万带标签实际数据进行训练, 地震数据可能有这么多, 但标签非常少 (如果不是没有的话). 这确实是大家面临的难题.

方法

问题: 从叠前数据直接估计 (反演) 倾斜分层声波速度模型. 注: 声波太简单了吧.
输入: n t × n h × n x n_t \times n_h \times n_x nt×nh×nx 的张量, 其中 t t t 是双向 (下去再上来) 走时, h h h 是从炮点到检波点的 (水平) 偏移量, x x x 是 CMP 中心点的位置.

v i n t ( t i , x ) = v i n t ( z ( t i ) , x ) , z ( t i ) = ∑ j = 1 i − 1 v i n t ( t j , x ) ⋅ 2 Δ t (1) v_{\mathrm{int}}(t_i, x) = v_{\mathrm{int}}(z(t_i), x), z(t_i) = \sum_{j=1}^{i-1}v_{\mathrm{int}}(t_j, x) \cdot 2\Delta t \tag{1} vint(ti,x)=vint(z(ti),x),z(ti)=j=1i1vint(tj,x)t(1)
其中时间域被离散化为网格, 长度为 Δ t \Delta t Δt.
右式中 $z(t_i) $ 表示深度, 它是每个时刻的速度乘以时间片长度之和. 如 Δ t \Delta t Δt 1 m s 1 \rm{ms} 1ms, 则 t 0 = 0 m s t_0 = 0 \rm{ms} t0=0ms, t 1 = 1 m s t_1 = 1 \rm{ms} t1=1ms, t 2 = 2 m s t_2 = 2 \rm{ms} t2=2ms, … \dots . 相当于速度对于时间的积分, 即为路程. 在连续的情况下, 相当于把连加换成积分符号即可.
左式表示 t i t_i ti 时刻的速度, 就相当于深度为 z ( t i ) z(t_i) z(ti) 时的速度. 但从数学上来看是错的. 如: t i = 1 m s t_i = 1 \rm{ms} ti=1ms z ( t i ) = 150 m z(t_i) = 150\rm{m} z(ti)=150m, 由于没有办法在式子中间带单位, 所以也无法区分. 可以考虑写为 v i n t t ( t i , x ) = v i n t z ( z ( t i ) , x ) , z ( t i ) = ∑ j = 1 i − 1 v i n t t ( t j , x ) ⋅ 2 Δ t (1’) v^t_{\mathrm{int}}(t_i, x) = v^z_{\mathrm{int}}(z(t_i), x), z(t_i) = \sum_{j=1}^{i-1}v^t_{\mathrm{int}}(t_j, x) \cdot 2\Delta t \tag{1'} vintt(ti,x)=vintz(z(ti),x),z(ti)=j=1i1vintt(tj,x)t(1’)
反过来, 时间至深度区间速度转换可写为
v i n t ( z i , x ) = v i n t ( t ( z i ) , x ) , t ( z i ) = ∑ j = 1 i − 1 2 Δ z v i n t ( z j , x ) (2) v_{\mathrm{int}}(z_i, x) = v_{\mathrm{int}}(t(z_i), x), t(z_i) = \sum_{j=1}^{i-1} \frac{2\Delta z}{v_{\mathrm{int}}(z_j, x)} \tag{2} vint(zi,x)=vint(t(zi),x),t(zi)=j=1i1vint(zj,x)z(2)
其中深度域 (空间域) 被离散化为 Δ z \Delta z Δz 的网格, t ( z i ) t(z_i) t(zi) 就是达到深度 z i z_i zi 所花的时间. 按照我们的写法可以换为
v i n t z ( z i , x ) = v i n t t ( t ( z i ) , x ) , t ( z i ) = ∑ j = 1 i − 1 2 Δ z v i n t z ( z j , x ) (2’) v^z_{\mathrm{int}}(z_i, x) = v^t_{\mathrm{int}}(t(z_i), x), t(z_i) = \sum_{j=1}^{i-1} \frac{2\Delta z}{v^z_{\mathrm{int}}(z_j, x)} \tag{2'} vintz(zi,x)=vintt(t(zi),x),t(zi)=j=1i1vintz(zj,x)z(2’)
(1) 式和 (2) 式的 2 倍带来一些理解上的问题. 如果时间是往返的, 那么 (2) 式的 2 倍可以理解, 但 (1) 式的 2 倍反而应该是 1/2 倍.
另外, 定义
v r m s ( t i , x ) = ∑ j = 1 i v i n t 2 ( t j , x ) Δ t ∑ j = 1 i Δ t (3) v_{\mathrm{rms}}(t_i, x) = \sqrt{\frac{\sum_{j=1}^i v^2_{\mathrm{int}}(t_j, x) \Delta t}{\sum_{j=1}^i \Delta t}} \tag{3} vrms(ti,x)=j=1iΔtj=1ivint2(tj,x)Δt (3)
这个式子的问题在于, 如果 Δ t \Delta t Δt 是一个常数的话, 则 v r m s ( t i , x ) = v i n t ( t i , x ) v_{\mathrm{rms}}(t_i, x) = v_{\mathrm{int}}(t_i, x) vrms(ti,x)=vint(ti,x), 但实际上它应该是可变的, 应写为
v r m s ( t i , x ) = ∑ j = 1 i v i n t 2 ( t j , x ) Δ t j ∑ j = 1 i Δ t j (3’) v_{\mathrm{rms}}(t_i, x) = \sqrt{\frac{\sum_{j=1}^i v^2_{\mathrm{int}}(t_j, x) \Delta t_j}{\sum_{j=1}^i \Delta t_j}} \tag{3'} vrms(ti,x)=j=1iΔtjj=1ivint2(tj,x)Δtj (3’)
对于复杂的地形, 基于时间的模型 v i n t ( t , x ) v_{\mathrm{int}}(t, x) vint(t,x) 不可靠, 只能使用基于深度的模型 v i n t ( z , x ) v_{\mathrm{int}}(z, x) vint(z,x).

(5) 式是利用 1D 对 2D 进行初始化的操作.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/69533.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序产生自我意识,创造人工生命

偶然发现一个大佬研究了一个很有意思的项目,研究了好几年,让程序产生自我意识诞生人工生命,感觉10年后肯定是继Chart GPT之后的又一个风口,在这里记录一下分享给大家,这个项目在git上有开源,开源地址&#…

@Controller和@RestController注解区别

😜作 者:是江迪呀✒️本文关键词:SpringBoot、Spring、注解、Controller、RestController☀️每日 一言:弗雷尔卓德是个好地方,可以造东西、打架、大吃一顿,啊~~ 甜蜜的家园呐 ——《英雄联盟》…

Linux 权限

什么是权限 在Linux下有两种用户,分别是超级用户(root)和普通用户。超级用户可以在Linux下做任何事情,几乎不受限制,而普通用户一般只能在自己的工作目录下(/home/xxx)工作,以及在系…

HTML5-3-表格

文章目录 属性边框属性标题跨行和跨列单元格边距 HTML 表格由 <table> 标签来定义。 tr&#xff1a;tr 是 table row 的缩写&#xff0c;表示表格的一行。td&#xff1a;td 是 table data 的缩写&#xff0c;表示表格的数据单元格。th&#xff1a;th 是 table header的缩…

flask使用Flask-Mail实现邮件发送

Flask-Mail可以实现邮件的发送&#xff0c;并且可以和 Flask 集成&#xff0c;让我们更方便地实现此功能。 1、安装 使用pip安装&#xff1a; $ pip install Flask-Mail或下载源码安装&#xff1a; $ git clone https://github.com/mattupstate/flask-mail.git $ cd flask-…

Java到底是值传递还是引用传递【通俗易懂】

我相信很多刚学Java的小伙伴都很难理解Java到底是值传递还是引用传递的问题&#xff0c;但肯定背过这道面试题。确实&#xff0c;Java就是值传递&#xff0c;那什么原理呢&#xff1f;请往下看。 我们先看一段代码&#xff1a;分析一下这两句打印的结果分别是什么。 public c…

R3LIVE源码解析(9) — R3LIVE中r3live_lio.cpp文件

目录 1 r3live_lio.cpp文件简介 2 r3live_lio.cpp源码解析 1 r3live_lio.cpp文件简介 在r3live.cpp文件中创建LIO线程后&#xff0c;R3LIVE中的LIO线程本质上整体流程和FAST-LIO2基本一致。 2 r3live_lio.cpp源码解析 函数最开始会进行一系列的声明和定义&#xff0c;发布的…

前端面试基础面试题——5

1.react 和 vue 的区别是什么&#xff1f; 2.虚拟DOM的原理&#xff1f;优点与缺点&#xff1f; 3.类组件和函数组件之间的区别是&#xff1f; 4.state 和 props 区别是什么&#xff1f; 5.React 中 refs 是做什么的&#xff1f; 6.什么是高阶组件&#xff1f; 7.讲讲什么…

重装系统后,MySQL install错误,找不到dll文件,或者应用程序错误

文章目录 1.找不到某某dll文件2.mysqld.exe - 应用程序错误使用DX工具直接修复 1.找不到某某dll文件 由于找不到VCRUNTIME140_1.dll或者MSVCP120.dll&#xff0c;无法继续执行代码&#xff0c;重新安装程序可能会解决此问题。 在使用一台重装系统过的电脑&#xff0c;再次重新…

ModStartCMS v7.2.0 匿名点赞功能,注册站内信

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用&#xff0c;支持后台一键快速安装&#xff0c;让开发者能快的实现业务功能开发。 系统完全开源&#xff0c;基于 Apache 2.0 开源协议&#xff0c;免费且不限制商业使用。 功能特性 丰富的模块市…

elementUI时间选择器

<template>//月选择器//:clearable"false" 去掉<div class"monthCard"><el-date-picker:clearable"false"v-model"monthValue"type"month"placeholder"选择月"change"handleChangeMonth($eve…

音频——硬件拓扑

文章目录 硬件拓扑I2S 数据通路五线模式四线模式两线 TX两线 RX 典型应用硬件连接数据流 硬件拓扑 控制路径&#xff1a;UART/I2C/SPI数据路径&#xff1a;I2S 简略图如下 I2S 数据通路 五线模式 四线模式 两线 TX 两线 RX 典型应用 硬件连接 控制信号&#xff1a;SPI 用…

Flask狼书笔记 | 05_数据库

文章目录 5 数据库5.1 数据库的分类5.2 ORM5.3 使用Flask_SQLAlchemy5.4 数据库操作5.5 定义关系5.6 更新数据库表5.7 数据库进阶小结 5 数据库 这一章学习如何在Python中使用DBMS&#xff08;数据库管理系统&#xff09;&#xff0c;来对数据库进行管理和操作。本书使用SQLit…

SPI协议

文章目录 前言一、简介1、通信模式2、总线定义3、SPI通信结构4、SPI通讯时序5、SPI数据交互过程 二、多从机模式1、多NSS2、菊花链3、SPI通信优缺点4、UART、IIC、SPI 区别 三、总结四、参考资料 前言 SPI协议是我们的重要通信协议之一&#xff0c;我们需要掌握牢靠。 一、简介…

Oracle Merge Into ORA-00001: unique constaint violated问题

最近使用Datax同步进行定时数据同步&#xff0c;并在同步完之后进行回调sql进行统计操作。对应的ORACLE表结构如下&#xff1a; create table DATA_STAT_DAY ( DATA_DATE DATE, ID VARCHAR2(2), NAME VARCHAR2(2), CLASSNO VARCHAR2(2), SCORES NUMBER(16,0) );CREATE UNIQU…

postgis数据库导出csv表再导入postgis

1、导出csv表 from settings_Address import * from sqlalchemy import create_engine, MetaData import pandas as pd def create_conn(Postgis_user,Postgis_password,Postgis_host,Postgis_port,dbname_PG):# return create_engine(PostgispyPostgis://{}:{}{}:{}/{}.forma…

Mysql 流程控制

简介 我们可以在存储过程和函数中实现比较复杂的业务逻辑&#xff0c;但是需要对应的流程控制语句来控制&#xff0c;就像Java中分支和循环语句一样&#xff0c;在MySQL中也提供了对应的语句&#xff0c;接下来就详细的介绍下。 1.分支结构 1.1 IF语句 IF 表达式1 THEN 操作1…

Android MQTT:实现设备信息上报与远程控制

Android MQTT&#xff1a;实现设备信息上报与远程控制 1. 介绍 1.1 MQTT是什么&#xff1f; MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的消息传输协议&#xff0c;最初由IBM开发&#xff0c;用于连接远程设备与服务器之间的通信。它在物…

尚硅谷SpringMVC (9-13)

九、HttpMessageConverter HttpMessageConverter &#xff0c;报文信息转换器&#xff0c;将请求报文转换为 Java 对象&#xff0c;或将 Java 对象转换为响应报文 HttpMessageConverter提供了两个注解和两个类型&#xff1a; RequestBody &#xff0c; ResponseBody &#xff…

【AI创作助手使用测试】C++使用场景生成、Windows设备驱动开发介绍、调试技巧

C 是一种通用的编程语言&#xff0c;具有高性能、高效率、高可维护性等优点&#xff0c;被广泛应用于以下场景&#xff1a; 操作系统和嵌入式系统开发&#xff1a;C 是编写操作系统和嵌入式系统的主要语言之一&#xff0c;它可以提供底层的控制和资源管理&#xff0c;并且具有高…