这是一个使用PyTorch实现的分类模型。主要流程如下:
读取数据:从指定路径中读取数据,其中每个文件夹表示一个类别,每个文件夹内有多个子文件夹,表示不同的样本,每个样本包含多个csv文件,记录了该样本在时间序列上的多个特征值。
数据预处理:对于每个特征值进行平方开根号处理,并将所有特征值存入Data列表中。同时将标签Label存入另一个列表中,并为其赋予唯一的数字编号。
将数据转换为张量:将Data和Label转换为PyTorch中的tensor类型,并打乱顺序。
创建数据集类:自定义MyDataset类继承torch.utils.data.Dataset,重载init、getitem、len函数,用于后续创建数据加载器。
创建训练/测试数据加载器:将训练/测试集分别按照batch_size大小划分为若干批次,并使用shuffle=True参数来随机打乱每一批次的顺序。
定义模型:定义一个具有一层全连接层(nn.Linear)和softmax激活函数(nn.Softmax)的神经网络模型。输入是一个time_steps * input_size大小的二维张量,输出是num_classes个类别的概率分布。
定义损失函数和优化器:使用二元交叉熵损失函数(nn.BCEWithLogitsLoss)作为评价模型的标准,并使用Adam优化算法(torch.optim.Adam)来更新模型参数。
开始训练:对于每个epoch,将训练数据加载器中的所有批次数据输入到模型中进行前向传播、反向传播和参数更新。计算每个epoch的平均损失和准确率,并保存在Accuracy和Loss列表中。
测试模型:使用测试数据加载器对已经训练好的模型进行测试,并计算测试集上的平均损失和准确率。