• 2023年11月11日~11月17日周报(基于matlab生成模拟数据、批量修改文件名、重写dataset)


    目录

    一、前言

    二、基于matlab生成模拟数据

    二、批量修改文件名

    三、代码调试

    四、重写dataset


    一、前言

            上周完成了FCNVMB的训练与测试,但是由于数据量较少,训练效果不明显。工作站运行forward.py代码生成模拟数据的时候出现错误,未解决。

            本周计划使用matlab生成大量模拟数据,再进行训练查看训练效果,同时学习如何重写dataset。

    二、基于matlab生成模拟数据

            单个速度模拟文件计算多炮数据:

             forward函数所需参数:①vfile:存放速度模型的文件目录;②outfile:存放正演地震数据的文件目录;③sn:炮数

            [MATLAB] fullfile函数介绍:

            函数功能:将多个字符串拼接为文件路径。

            语法格式:f = fullfile(filepart1,filepart2,…,filepartN)

            输出:将各个输入用"\"拼接起来;即:f = ‘filepart1\filepart2\…\filepartN’。

    三、批量修改文件名

            由于粗心,不小心将“georec”打成了“geroec”,因此使用matlab进行批量修改。错误情况:

            代码如下:

    1. % 可以直接将该脚本创建在待需要修改的文件夹下
    2. path='******' % 输入带修改文件夹的地址
    3. cd(path)
    4. % 循环遍历所有文件
    5. for i = 1:800
    6. % 获取第i个文件名
    7. oldname = ['geroec',num2str(i),'.mat']
    8. % 打印原文件名,查看是否有错
    9. disp(oldname)
    10. % 将一个文件的完整路径中各部分提取出来
    11. [filepath,name,ext] = fileparts(oldname)
    12. % 进行重命名
    13. newname = ['georec',name(7:end),'.mat']
    14. % 打印新文件名,查看是否有错
    15. disp(newname)
    16. % MATLAB重命名文件函数
    17. movefile(oldname,newname)
    18. end

            [MATLAB] fileparts函数介绍:

            函数功能:将一个文件的完整路径中各部分提取出来。

            语法格式:[pathstr, name, ext] = fileparts(filename)

            其中,filename是需要解析的文件的完整路径。fileparts将这个文件名(包含完整路径信息)各部分分别提取到三个变量中。pathstr是这个文件的路径名,name是文件名,ext是包含一个点号文件的扩展名(指定文件的类型)。

    四、代码调试

            本次调试培训模拟数据的规模Trainsize=800,迭代轮数epoch=100,测试规模为Testsize=50。

            Trainloss与Prediction如下图所示。

    五、重写dataset

            OpenFWI数据与代码:Open FWI | A collection of benchmark datasets for Seismic FWI with Machine Learning

             在进行研究的时候,如果不想用pytorch自带的数据集,想加载自己的数据集,就需要通过重写一个继承了Datasets的MyDataSet类来放置自己的数据集。在之前经常调用torchvision库中的数据集对象直接获取常用的数据集,例如:torchvision.datasets.CIFAR10(),这样获得的一个DataSet对象属于 torch.utils.data.Dataset 类,将获得的Dataset对象后传入DataLoader就可以实现加载批量数据参与训练了。

            MyDataSet中需要重写三个函数,如下:

    1. from torch.utils.data import Dataset
    2. class MyDataset(Dataset): #继承Datasets
    3. # 初始化函数:加载数据-初始化文件路径与文件名列表等,完成初始化该类的一些基本参数
    4. def __init(self):
    5. pass
    6. # 按照索引读取每个元素的具体内容,对数据进行预处理
    7. def __getitem__(self, idx): # 按照索引读取每个元素的具体内容
    8. pass
    9. # 初始化一些需要传入的参数及数据集的调用,返回的是数据集的长度
    10. def __len__(self):
    11. pass
  • 相关阅读:
    高教版《管理学》(第四版)重点知识整理
    强化学习:带MonteCarlo的Reinforce求解MountainCar问题
    深入理解强化学习——学习(Learning)、规划(Planning)、探索(Exploration)和利用(Exploitation)
    深入浅出 OkHttp 源码解析及应用实践
    如何看待现在的面试变成了八股文
    Android项目打包aar(kts)
    http的几种方法
    【Microelectronic Systems】
    0基础学习VR全景平台篇第113篇:矫正拉直全景图 - PTGui Pro教程
    前端element的el-tooltip鼠标经过显示文字,没有文字显示空黑框问题
  • 原文地址:https://blog.csdn.net/m0_53096519/article/details/134462598