一个深度学习项目需要什么

DataLoader

1.数据预处理

在将数据提供给模型之前,DataLoader需要对数据进行预处理。预处理可以包括数据增强、归一化、裁剪、缩放等操作。这些操作可以提高模型的性能和准确度。在处理点云数据时,可以通过最远点下采样到固定的点数。

2.读取标签文件

我 1 2 3

爱 45 6

python

matrix_file = open("D:\py_code\w123.txt", 'r', encoding='utf-8')  # 打开文件
lines = matrix_file.readlines()  # 读取文件中的所有行
print(lines)
print(len(lines))

结果:
['我 1 2 3\n', '爱 45 6\n', 'python']
3

3.数据集的划分

生成数据集的训练集、测试集和全部数据集的文件列表并保存为txt文件,训练集的比例可以自行设置

4.加载数据类

MyDataset(Dataset)类包含__init__(),__len__(),__getitem__()等函数

Dataset:父类,所有开发人员训练、测试使用的所有数据集的一个模板或者抽象,该类是一个抽象类,所有的数据集想要在数据与标签之间建立映射,都需要继承这个类,所有的子类都需要重写__getitem__方法,该方法根据索引值获取每一个数据并且获取其对应的Label,子类也可以重写__len__方法,返回数据集的size大小

MyDataset:子类,是一个具体的数据集,继承父类的所有方法和属性

如何重写Dataset?

【深度学习】PyTorch Dataset类的使用与实例分析 - 知乎 (zhihu.com)

在明确如何组装路径、获取路径中的文件名以及获取具体数据对象后,重写方法

__init()存储数据目录下的所有文件名

__len__获取数据集的长度

__getitem__()返回的是数据项并非整个数据集,可以让索引与数据集中的具体数据对应起来

from torch.utils.data import Dataset

class MyDataset(Dataset):
    def __init__(self):#一个函数中的变量是不能拿到另外一个函数中使用的,self可以当做类中的全局变量
        print("1")
    def __len__(self):
        print("2")
    def __getitem__(self,idx):
        print("3")
dataset = MyDataset()#会自动调用__init__方法

结果:
1

5.创建数据加载器

data = MyDataset()#实例化
DataLoader = torch.utils.data.DataLoader(data, batch_size=64, shuffle=True)

将样本按照batch_size(每个批次包含的样本数量)进行分批,并在每个epoch(所有样本被遍历一遍)开始时随机打乱数据

Train

  1. def parse_args()

参数包含batch_size/model/epoch/learning_rate/gpu/optimizier/data_path/result_savepath/check_savepath/log_dir/decay_rate等

  1. def valid(model,loader)

在验证集上测试网络模型的性能,返回精度

3.def main(args)

设置在哪个gpu上跑

创建目录

设置日志文件,记录训练过程中的一些信息

加载训练和测试数据

加载模型

修改学习率(6条消息) 【深度学习】学习率 (learning rate)_深度学习的学习速率_JNingWei的博客-CSDN博客

训练:每一个epoch训练一次

使用验证集验证:验证集专门用来看看每经过1个epoch的训练之后网络性能如何,可以用测试集代替验证集(7条消息) 测试集可用作验证集;验证集不能来自训练集!(交叉验证,留一法)_验证集可以当测试集吗_doubleslow;的博客-CSDN博客

Test

  1. def parse_args()

参数包含batch_size/model/gpu/data_path/save_path/pth_path等

2.def main(args)

创建数据保存目录

加载测试数据

加载模型:训练得到的最优模型

猜你喜欢

转载自blog.csdn.net/m0_67357141/article/details/129556437
今日推荐