概述
自己需要完成一个基于时序信号数据的自编码器,但是在读取数据时遇到了一些困难。数据集(无标签)由csv文件构成,每个数据样本为一个csv文件,csv文件中的数据为4列512行。
博客园同步: pytorch读取自己的csv数据集
python代码
// 重写dataset类
import os
import torch
import pandas as pd
from torch.utils.data import Dataset
from torch.utils.data import DataLoader
class myDataset(Dataset):
def __init__(self, data_dir):
"""
data_dir: 数据文件路径
""""
# 读文件夹下每个数据文件的名称
self.file_name = os.listdir(data_dir)
self.data_path = []
# 把每一个文件的路径拼接起来
for index in range(len(self.file_name)):
self.data_path.append(os.path.join(data_dir, self.file_name[index]))
def __len__(self):
return len(self.file_name)
def __getitem__(self, index):
# 读取每一个数据
data = pd.read_csv(self.data_path[index], header=None)
# 转成张量
data = torch.tensor(data.values)
return data
// 实例化,读取数据
in_dir = r"E:202205train"
# 读取数据集
train_dataset = myDataset(data_dir=in_dir)
# 加载数据集
train_iter = DataLoader(train_dataset)
看看读取的数据的大小和格式
for x in enumerate(train_iter):
print(x)
print(type(x))
当index = 0 时的结果为
(0, tensor([[[
5.4378,
5.4378,
5.4378,
5.4378],
[
5.6137,
5.6137,
5.6137,
5.6137],
[
5.7855,
5.7855,
5.7855,
5.7855],
...,
[219.6983, 219.6983, 219.6983, 219.6983],
[214.3309, 214.3309, 214.3309, 214.3309],
[209.1339, 209.1339, 209.1339, 209.1339]]], dtype=torch.float64))
<class 'tuple'>
对于我来说,tuple不能直接用,需要取出里面的tensor
# 取出tuple的第二列
mydata = x[1]
print(mydata)
print(mydata.shape)
print(type(mydata))
当index = 0时的结果为
tensor([[[
5.4378,
5.4378,
5.4378,
5.4378],
[
5.6137,
5.6137,
5.6137,
5.6137],
[
5.7855,
5.7855,
5.7855,
5.7855],
...,
[219.6983, 219.6983, 219.6983, 219.6983],
[214.3309, 214.3309, 214.3309, 214.3309],
[209.1339, 209.1339, 209.1339, 209.1339]]], dtype=torch.float64)
torch.Size([1, 512, 4])
<class 'torch.Tensor'>
OK,能得到我想要的东西了。
参考文章: https://blog.csdn.net/qq_42653159/article/details/124511467.
最后
以上就是忐忑身影为你收集整理的pytorch读取自己的csv数据集的全部内容,希望文章能够帮你解决pytorch读取自己的csv数据集所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复