【学习笔记】Day 2
一、进度概述
1、inversionnet_train_light 试运行——未成功
2、DL-FWI基础入门培训-1,2,以及作业1的完成——暂未完成作业
二、详情
1、inversionnet_train_light 试运行
在补充完相关依赖后,运行仍有报错
产生原因:这个代码在当时师兄的库中存在相关申明,但现在没有了
解决方法:在 “InversionNet.py” 中补充以下代码
import torch.nn.functional as F
关于为什么解决完所有问题后仍然运行不成功:内存不够!
关于代码还需要说明的一点:目前只是将代码运行成功,实际上并没有逐句分析,在后面学习了相关知识后,建议开个篇章逐句理解。
2、《DL-FWI:简述》知识总结
学习目的:进一步认识 “通过全波形反演探测地震数据” 这一系统。
内容摘要:
(1)“全波形反演” 概述
A. 关于正演与反演的逻辑
B. FWI的数学表示
C. FWI的端到端深度学习解释
D. DL-FWI的优势
E. DL-FWI的基本发展和分类
F. 地震数据 (Seismic Data) 是什么样的?
G. 速度模型 (Velocity Model) 是什么?
H. 道 (Trace) 是什么?
笔记记录:
(一)何为全波形反演 (Full waveform inversion)?
从地表发出的震源弹性波会沿着不同方向传播, 并受到不同介质特性的影响而发生反射、折射、衍射等现象。
我们可以在地表放置多个接收器来检测这些反射信号, 从而来分析关于地下介质结构及物性参数等信息。当我们把每个接收器获取的弹性波绘制出来并拼接在一起就可以得到如下的地震数据。
而通过右图的结构推测左图构造的问题就称之为全波形反演, 后续我们简称为FWI.
A. 关于正演与反演的逻辑
正演 (Forward modeling) 指的是根据地下介质的物性参数, 运用物理方程和数值计算方法, 模拟真实地震波传播过程并得到合成地震记录的过程. 可以认为正演是反演的逆过程: 即通过地层图模拟地震波形.
反演问题是建立从地震数据到速度模型的映射. 一般认为是多解的, 即一个地震数据可能对应于多个速度模型.
正演问题是建立从速度模型到地震数据的映射.一般认为是单解的, 即一个速度模型只能生成一个地震数据.
B. FWI的数学表示
通过之前的表示, 常密度二维声波方程式:
若我们把上式简写为:
这个公式即将映射到, 这里通常是非线性的, 这就是常规的正演思路.
在反演应用中, 求解上述方程的策略是开发一个相当快速且准确的逆算子.
现有的采用PDE (偏微分方程)的全波形反演方法将会使用迭代优化算法来最小化目标函数.
但是由于算子的非线性特性和测量本身可能得不完善 (因为本身也是通过数值化的正演模拟得到) 很难得到精确地下模型.
(吐槽一下这和电磁波有什么区别啊可恶,死去的电磁场与电磁波还在攻击我)
注:这部分的数学理论部分理解可参考 “数学物理方法” 和 “电磁场与电磁波” 等相关课程,计算靠机器。
C. FWI的端到端深度学习解释
而随着深度学习的壮大, 我们以深度网络的逼近定理为原则, 尝试用各种端到端结构去模拟目标函数.
由此FWI的端到端深度学习的方法可以总结为:
就是用已知的”地震数据”和”速度模型”来训练一个[模型].
然后通过将新的”地震数据”喂入这个[模型]中, 从而预测其”速度模型”, 从而推测地下构造.
D. DL-FWI的优势
传统的FWI的求解过程涉及到多次迭代, 时间开销是巨大的, 而且依赖于初始解, 存在病态性.
1. DL-FWI通常在训练阶段需要更多时间, 而实际预测花费的时间很少, 只需要几秒钟. 一旦建立了良好的通用网络, 那么就可以大大地减少FWI计算时间.
2. 神经网络可以自然地将空间相关性作为正则化引入生成速度模型, 这样可以抑制梯度中的噪声并减轻局部最小.
E. DL-FWI的基本发展和分类
DL-FWI最主要的发展是从2018年开始, 而2020左右是相关的重要架构产出的时代.
最开始人们采用的手段主要是”严格端到端”和”空间信息的嵌入”两种手段.
严格的端到端手法就是尝试通过设计构建完善的网络去拟合函数𝐻^(−1), 将设计侧重在网络的设计中, 它们大多是CNN的编-解码结构. 但是需要承认, 这种设计可能会弱化一些物理意义和空间信息.
而嵌入的手段就强调在空间中提供重要的信息参与训练, 这个过程中伴随着其他特征网络的维度控制, 这个时候就会有DNN参与进来.
嵌入特征有非常强的空间解释性, 某些效果也是很出色的.
但是目前嵌入有关论文的开源性很差.
近几年, DL-FWI的方法愈发丰富, 一些设计引入了更丰富的非严格端到端网络架构结构 (GAN等), 训练场景 (无监督等) 和训练思路 (渐进迁移等). 这些手法跳出了只沉溺于网络的设计的怪圈, 将深度学习的其他成果融于了DL-FWI研究中, 进一步强化了DL-FWI. 但是也模糊了物理方法和DL-FWI的界线.
近几年物理引导的DL-FWI愈发火热起来, 它可能是未来DL-FWI的一个极其富有潜力的方向 : 更强解释性和效果, 但模糊了物理方法和深度学习方法的界线, 难度颇高.
但是我们目前仍在致力于挖掘DL-FWI中关于”DL-”部分的潜力.
几个主要架构
ModifiedFCN (2018)
GeoDNN (2018)
FCNVMB (2019)
InversionNet (2019)
SeisInvNet (2020)
VelocityGAN (2020)
ULFWI (2022)
F. 地震数据 (Seismic Data) 是什么样的?
示意图见PPT
在位置A触发振动源, 所有接收器都会陆续接收到波信号, 这些信号可以绘制出炮面图A, 如右图所示.
然后移动振动源到位置B, C触发振动源, 同理我们会得到炮面图B, C
因为振动源动而接收器没动, 故这些炮面图是互不同的.
因此放S个炮就可以得到S个炮面图, 我们将他们”捆”在一起, 成为一个”S-通道的图集”.
同时, 炮面图的宽度 = 接收器个数, 高度 = 采样时长.
(通过图像还是比较好理解的)
G. 速度模型 (Velocity Model) 是什么?
我们通常将地下结构称之为”速度模型”, 因为这个图的每个像素点其实表示的是波在这个介质中传播的速度.
因此它所表示的物理意义更接近于”速度值”的分布, 只因这种分布与地表构造强相关, 故我们可以通过这种”速度值”的分布来分析地层样貌.
示意图见PPT
H. 道 (Trace) 是什么?
示意图见PPT
道在计算机中的解释: 地震图像中的任意一个纵向的向量, 如果这个图像宽R, 那么它最多就有R个道. 如果这个图像高T, 那么每个道的长度都是T, 维度为 (T x 1).
道在物理意义上的解释: 任意一个地震检波器在T时间内接受到的波形信号组, 是一个时间序列数据.
3、《DL-FWI:数据》知识总结
学习目的:FWI数据中的信息与数据的运用
内容摘要:
(1)数据与数据间的关系
(2)SEG盐体数据
(3)OpenFWI数据集
(4)数据的操作: 读取
(5)数据的操作: 展示
笔记记录:
(1)数据与数据间的关系
首先, 我们的数据集本身是由若干个 {地震数据-速度模型} 构成的数据对, 任何一个地震数据必然有其对应的速度模型, 反之亦然.
对于有N个数据的地震数据集, 数据与数据之间存在下面这样的层级关系
(2)SEG盐体数据与模拟数据
首先我们介绍的是SEG盐体数据
SEG盐的数据描述了一个大约2km×3km的地下二维剖面区域. 采样后, 地下的像素区域大小为201×301. 波在这个地下区域的传播速度为1500m/s~4482m/s.
图中的黄色部分代表盐体 (Salt Body),波在这个介质中的传播较快
然后是SEG盐体数据的模拟数据:
考虑到真实数据的量是很匮乏的, 而DL-FWI的一般网络都是非常吃数据量的模型, 故还需要通过合成一些同SEG盐数据类似分布的模拟数据来进行预训练, 作为网络背景.
该模拟数据集有 1700 个与SEG盐数据大小相同的合成速度模型.
每幅图像都有不同宽度的层,从大约 5 到 12 层不等. 为了精确模仿盐体, 每个速度模型在中间或底部随机嵌入了随机形状的盐体. 同时,模拟数据的地层速度波动也控制在2000km/s~4500km/s.
(3)OpenFWI数据集
OpenFWI是近一两年随着DL-FWI的蓬勃发展而诞生的大规模、多结构基准数据集的集合.
它包含了12 个根据不同先验合成的数据集, 其中包括一个 3D 数据集.
而这12个数据集又可以细分为四类数据, Vel类, Fault类, Style类, Kimberlina类. 除Style外, 它们都表示不同的地下结构, Style则为一种自然图像的迁移假想地层.
A/B代表地层的难度分级.
(4)数据的操作: 读取
(5)数据的操作: 展示
注:4,5等到完成作业1后再来补充理解
4、作业1
暂未成功复现,其原因是对于numpy和scipy库完全陌生,无法理解代码的逻辑。目前首要任务更改为了解两个库以及其所描述的问题的基本情况。
参考文献如下:
python学习笔记之numpy库的使用——超详细_手机插上u盘怎么传文件-CSDN博客
【Python三方库】Python之SciPy库的简介、安装、使用方法、示例代码、注意事项等详细攻略_python scipy库-CSDN博客
初步看下来,scipy更像是对numpy的一个封装,从原理上理解numpy库的使用,从工具角度上学习scipy更佳。
后记
相关文章:
【学习笔记】Day 2
一、进度概述 1、inversionnet_train_light 试运行——未成功 2、DL-FWI基础入门培训-1,2,以及作业1的完成——暂未完成作业 二、详情 1、inversionnet_train_light 试运行 在补充完相关依赖后,运行仍有报错 产生原因:这个代码在当…...
Java中的Map(如果想知道Java中有关Map的知识点,那么只看这一篇就足够了!)
前言:在Java编程语言中,集合框架(Collection Framework)提供了一系列用于存储和操作数据的接口和类。其中,Map和Set是两个非常重要的接口,分别用于存储键值对和无重复元素的集合。 ✨✨✨这里是秋刀鱼不做梦…...
裸金属服务器详解
在云计算飞速发展的今天,裸金属服务器(Bare Metal Server, BMS)作为一种兼具传统物理服务器性能和虚拟化服务优势的计算资源,正逐渐成为企业和个人用户的重要选择。今天我们就来了解下关于裸金属服务器的定义、核心特点以及其在各…...
等待唤醒机制两种实现方法-阻塞队列
桌子上有面条-》吃货执行 桌子上没面条-》生产者制造执行 1、消费者等待 消费者先抢到CPU执行权,发现桌子上没有面条,于是变成等待wait状态,并释放CPU执行权,此时的CPU肯定会被厨师抢到,初始开始做面条,…...
数组项相加和 – 如何将 JavaScript 数组中的数字相加
JavaScript 中的数组是一个对象,它允许您在单个变量名称下存储多个值的有序集合,并以多种方式操作这些值。 在本文中,您将学习如何使用几种不同的方法计算给定数组中所有数字的总和。 具体来说,使用以下方法得到数组中所有数字的总…...
C#和S7-1200PLC S7.NET通信
1、一步步建立一个C#项目 一步步建立一个C#项目(连续读取S7-1200PLC数据)_s7协议批量读取-CSDN博客文章浏览阅读1.7k次,点赞2次,收藏4次。这篇博客作为C#的基础系列,和大家分享如何一步步建立一个C#项目完成对S7-1200PLC数据的连续读取。首先创建一个窗体应用。_s7协议批量…...
常用命令git branch
Git Branch 命令总结 列出分支 git branch:显示本地分支,当前分支会被标记。git branch -r:显示远程分支。git branch -a:显示所有本地和远程分支。 创建分支 git branch <branch_name>:创建一个新分支但不自…...
Android 制作系统签名
一、切换目录 cd build/target/product/security二、执行命令 1)将使用.pk8生成platform.priv.pem (.pem即可,文件名可随意修改)openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.pem -nocrypt2)生成.p12,此时需输入两次密码,并且要记住 -name后所设置…...
C语言第13篇
1.下面程序是计算n个数的平均值,请填空.______ #include<stdio.h> void main( ) { int i,n; float x,avg0.0; scanf("%d",&n); for(i0;i<n;i) { scanf("%f",&x); avgavg______; } avg________; printf("avg%f\n",avg); } A) …...
基于FPGA的数字信号处理(22)--进位保存加法器(Carry Save Adder, CSA)
目录 1、拆解多个数的加法 2、进位保存加法器 3、CSA的优点和缺点 4、CSA电路的实现 文章总目录点这里:《基于FPGA的数字信号处理》专栏的导航与说明 1、拆解多个数的加法 考虑3个4bits数相加,10 4 7 21 的过程是这样的: 其中的红色数…...
idea使用free流程,2024idea、2023idea都可以安装免费使用
1.先到官网下载,这里选择win系统的,点击下图的.exe https://www.jetbrains.com/idea/download/?sectionwindows 2.下载好后基本上就是一直点击“下一步”到直到安装好,安装好后先打开软件后关闭退出 3.下载配配套资料 链接: https://pan.ba…...
设计模式 之 —— 抽象工厂模式
目录 什么是抽象工厂模式? 定义 特点 抽象工厂模式(java代码示例) 首先定义第一个接口 实现第一个接口的类 定义第二个接口 实现第二个接口的类 * 创建抽象工厂类 创建扩展了 AbstractFactory 的工厂类 饮料工厂 食物工厂 * 创建一个…...
计量经济学(十六)--一文读懂和学会医学统计学中的四种检验方法
1. 统计学是什么? 统计学是应用数学的一个分支,主要通过利用概率论建立数学模型,收集所观察系统的数据,进行量化的分析、总结,并进而进行推断和预测,为相关决策提供依据和参考。它被广泛的应用在各门学科之上,从物理和社会科学到人文科学,甚至被用来工商业及政府的情报…...
解析 C# Dictionary 代码
entries用于存储当前每个节点的数据,其中四个字段分别表示: hashCode:key对应的hash值next:处理hash冲突,可以理解为是一个链表结构,邻接表key:存储的keyvalue:存储的value bucket…...
如何利用人工智能提升工作效率
在当今这个信息爆炸的时代,我们每天都被大量的工作任务所困扰。然而,随着人工智能技术的不断发展,我们可以通过一些智能工具来提升我们的工作效率。在这篇文章中,我将分享一些关于如何利用人工智能提升工作效率的建议。 首先&…...
Linux驱动开发—Linux内核定时器概念和使用详解,实现基于定时器的字符驱动
文章目录 内核定时器概念在Linux驱动模块中使用定时器软定时器(Soft Timers)jiffies 含义高精度定时器(High Resolution Timers) 实现倒计时字符设备驱动 内核定时器概念 在 Linux 内核中,定时器是用来管理和调度延迟…...
mysql数据库:数据库,表和列的基本概念
mysql:数据库,表和列的基本概念以及导入和导出文件 数据库的概念和用途 数据库是一个有组织的数据集合,它们被存储在计算机上以便于管理和访问。数据库的主要目的是为了存储和管理数据,同时使数据能够被高效地访问、检索和更新。数…...
Nextjs 使用 graphql,并且接入多个节点
写在前面 随着区块链技术的流行,也促进了 subgraph 工具的兴起。那么如何在前端接入 graphql 节点就成了关键,其接入方式既存在与 restful 接口相类似的方式,也有其独特接入风格。本文将介绍如何接入 graphql 以及如何应对多个 graphql 节点…...
小结——知识注入
所谓知识注入,其实不该脱离于LLM的基础工作原理,然后空谈抽象概念。 知识,也就是你问他问题,他能输出正确的回答,这只是一个简单的输出token的过程。输出得准了,就是知识,输出不准了,…...
科普文:微服务之Spring Cloud Alibaba组件Nacos一致性协议Distro+Raft概叙
一、概要 Nacos是阿里开放的一款中间件,它主要提供三种功能:持久化节点注册,非持久化节点注册和配置管理。 二、一致性协议 - AP/CP Nacos不是纯粹的AP服务,也不是纯粹的CP服务,而是两者同时支持。 这要从服务注册…...
python合并音视频-通过ffmpeg合并音视频
🌈所属专栏:【python】✨作者主页: Mr.Zwq✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询! 您的…...
Yolov8添加ConvNetV1和V2模块
Yolov8添加ConvNet模块 1 ConvNet系列相关内容 (1)2022 论文地址:A ConvNet for the 2020s Code Link 如下图所示,精度、效率、尺寸都很不错。 论文的摘要如下: 视觉识别的“咆哮的 20 年代”始于视觉注意力 &…...
十个常见的 Python 脚本 (详细介绍 + 代码举例)
1. 批量重命名文件 介绍: 该脚本用于批量重命名指定目录下的文件,例如将所有 ".txt" 文件重命名为 ".md" 文件。 import osdef batch_rename(directory, old_ext, new_ext):"""批量重命名文件扩展名。Args:directory: 要处理…...
【C语言】详解feof函数和ferror函数
文章目录 前言1. feof1.1 feof函数原型1.2 正确利用函数特性读写文件1.2.1 针对文本文件1.2.2 针对二进制文件 1.3 feof函数的原理1.4 feof函数实例演示 2. ferror2.1 ferror函数原型 前言 或许我们曾在网络上看过有关于feof函数,都说这个函数是检查文件是否已经读…...
ValueListenableBuilder 和 addListener 在 ChangeNotifier的区别
1、前言 ValueListenableBuilder 和 addListener 在 ChangeNotifier 中有不同的用途和用法,适用于不同的场景。它们的主要区别在于它们如何监听和响应状态变化,以及它们的用法和特性。 2、ValueListenableBuilder用法 ValueListenableBuilder 是一个 …...
ScriptEcho:AI赋能的前端代码生成神器
ScriptEcho:AI赋能的前端代码生成神器 在前端开发中,如果你总是觉得写代码太费时费力,那么 ScriptEcho 将成为你的救星。这个 AI 代码生成平台不仅能帮你省下大量时间,还能让你轻松愉快地写出生产级代码。本文将带你了解 ScriptEc…...
TypeError: ‘float’ object is not iterable 深度解析
TypeError: ‘float’ object is not iterable 深度解析与实战指南 在Python编程中,TypeError: float object is not iterable是一个常见的错误,通常发生在尝试对浮点数(float)进行迭代操作时。这个错误表明代码中存在类型使用不…...
灵茶八题 - 子序列 +w+
灵茶八题 - 子序列 w 题目描述 给你一个长为 n n n 的数组 a a a,输出它的所有非空子序列的元素和的元素和。 例如 a [ 1 , 2 , 3 ] a[1,2,3] a[1,2,3] 有七个非空子序列 [ 1 ] , [ 2 ] , [ 3 ] , [ 1 , 2 ] , [ 1 , 3 ] , [ 2 , 3 ] , [ 1 , 2 , 3 ] [1],[…...
为什么美元债务会越来越多?
美元债务规模持续膨胀,其背后原因复杂多样,可归结为以下几个主要因素: 财政赤字和刺激政策是导致美元债务增加的重要原因。美国政府长期面临财政赤字问题,支出远超收入,为弥补这一缺口,政府不得不大量发行…...
二维凸包算法 Julia实现
问题描述:给定平面上 n n n 个点的集合 Q Q Q,求其子集 P P P 构成 Q Q Q 的凸包,即 ∀ p ∈ Q , ∃ p 0 , p 1 , p 2 ∈ P \forall p \in Q, \exist p_0, p_1, p_2 \in P ∀p∈Q,∃p0,p1,p2∈P 使得点 p p p 在以点 p 0 , p 1 …...
网站建设问卷调研/正规seo排名多少钱
2019独角兽企业重金招聘Python工程师标准>>> 在Mysql中my.ini加上,lower_case_table_names 0,可以让表的导入导出识别大小写 转载于:https://my.oschina.net/idiot521/blog/277984...
网络型网站分为/5g网络优化
先来了解一下超高的概述,道路设计时为什么要设置超高呢?超高是指车辆在弯道上行驶,为了抵抗离心力的作用,常需要设置超高。即由直线路段的双向横坡路面通过超高缓和段过度到全超高的单向横坡路段。在设计中如何知道超高被明确的设…...
开网站做家政/公司网站免费自建
函数不正确说明这个盘的文件系统结构损坏了。在平时如果数据不重要,那么可以直接格式化就能用了。但是有的时候里面的数据很重要,那么就必须先恢复出数据再格式化。具体恢复方法可以看正文了解(不格式化的恢复方法) 工具/软件&…...
网站开发w亿玛酷1专注/品牌网络推广运营公司
int snprintf(char *restrict buf, size_t n, const char * restrict format, ...); 函数说明:最多从源串中拷贝n-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为n 的话,将不会溢出。 函数返回值:若成功则返回欲写入的字…...
php网站游客试用怎么做/seo关键词挖掘
下载地址:网盘下载 内容介绍 编辑《SQL Server 从入门到精通》从初学者的角度出发,通过通俗易懂的语言、丰富多彩的实例,详细地介绍了SQLServer2008开发应该掌握的各方面技术。全书共分15章,包括数据库基础、初识SQLServer2008、管…...
网站记登录账号怎么做/link友情买卖
1.新建虚拟机 2.选择自定义 3选择默认,然后下一步 4.选择“稍后安装操作系统” 5.系统选择linux,版本选择Centos7 6.给虚拟机起名字和位置,因人而异 7.配置虚拟机CPU核数 8.配置虚拟机内存 9.选择虚拟机使用网络&…...