目录
上周完成了FCNVMB的训练与测试,但是由于数据量较少,训练效果不明显。工作站运行forward.py代码生成模拟数据的时候出现错误,未解决。
本周计划使用matlab生成大量模拟数据,再进行训练查看训练效果,同时学习如何重写dataset。
单个速度模拟文件计算多炮数据:

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

[MATLAB] fullfile函数介绍:
函数功能:将多个字符串拼接为文件路径。
语法格式:f = fullfile(filepart1,filepart2,…,filepartN)
输出:将各个输入用"\"拼接起来;即:f = ‘filepart1\filepart2\…\filepartN’。
由于粗心,不小心将“georec”打成了“geroec”,因此使用matlab进行批量修改。错误情况:

代码如下:
- % 可以直接将该脚本创建在待需要修改的文件夹下
- path='******' % 输入带修改文件夹的地址
- cd(path)
-
- % 循环遍历所有文件
- for i = 1:800
- % 获取第i个文件名
- oldname = ['geroec',num2str(i),'.mat']
- % 打印原文件名,查看是否有错
- disp(oldname)
- % 将一个文件的完整路径中各部分提取出来
- [filepath,name,ext] = fileparts(oldname)
- % 进行重命名
- newname = ['georec',name(7:end),'.mat']
- % 打印新文件名,查看是否有错
- disp(newname)
- % MATLAB重命名文件函数
- movefile(oldname,newname)
- end
[MATLAB] fileparts函数介绍:
函数功能:将一个文件的完整路径中各部分提取出来。
语法格式:[pathstr, name, ext] = fileparts(filename)
其中,filename是需要解析的文件的完整路径。fileparts将这个文件名(包含完整路径信息)各部分分别提取到三个变量中。pathstr是这个文件的路径名,name是文件名,ext是包含一个点号文件的扩展名(指定文件的类型)。
本次调试培训模拟数据的规模Trainsize=800,迭代轮数epoch=100,测试规模为Testsize=50。
Trainloss与Prediction如下图所示。


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中需要重写三个函数,如下:
- from torch.utils.data import Dataset
-
- class MyDataset(Dataset): #继承Datasets
- # 初始化函数:加载数据-初始化文件路径与文件名列表等,完成初始化该类的一些基本参数
- def __init(self):
- pass
- # 按照索引读取每个元素的具体内容,对数据进行预处理
- def __getitem__(self, idx): # 按照索引读取每个元素的具体内容
- pass
- # 初始化一些需要传入的参数及数据集的调用,返回的是数据集的长度
- def __len__(self):
- pass