周报0624-0701--输入CMP数据的准备

news2024/11/18 17:22:14

一、代码理解

目的:设计思路(根据)
【主程序】多进程,linux,tensorflow
随机生成速度模型的显示颜色,位置,大小
训练的多进程安排
创建目录、环境变量,来存储CMP地震数据
定义变量,来控制程序的生成和训练

先是生成速度模型->正演数据集
建立网络(在jupyter notebook)->训练网络->测试网络

【CNN】
1.利用 Seismic Unix(SU)工具集。将模型分解为CMP(Common Mid-Point)集合,并进行可视化。——没明白怎么分解的

 # sort into cmp gathers and discard odd cmps
    print(f"sfshot2cmp < shots_decimated.rsf half=n | sfwindow j3=2 min3={(-gxbeg+2*sxbeg)*dx} max3={(Nx-(2*sxbeg))*dx} > {shots_out}")
    cmd(f"sfshot2cmp < shots_decimated.rsf half=n | sfwindow j3=2 min3={(-1.5*gxbeg+1.5*sxbeg)*dx} max3={(Nx-(2.5*sxbeg-.5*gxbeg))*dx} > {shots_out}")

2.将地震数据转化成多个CMP输入(10炮)——没明白怎么转化的

# expand to multiple CMPs as channels in input
def make_multi_CMP_inputs(X_data, T_data, nCMP, n_models=1):
    # first we prepare array for X_data_multi_CMP
    X_data_multi_CMP = np.zeros((n_models, 
                                 X_data.shape[0]//n_models-nCMP+1,
                                 X_data.shape[1],
                                 X_data.shape[2],
                                 nCMP))//5D 数据
    
    # add model dimension
    X_data = X_data.reshape(n_models, X_data.shape[0]//n_models, X_data.shape[1], X_data.shape[2], 1)
    T_data = T_data.reshape(n_models, T_data.shape[0]//n_models, T_data.shape[1])
    
    for i in range(nCMP-1):
        print(i)
        #print(np.shape(X_data_multi_CMP))
        #print(np.shape(X_data))
        #print(nCMP)
        #print(-nCMP+i+1)
        X_data_multi_CMP[:,:,:,:,i] = X_data[:,i:-nCMP+i+1,:,:,0]//对原始地震数据做处理得到多通道的CMPs
        
    X_data_multi_CMP[:,:,:,:,nCMP-1] = X_data[:,nCMP-1:,:,:,0]
    
    if nCMP==1 :
        T_data_multi_CMP = T_data
    else :
        T_data_multi_CMP = T_data[:, (nCMP-1)//2 : -(nCMP-1)//2, :]
        
    X_data_multi_CMP = X_data_multi_CMP.reshape(X_data_multi_CMP.shape[0]*X_data_multi_CMP.shape[1], 
                                                X_data_multi_CMP.shape[2], 
                                                X_data_multi_CMP.shape[3],
                                                X_data_multi_CMP.shape[4])
    T_data_multi_CMP = T_data_multi_CMP.reshape(T_data_multi_CMP.shape[0]*T_data_multi_CMP.shape[1], 
                                                T_data_multi_CMP.shape[2])
                                                
    #print(-(nCMP+1)//2) print(np.shape(X_data_multi_CMP)) print(np.shape(T_data_multi_CMP))
    
    assert (X_data_multi_CMP.shape[0] == T_data_multi_CMP.shape[0])
    
    return X_data_multi_CMP, T_data_multi_CMP

nCMP = 1

X_scaled, T_scaled = make_multi_CMP_inputs(X_scaled, T_scaled, nCMP, n_models=random_model_repeat)

nCMP = 11

X_scaled_multi, T_scaled_multi = make_multi_CMP_inputs(X_scaled, T_scaled, nCMP, n_models=random_model_repeat)
plt_nb_T(T_data, dx=jgx*dx, dz=jlogz*dx, fname="../latex/Fig/T_data")

plt_nb_T(1e3*T_scaled, dx=jgx*dx, dz=jlogz*dx, fname="../latex/Fig/T_scaled")

3.地震数据的拼接(经过翻转再拼接)——但不理解为什么只要第一个和最后一个的拼接

plt_nb_T(1e3*np.concatenate((np.squeeze(X_scaled[sample_reveal-nCMP,:,:,-1]), np.flipud(np.squeeze(X_scaled[sample_reveal,:,:,0]))), axis=0),
        title="CMP first | CMP last", dx=200, dz=1e3*dt*jdt, 
        origin_in_middle=True, ylabel="Time(s)", fname="../latex/Fig/X_scaled")
print(np.shape(1e3*T_scaled[sample_reveal-(nCMP+1)//2:sample_reveal+(nCMP-1)//2:nCMP]))

使用 plt_nb_T 函数绘制了 X_scaled 数组中的特定样本。这个样本是将第 nCMP 个最后一个CMP的数据和第一个CMP的数据拼接在一起,然后放大1000倍(可能是为了清晰度,因为地震数据通常在很大的数量级上)。

np.squeeze(…):
使用 NumPy 的 squeeze 函数去除数组中的单维度条目(即去除大小为1的维度)

plt_nb_T(1e3*np.concatenate((np.squeeze(X_data_cut[sample_reveal-nCMP,:,:,-1]), np.flipud(np.squeeze(X_data_cut[sample_reveal,:,:,0]))), axis=0),
        title="CMP first | CMP last", dx=200, dz=1e3*dt*jdt, 
        origin_in_middle=True, ylabel="Time(s)", fname="../latex/Fig/X_muted")

title=“CMP first | CMP last”:
设置图表的标题,表示图表展示了第一个和最后一个CMP的数据。

np.concatenate(…, axis=0):
使用 NumPy 的 concatenate 函数沿 axis=0 将两个数组拼接在一起。这里拼接的是特定样本的最后一个CMP和翻转后的(翻转使用 np.flipud)第一个CMP的数据。

dx=200, dz=1e3dtjdt:
设置图表的水平和垂直采样间隔。dt 和 jdt 可能是之前定义的时间步长和某个时间缩放因子。

origin_in_middle=True:
设置图像原点在中间,这通常用于对称的图形表示。

ylabel=“Time(s)”:
设置Y轴标签为“Time(s)”,表示Y轴的单位是秒。

fname="…/latex/Fig/X_scaled":
设置保存图像的文件名。
在这里插入图片描述
4.架构

def create_model(inp_shape, out_shape, jlogz=jlogz):
    model = keras.models.Sequential()
    activation = 'relu'
    activation_dense = activation
    padding = 'same'
    dropout = 0.1
    model.add(Conv2D(filters=4, kernel_size=(5, 21), strides=(2,5), activation=activation, padding=padding, input_shape=inp_shape))       
    model.add(Dropout(dropout))
    model.add(Conv2D(filters=16, kernel_size=(7, 11), activation=activation, padding=padding))
    model.add(MaxPool2D([1,2]))
    model.add(Dropout(dropout))
    model.add(Conv2D(filters=32, kernel_size=(3, 11), activation=activation, padding="valid"))
    model.add(Dropout(dropout))
    model.add(Conv2D(filters=32, kernel_size=(3, 7), activation=activation, padding=padding))
    model.add(Dropout(dropout))
    model.add(Conv2D(filters=32, kernel_size=(5, 5), activation=activation, padding=padding))
    model.add(Dropout(dropout))
    model.add(Conv2D(filters=1, kernel_size=(7, 60), strides=(10,jlogz//2), activation="linear", padding=padding))
    model.add(Dropout(dropout))
    model.add(Flatten())
    
    #model.add(Dense(2*out_shape[0], activation=activation_dense))
    #model.add(Dense(out_shape[0], activation=activation_dense))
    #model.add(Dropout(0.1))
    #model.add(Dense(out_shape[0], activation='linear'))
    #model.add(Reshape(out_shape))

    model.compile(loss='mse',
                  optimizer=keras.optimizers.Nadam(),
                  metrics=['accuracy'])
    return model

二、问题

1.CNN得到的是频率,怎么生成的速度模型呢?好突然,
A:速度模型作为初始模型。经正演得到波形,频率指的是波形的高频、低频。
参考意义:生成数据的迭代阶段。凡是有速度模型,可以在此基础上去正演得到波形,利用波形的高频信息恢复/外推波形低频信息。由波形出发反演速度模型。

2.SimpleFWI中,波形和地震记录(raw data体现在哪)什么对应关系?
为什么作者反演的深度这么浅?
为什么从2-4Hz开始?这也不算高频呀?

3.Mapping中的
什么是“源中心频率为5Hz的全频段数据”?

4.不理解对第i个CMP处理在干嘛:X_data_multi_CMP[:,:,:,:,i] = X_data[:,i:-nCMP+i+1,:,:,0]?
输出X_data_multi_CMP为什么是这个样子?(10个CMP的原始数据)
在这里插入图片描述

三、已解答的问题

  • Elastic Transform(弹性变换)是一种数据增强技术,特别适用于图像数据集的增强。它通过模拟图像的物理弹性变形来增加数据的多样性,有助于提高深度学习模型的泛化能力。以下是使用弹性变换进行数据增强的一些关键点:
  1. 原理:弹性变换通过在图像上应用随机生成的位移场来模拟弹性变形。位移场通常是通过高斯分布生成的随机向量,然后使用高斯滤波器进行平滑处理。

  2. 参数:弹性变换的两个关键参数是 alphasigmaalpha 控制位移的大小,而 sigma 控制高斯滤波器的平滑程度。

  3. 应用:弹性变换可以应用于医学图像分析、手写识别、自然语言处理等领域,以增加数据集中样本的多样性。

  4. 实现:在Python中,可以使用像PyTorch这样的深度学习框架来实现弹性变换。例如,torchvision.transforms 模块提供了 ElasticTransform 类,可以轻松地将弹性变换应用到图像数据上。

  5. 效果:弹性变换能够模拟图像的复杂变形,包括拉伸、压缩和扭曲,这有助于模型学习到更加鲁棒的特征表示。

  6. 与其他数据增强技术的比较:与传统的旋转、翻转或裁剪等数据增强技术相比,弹性变换可以引入更复杂的图像变形,从而更有效地提高模型对图像变形的适应能力。

  7. 使用注意事项:在使用弹性变换时,需要仔细调整 alphasigma 的值,以确保生成的图像既具有多样性,又不会失去重要的视觉信息。

通过使用弹性变换,可以有效地扩充图像数据集,提高模型对新情况的适应性,从而在各种视觉识别任务中取得更好的性能。——此弹性非彼弹性(不是弹性波,只是图像上的扰动)

  • Mapping文献中,高斯随机场用于产生横向平滑模型的坐标偏移目的:
    • 水平方向的大相关半径- -为保持其近乎水平层状
    • 垂直方向上的小相关半径- -为使其代表不同的分层场景
    • 水平分量和垂直分量的参数相同,但场不同
    • 大的垂直位移和小的水平位移- -为保持其横向缓慢变化

下一步工作

1.了解Seismic Unix(SU)工具集。
2.把cmp输入数据的形式和处理目的理解清楚,把速度分析和地震反演两个问题的网络合理结合,目的是将其作为深度网络的输入数据。

需要理解的资料主要是有openfwi数据集所提到的3种网络。

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

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

相关文章

六西格玛培训引领久立特材品质新高度,行业领军再升级

久立特材六西格玛管理项目于6月27 日启动。久立特材作为行业内的领军企业&#xff0c;此次引入六西格玛管理法&#xff0c;旨在进一步提升企业运营效率和产品质量&#xff0c;实现持续改进和卓越运营。 久立特材的高层领导与张驰咨询的资深顾问朱老师共同出席项目启动仪式&am…

DETRs Beat YOLOs on Real-time Object Detection论文翻译

cvpr 2024 论文名称 DETRs在实时目标检测上击败YOLO 地址 https://arxiv.longhoe.net/abs/2304.08069 代码 https://github.com/lyuwenyu/RT-DETR 目录 摘要 1介绍 2.相关工作 2.1实时目标探测器 2.2.端到端物体探测器 3.检测器的端到端速度 3.1.NMS分析 3.2.端到端速度…

百事可乐推出具有视频屏幕和人工智能技术的智能罐头

在最近于法国戛纳举行的国际创意节上&#xff0c;百事公司推出了创新的智能罐头。这些罐头不同于传统产品&#xff0c;它们采用了环绕式3D屏幕&#xff0c;能够展示高清视频内容&#xff0c;为品牌宣传和促销带来了全新的视角。经过两年多的精心研发&#xff0c;这些智能罐成为…

【数据结构与算法】探索数组在堆数据结构中的妙用:从原理到实现

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《数据结构与算法》 期待您的关注 ​​ 目录 一、引言 二、堆的基本概念 &#x1f343;堆的特性 &#x1f343;堆的分类 三、…

Python Tkinter:开发一款文件加密解密小工具

在这个信息泄露风险日益增加的时代&#xff0c;使用文件加密工具对于保护个人隐私和企业机密至关重要。 本文介绍了一款小工具——encryptDecrypt&#xff0c;它不仅提供了一个易于使用的图形界面&#xff0c;简化了加密和解密过程&#xff0c;还确保了数据的安全性&#xff0c…

国产压缩包工具——JlmPackCore SDK说明(一)

一、什么是JlmPackCore SDK &#xff08;1&#xff09;自主可控 JlmPackCore是一套基于我国自主知识产权的核心算法发明专利——杰林码&#xff08;详系请参考《杰林码原理及应用》一书&#xff0c;也可以参考后续发表的相关论文&#xff09;&#xff0c;其中一篇会议论文&…

完全入门C语言

1.C语言 C语言是一门通用的计算机编程语言&#xff0c;广泛应用于底层开发。其设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。有良好的跨平台的特性。 同时C语言还是面向过程的编程语言&#xff0c;…

汇编基础语法

指令格式 1、立即数 一个常数&#xff0c;该常数必须对应8位位图&#xff0c;即一个8位的常数通过循环右移偶数位得到该数&#xff0c;该数位合法立即数 在指令中表示方法&#xff1a;#数字&#xff0c;例如&#xff1a;#100 快速判定是否是合法立即数&#xff1a; 首先将这…

一款可以编辑SVG矢量图形的方法(以桑基图为例)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、svg矢量图片在线绘制网站二、保存SVG格式图片二、修改SVG图片中的字体大小一、svg矢量图片在线绘制网站 提示:有些图不想用代码出图时,可以采用这个网站,无需注册,无VIP: 网站地址https…

FFmpeg视频处理工具安装使用

一、前言 FFmpeg是流行的开源视频处理工具&#xff0c;用于转码、合并、编辑等。以下是安装和使用方法&#xff1a; 二、步骤 1.下载 1.1 ffmpeg下载 官网下载地址 wget https://www.ffmpeg.org/releases/ffmpeg-6.1.1.tar.xz1.2 nasm下载 https://www.nasm.us/pub/nasm/…

桥感应加热主电路拓扑结构及控制原

1 桥感应加热主电路拓扑结构及控制原理 1.1 主电路拓扑 本文所述中频感应加热电源采用交—直—交的变频原理&#xff0c;三相50Hz的正弦交流输入电压经过整流滤波为540V平滑直流电压&#xff0c;再经逆变器将直流电压变成不同频率的交流电压供负载使用。本文采用半桥串联谐振…

【echarts】如何关闭dataZoom-silder 组件中数据阴影(缩略图、数据走势图)

echarts开启 “滑动条型数据区域缩放组件&#xff08;dataZoomInside&#xff09;”后&#xff0c;默认会显示数据的走势图。 但有时候我们并不需要。 如何关闭呢&#xff1f; 官方有提供一个属性&#xff1a;showDataShadow https://echarts.apache.org/zh/option.html#da…

无线物联网题集

测试一 未来信息产业的发展在由信息网络向 全面感知和 智能应用两个方向拓展、延伸和突破。 各国均把 物联网作为未来信息化战略的重要内容,融合各种信息技术,突破互联网的限制,将物体接入信息网络。 计算机的出现,开始了第四次工业革命,开始了人机物的高度融合&#xff08;&…

【Unity】 HTFramework框架(五十二)使用 HybridCLR 热更新

更新日期&#xff1a;2024年7月1日。 Github源码&#xff1a;[点我获取源码] Gitee源码&#xff1a;[点我获取源码] 索引 HybridCLR 热更新一、启用宏定义二、导入HybridCLR三、设置热更新程序集四、资源、代码热更 HybridCLR 热更新 HybridCLR是一个特性完整、零成本、高性能…

探索 ONLYOFFICE 8.1:云端协作的新纪元

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

如果对方没做幂等!记一次生产订单重复的反思

最近公司公司的旧系统中发现了一个bug。业务部门反馈&#xff0c;尽管用户只支付了一年的服务费用&#xff0c;系统却将有效期增加了两年。 原因分析&#xff1a; 到底是什么原因呢&#xff1f; 经过日志分析&#xff0c;发现消息队列&#xff08;MQ&#xff09;向第三方服务发…

EDI是什么?与ERP有何关系

EDI的发展过程 电子数据交换&#xff08;Electronic Data Interchange&#xff0c;EDI&#xff09;是一种通过电子方式传输商业文件的技术。EDI的历史可以追溯到20世纪60年代&#xff0c;当时企业开始使用计算机进行数据处理。最早的EDI系统是为解决大型企业间的信息交换问题而…

【刷题汇总--数字统计、两个数组的交集、点击消除(栈)】

C日常刷题积累 今日刷题汇总 - day0011、数字统计1.1、题目1.2、思路1.3、程序实现 2、两个数组的交集2.1、题目2.2、思路2.3、程序实现 3、点击消除(栈)3.1、题目3.2、思路3.3、程序实现 今日刷题汇总 - day001 1、数字统计 1.1、题目 请统计某个给定范围[L, R]的所有整数中…

智能制造企业CRM系统推荐清单(2024版)

当前&#xff0c;CRM市场呈现出“国际龙头优势逐渐下降&#xff0c;国产CRM奋起直追”的格局。智能制造企业在选型CRM时&#xff0c;如何选择合适的系统是一个需要重视的课题。 在我们之前的文章《一文读懂CRM&#xff0c;2023年30家CRM系统对比&#xff08;近年最全&#xf…

如何在AWS上使用免费的服务器

要在AWS上免费使用的服务器&#xff0c;你可以按照以下步骤操作&#xff1a; &#xff08;1&#xff09;注册AWS账户&#xff1a; 访问AWS官方网站&#xff08;https://aws.amazon.com/cn/&#xff09;&#xff0c;点击右上角的“完成注册”&#xff0c;按照页面提示填写相关…