1.上周回顾
略.
2.本周计划
进行反演相关学习.
3.完成情况
3.1.环境配置
Anaconda + Pycharm+ CUDA +Pytroch
3.1.1 相关解释
Anaconda:
Python 环境集成平台,内含 Python 解释器、Jupyter Notebook 代码编辑器以及很多三方库.
Python 解释器:
将python源码高级语言解析为二进制语言的工具.翻译python语言使得计算机能读懂
Pycharm:
Python编辑器 ,主要针对于python代码的编写工具.
CUDA:
NVIDIA 开发的并行计算平台和编程模型,使得在训练过程中可以利用 GPU 加快计算应用程序的速度.
3.1.2 安装
1)Anaconda安装: Anaconda | The World’s Most Popular Data Science Platform
安装到此时勾选俩个,就不需要再去配置环境
安装成功与否:在开始菜单栏里检查有无Anaconda即可.
conda一些常用操作指令
# conda版本
conda -V
# 清屏
cls
# 列出所有的环境
conda env list
# 创建名为“环境名”的虚拟环境,并指定 Python 的版本
conda create -n 环境名 python=3.9
# 创建名为“环境名”的虚拟环境,并指定 Python 的版本与安装路径
conda create --prefix=安装路径\环境名 python=3.9
# 删除名为“环境名”的虚拟环境
conda remove -n 环境名 --all
# 进入名为“环境名”的虚拟环境
conda activate 环境名
# 列出当前环境下的所有库
conda list
#安装库
conda install 库名
# 查看当前环境下某个库的版本
pip show 库名
# 退出虚拟环境
conda deactivate
2)Pycharm安装:Download PyCharm: Python IDE for Professional Developers by JetBrains
激活:将激活码复制到对应位置即可激活.
VAE9B0CRYZ-eyJsaWNlbnNlSWQiOiJWQUU5QjBDUllaIiwibGljZW5zZWVOYW1lIjoiZnV6emVzIGFsbHkiLCJhc3NpZ25lZU5hbWUiOiIiLCJhc3NpZ25lZUVtYWlsIjoiIiwibGljZW5zZVJlc3RyaWN0aW9uIjoiIiwiY2hlY2tDb25jdXJyZW50VXNlIjpmYWxzZSwicHJvZHVjdHMiOlt7ImNvZGUiOiJQU0kiLCJmYWxsYmFja0RhdGUiOiIyMDIzLTA3LTAxIiwicGFpZFVwVG8iOiIyMDIzLTA3LTAxIiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBDIiwiZmFsbGJhY2tEYXRlIjoiMjAyMy0wNy0wMSIsInBhaWRVcFRvIjoiMjAyMy0wNy0wMSIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUFBDIiwiZmFsbGJhY2tEYXRlIjoiMjAyMy0wNy0wMSIsInBhaWRVcFRvIjoiMjAyMy0wNy0wMSIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQQ1dNUCIsImZhbGxiYWNrRGF0ZSI6IjIwMjMtMDctMDEiLCJwYWlkVXBUbyI6IjIwMjMtMDctMDEiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUFdTIiwiZmFsbGJhY2tEYXRlIjoiMjAyMy0wNy0wMSIsInBhaWRVcFRvIjoiMjAyMy0wNy0wMSIsImV4dGVuZGVkIjp0cnVlfV0sIm1ldGFkYXRhIjoiMDEyMDIyMDcwMVBTQU4wMDAwMDUiLCJoYXNoIjoiVFJJQUw6MTMxNzYyODYxMCIsImdyYWNlUGVyaW9kRGF5cyI6NywiYXV0b1Byb2xvbmdhdGVkIjpmYWxzZSwiaXNBdXRvUHJvbG9uZ2F0ZWQiOmZhbHNlfQ==-YxAJSVk5XIZkkI6vH33zgb/hRmCdqia89zpsVHp2x52PY0XgOOiAlcR3/BVhm0qRYLBYBBHMpPcz0+ZWr2diKy0QexfbtVIVsCRkVaRgl67Tbw9MKb5jVNqpqth2yEoW/gmm2bZC5RS0qiGcPQpjD7AdRo66P78Vb2TrJ5hz055polMwR0hMxm9ECDedLnqKQXyzmcjkucStFNYYHbF0Gnn0I/xrxnVoIDeHMdlsRiBXYPb6TGIVgOIh8ynuGwvP/svLVPCI1dYPYF1V3ndDbOOQskOJaC+7K1/80xVEb3TT7Orb7PJJDX1AiIjg0gsSctPulz3r1xLHIZNcZJcV0A==-MIIETDCCAjSgAwIBAgIBDTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTIwMTAxOTA5MDU1M1oXDTIyMTAyMTA5MDU1M1owHzEdMBsGA1UEAwwUcHJvZDJ5LWZyb20tMjAyMDEwMTkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCUlaUFc1wf+CfY9wzFWEL2euKQ5nswqb57V8QZG7d7RoR6rwYUIXseTOAFq210oMEe++LCjzKDuqwDfsyhgDNTgZBPAaC4vUU2oy+XR+Fq8nBixWIsH668HeOnRK6RRhsr0rJzRB95aZ3EAPzBuQ2qPaNGm17pAX0Rd6MPRgjp75IWwI9eA6aMEdPQEVN7uyOtM5zSsjoj79Lbu1fjShOnQZuJcsV8tqnayeFkNzv2LTOlofU/Tbx502Ro073gGjoeRzNvrynAP03pL486P3KCAyiNPhDs2z8/COMrxRlZW5mfzo0xsK0dQGNH3UoG/9RVwHG4eS8LFpMTR9oetHZBAgMBAAGjgZkwgZYwCQYDVR0TBAIwADAdBgNVHQ4EFgQUJNoRIpb1hUHAk0foMSNM9MCEAv8wSAYDVR0jBEEwP4AUo562SGdCEjZBvW3gubSgUouX8bOhHKQaMBgxFjAUBgNVBAMMDUpldFByb2ZpbGUgQ0GCCQDSbLGDsoN54TATBgNVHSUEDDAKBggrBgEFBQcDATALBgNVHQ8EBAMCBaAwDQYJKoZIhvcNAQELBQADggIBABqRoNGxAQct9dQUFK8xqhiZaYPd30TlmCmSAaGJ0eBpvkVeqA2jGYhAQRqFiAlFC63JKvWvRZO1iRuWCEfUMkdqQ9VQPXziE/BlsOIgrL6RlJfuFcEZ8TK3syIfIGQZNCxYhLLUuet2HE6LJYPQ5c0jH4kDooRpcVZ4rBxNwddpctUO2te9UU5/FjhioZQsPvd92qOTsV+8Cyl2fvNhNKD1Uu9ff5AkVIQn4JU23ozdB/R5oUlebwaTE6WZNBs+TA/qPj+5/we9NH71WRB0hqUoLI2AKKyiPw++FtN4Su1vsdDlrAzDj9ILjpjJKA1ImuVcG329/WTYIKysZ1CWK3zATg9BeCUPAV1pQy8ToXOq+RSYen6winZ2OO93eyHv2Iw5kbn1dqfBw1BuTE29V2FJKicJSu8iEOpfoafwJISXmz1wnnWL3V/0NxTulfWsXugOoLfv0ZIBP1xH9kmf22jjQ2JiHhQZP7ZDsreRrOeIQ/c4yR8IQvMLfC0WKQqrHu5ZzXTH4NO3CwGWSlTY74kE91zXB5mwWAx1jig+UXYc2w4RkVhy0//lOmVya/PEepuuTTI4+UJwC7qbVlh5zfhj8oTNUXgN0AOc+Q0/WFPl1aw5VV/VrO8FCoB15lFVlpKaQ1Yh+DVU8ke+rt9Th0BCHXe0uZOEmH0nOnH/0onD
3.2 python基础
3.2.1 数据类型
数字(Number):
- 整数(int), 如:1,-1
- 浮点数(float), 如:12.3,-12.3
- 复数(complex), 如:4+3j,以j或J结尾表示虚部
- 布尔(bool)
字符串(String): 描述文本的一种数据类型,由任意数量的字符组成. 如:"python"
列表(list): 有序可变序列.
元组(Tuple):有序的不可变序列.
集合(set):无序不重复集合.
字典(Dictionary):无序Key-Value集合.
3.2.2 基础操作
注释:
# 这是一行注释
"""
这是多行注释
"""
'''
123123
'''
数据类型:
"""
变量命名规则:只能用数字,字母,下划线组成,且不能以数字开头.
"""
# 整型
int1 = 1
# 浮点型
float1 = 1.2
# 字符串
str1 = "w'o'rd" # w'o'rd
str2 = 'w\'o\'rd' # w'o'rd
str3 = 'w"o"rd' # w"o"rd
# 布尔型
bool1 = False
# 列表
list1 = [1, 4, 5]
# 集合
set1 = {1, 4, 5}
# 元组
tuple1 = (1, 4, 5)
# 字典
dic1 = {'n': 1, 'm': 2}
简单输出:
# hello word
print("hello word")
# hello word
print("hello\tword")
'''
hello
word
'''
print("hello\nword")
# 输出不换行
print("hello word", end="")
print1 = 5
# 5
print(print1)
# hello 5
print(f"hello {print1}")
# hello 5
print("hello %d" %print1)
输入:
input1 = input()
# 输入加上提示,输入默认为字符串形式
input2 = input("请输入: ")
# 如需其他类型需转换
input3 = int(input("请输入: "))
随机数:
import random
# [1,100]整型
random1 = random.randiant(1, 100)
# [1,100]浮点型
random2 = random.uniform(1, 100)
# [0,1]浮点型
random3 = random.random()
运算:
# 赋值
num1 = 3
num2 = 2
# 加减乘
num1 = num1 + 1
num1 += 1
num1 = num1 - 1
num1 -= 1
num1 = num1 * 1
num1 *= 1
# 除,若结果为小数则变为浮点数
num1 = num1 / 5
num1 /= 5
# 整除 取余
num2 = num1 // 5
num2 = num1 % 5
# 次方 num1的10次方
num1 = num1 ** 10
num1 **= 10
"""
布尔运算 非not 与and 或or
"""
# F需大写
bool1 = False
# bool2为True
bool2 = not bool1
# bool3为False
bool3 = (bool1 and (bool2 or not bool1)) or bool1
3.3反演学习
3.3.1 DL-FWI相关简介
1)DL-FWI
人类为了获得地下资源,首先就需要了解地下结构,开始通过钻井的方式来了解,但钻井的成本高而获得信息却很少.后来人们发现在不同介质中波的传播速度不同这个特性,利用该特性通过震源多次震动及多个接收器来接收地下来的反射信息, 从而获取地下结构情况.
FWI即全波形反演,通过接收器接收诸多的地震数据(如图一),来预测地下内质结构的过程.全波形:利用波的全部信息
传统的反演方法是通过物理计算的方法来计算正演的逆,比如通过PDE (偏微分方程)的全波形反演方法将会使用迭代优化算法来最小化目标函数的逆.其过程比较复杂,耗费时间长,且很依赖初始解.
DL-FWI是基于数据驱动的全波形反演,是通过端到端的深度学习来建立一个预测模型,来预测目标函数的逆,而由于训练模型需要大量的数据,而真实的数据往往都不多,所以会需要通过一些物理或数值计算方法来正演出更多的模拟数据.具有预测时间短,且可将空间信息引入的优点.
这里研究点:怎么模拟出一个更好的数据
2)其余相关概念
非严格的端到端:对数据先做了预处理,再喂入模型训练.而端到端是不做预处理.
速度模型:基于波在不同介质中传播的速度不同,数度模型每个像素点表示的是波在这个介质中传播的速度,从而反应地层样貌.
道:
道在计算机中的解释: 地震图像中的任意一个纵向的向量, 如果这个图像宽R, 那么它最多就有R个道. 如果这个图像高T, 那么每个道的长度都是T, 维度为 (T x 1).而物理意义上的解释是任意一个地震检波器在T时间内接受到的波形信号组, 是一个时间序列数据.
3.3.2 数据集
任何一个地震数据必然有速度模型与之对应.一个数据集有多个数据单元对,一个数据单元呈{地震数据-速度模型}样,其中地震数据又由n个炮的刨面组成.
通过了解SEG,Open-FWI的数据集,这里的研究点在于如果构建一个好的模型.
数据的读取:
# .mat文件
import scipy.io
numpy_file = scipy.io.loadmat(mat_file)[“var_name"]
# .npy文件
import numpy as np
dataset = np.load(np_file)
数据的展示:
# matplotlib库
import matplotlib
import numpy as np
matplotlib.use('TkAgg')
import matplotlib.pylab as plt
from mpl_toolkits.axes_grid1
import make_axes_locatable
4.存在的主要问题
对反演的代码内容还是比较模糊,需对基础知识进行弥补,再来理解.
5.下一步工作
继续反演的后续学习,及python知识的学习.