当前位置: 首页 > article >正文

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进行批量修改。错误情况:

        代码如下:

% 可以直接将该脚本创建在待需要修改的文件夹下
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如下图所示。

五、重写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中需要重写三个函数,如下:

from torch.utils.data import Dataset

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

http://www.kler.cn/a/132884.html

相关文章:

  • vue3 如何调用第三方npm包内部的 pinia 状态管理库方法
  • 有序数组的平方(leetcode 977)
  • 孙赢利_11月17日_超分周报
  • 【Android原生问题分析】夸克、抖音划动无响应问题【Android14】
  • SOLIDWORKS Toolbox:一键自动化,让紧固件与零部件管理更高效
  • 【SpringBoot】公共字段自动填充
  • 所见即所得的动画效果:Animate.css
  • 梦想编织者——Adobe Dreamweaver
  • 基于模拟退火算法优化概率神经网络PNN的分类预测 - 附代码
  • 无重复最长字符串(最长无重复子字符串),剑指offer,力扣
  • spark性能调优 | 默认并行度
  • ROS 学习应用篇(七)ROS中的坐标变换管理之tf初探
  • Zabbix5.0部署及应用
  • 教你轻松解决win系统ucrtbased.dll丢失的问题,亲测有效!
  • kafka入门(一):kafka消息消费
  • 若依中脱敏
  • C#WPF文本转语音实例
  • 人工智能发展前景
  • Flutter 应用启动从闪屏页短暂黑屏再到第一个页面
  • 超全整理,Pytest自动化测试框架-多进程(pytest-xdist)运行总结...
  • Web前端—移动Web第一天(平面转换、渐变、综合案例--播客网页设计)
  • 计算机网络八股文
  • 十三、Docker的安装
  • 【刷题专栏—突破思维】LeetCode 138. 随机链表的复制
  • 趣学python编程 (二、计算机硬件和用途介绍)
  • ai语音电销机器人电销行业要怎么降低封号率?