网站首页 > 技术文章 正文
引入
构建模型的基本方法,我们了解了。接下来,我们就要弄明白怎么对数据进行预处理,然后加载数据,我们以前手动加载数据的方式,在数据量小的时候,并没有太大问题,但是到了大数据量,我们需要使用 shuffle, 分割成mini-batch 等操作的时候,我们可以使用PyTorch的API快速地完成这些操作。
Dataset和DataLoader
Dataset是一个包装类,用来将数据包装为Dataset类,然后传入DataLoader中,我们再使用DataLoader这个类来更加快捷的对数据进行操作。
DataLoader是一个比较重要的类,它为我们提供的常用操作有:batch_size(每个batch的大小), shuffle(是否进行shuffle操作), num_workers(加载数据的时候使用几个子进程)
现在,我们先展示直接使用 TensorDataset 来将数据包装成Dataset类
这里差个题外话,不知道为什么,出现这个错误,
torch_dataset = Data.TensorDataset(data_tensor=x, target_tensor=y)
TypeError: __init__() got an unexpected keyword argument 'data_tensor'
但是,改成deal_dataset = TensorDataset(x_data, y_data)这样就OK了。
接下来,我们来继承 Dataset类 ,写一个将数据处理成DataLoader的类。
当我们集成了一个 Dataset类之后,我们需要重写 len 方法,该方法提供了dataset的大小; getitem 方法, 该方法支持从 0 到 len(self)的索引
class DealDataset(Dataset):
"""
下载数据、初始化数据,都可以在这里完成
"""
def __init__(self):
xy = np.loadtxt('../dataSet/diabetes.csv.gz', delimiter=',', dtype=np.float32) # 使用numpy读取数据
self.x_data = torch.from_numpy(xy[:, 0:-1])
self.y_data = torch.from_numpy(xy[:, [-1]])
self.len = xy.shape[0]
def __getitem__(self, index):
return self.x_data[index], self.y_data[index]
def __len__(self):
return self.len
# 实例化这个类,然后我们就得到了Dataset类型的数据,记下来就将这个类传给DataLoader,就可以了。
dealDataset = DealDataset()
train_loader2 = DataLoader(dataset=dealDataset,
batch_size=32,
shuffle=True)
for epoch in range(2):
for i, data in enumerate(train_loader2):
# 将数据从 train_loader 中读出来,一次读取的样本数是32个
inputs, labels = data
# 将这些数据转换成Variable类型
inputs, labels = Variable(inputs), Variable(labels)
# 接下来就是跑模型的环节了,我们这里使用print来代替
print("epoch:", epoch, "的第" , i, "个inputs", inputs.data.size(), "labels", labels.data.size())
参考:
https://blog.csdn.net/zw__chen/article/details/82806900
猜你喜欢
- 2025-09-14 微信小程序实现蓝牙打印小票功能_蓝牙小票打印软件
- 2025-09-14 一篇文章就够!ArrayList源码分析及扩容机制
- 2025-09-14 为啥count(*)会这么慢?别再被公众号误导了!
- 2025-09-14 电子表格函数入门(5)- 查找函数INDEX和MATCH组合
- 2025-09-14 Python数据分析笔记#8.1 层次化索引
- 2025-09-14 看完这篇ArrayList,offer还不来?
- 2025-09-14 选数【Python和C++实现】_选择语句python
- 2025-09-14 笔试编程 | 二分查找、数组、排序
- 2025-09-14 跟我学量化选股之5:构建模型_股票量化建模
- 2025-09-14 Excel函数解答统计指定费用问题_如何统计各种费用表
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)