导航:首页 > 数据处理 > 怎么用dataset获取数据

怎么用dataset获取数据

发布时间:2025-02-20 02:08:13

1. PyTorch第六讲--Dataset和DataLoader

前面五讲都是开胃菜,都是基础中的基础,就好比是带领你学习了数学中加减乘除这几个运算符,仅仅只是学习了这几个运算符而已。从这一讲开始将进入编写深度学习代码阶段。在第一讲深度学习的七步法中,我将深度学习代码的模版拆解成七步。本小节将讲解七步中的第一步 Dataset 和第二步 DataLoader,这两步都是关于数据相关的内容。

Dataset 分为2种:PyTorch 内置的数据集和自己自定义的数据集,使用起来有所区别。因为Dataset 和 DataLoader 使用起来不分家,下面介绍的时候,分别按照数据集类别讲解不同数据集时如何使用。

内置的数据集有3种:FashionMNIST,ImageNet等。深度学习核心的内容不在数据读取封装这儿,找个实例,弄明白几个关键地方就足够了。自定义数据集,这个要重点看一下,论文复现时,数据集通常都需要自己写程序加载。

第一步:可视化(可选,但非常建议)。如果你非常熟悉数据集,那可以忽略。如果不熟悉,非常建议可视化一下数据,看看数据集概况。

第二步:加载内置的 Dataset。以 FashionMNIST 数据集为例。直接上代码,先看代码,然后拆解知识点。理解更深之后,第一步的 Dataset 类中有个 transform 参数,更深理解之后,你可能会自己书写 transform 函数。比如,你的任务有PyTorch 内置的数据集,但是使用方式不一样,此时就需要自己写 transform 函数。

对于 NLP任务,通常会用 transform 进行 tokenizer。

第三步:DataLoader。DataLoader 的输入是 Dataset,将数据集封装成迭代器,提供的功能有:按照 batch 读取、采样、shuffle、多线程读取等。没什么好说的,例子如下。没见过的参数,查 DataLoader 官方的 doc 就行。用的时候再查,应该把精力放在重点核心内容,重点核心内容要能手写,其他的边边角角非重点,用的时候再查就可以了。

使用时有4个关键属性:num_workers,collate_fn 函数。

num_workers 用于多进程读取数据。注意,这个属性会导致内存占用过多,因为每个 num_workder 会复制父进程的资源,建议是将 Python object 转换成 Pandas、Numpy、PyArrow 等对象。使用的时候,参考: DataLoader num_workers > 0 causes CPU memory from parent process to be replicated in all worker processes · Issue #13246 · pytorch/pytorch (github.com)

collate_fn 函数:用于定制化batch的输出。详解torch中的collate_fn参数 - 知乎 (hu.com) 在dataloader构建的时侯,collate_fn一般是不用特殊指明的,因为默认的方法会将数据组织成我们想要的方式。但是如果想定制**batch的输出形式的话,这个参数就非常重要了。比如在3D目标检测中,我们的batch形式希望是pointcloud_batch,gt_boxes_batch这种形式的时侯。**通常,如果自定义数据集读取的话,这个参数是一定要设置的。如果不设置,数据会分封装成 tuple,形如 [(data1, label1), (data2, label2), (data3, label3), ......],通常我们希望的格式是 (data1, data2, data3); (label1, label2, label3).

实战:NLP任务的典型处理过程。上面的例子只是为了让你掌握这个处理流程,无论怎么变,这三个流程都不会变。但具体使用的时候,细节可能会不一样,尤其是上面的 transform 步骤。下面我们再来看一个例子,如果你是做NLP的,这个例子应该被熟练掌握。

第一步:可视化。第二步:Dataset。NLP任务,通常在这一步需要完成:第三步:DataLoader。上面留了学习 collate_fn 函数的作业,这里我们详细讲解一下这个函数。collate_fn 的输入是:DataLoader 的一个batch;collate_fn 的功能是:依据定义的collate_fn函数对batch data 进行处理;划重点:collate_fn 要定义在最外层,因为DataLoader可能会多线程处理,定义在最外层可以确保每个线程都能访问这个函数。

自定义数据集。数据集的2种类别:map-style dataset 和 Iterable-style datasets。map-style dataset 的特点是:使用时通过 indices 或者 keys 获取数据。Iterable-style datasets 的使用场景是:当随机访问代价比较大或者压根不可能随机访问时使用。通常我们的数据集都是 Map-style dataset。这里我们学习如何自定义数据集加载过程也是以 Dataset 为例。自定义数据集,更多例子参考: Writing Custom Datasets, DataLoaders and Transforms — PyTorch Tutorials 1.13.1+cu117 documentation。

第一步:自定义dataset类,并实现3个方法:第二步:封装成 dataloader,用于 batch 化。第三步:iterate,并可视化。iterate 在 train 函数会使用,每次 iterate 都会对应一个 epoch 过程。如果想进一步控制每次iterate时数据的次序,可以参考 Samplers。

Transforms。很多时候,数据集不能直接满足训练的输入要求,需要进行一些转换。transform 用于修改 feature 和label,使数据满足训练的输入要求。在 “内置的数据集”章节中我们讲解过 transform 参数。如果我们的数据转换操作比较简单,可以像上面一样,书写一个函数。如果我们的场景需要组合多种数据转换操作,这个时候需要使用 transforms.Compose 进行封装。例子如下。

All TorchVision datasets have two parameters -transform to modify the features and target_transform to modify the labels - that accept callables containing the transformation logic. The torchvision.transforms mole offers several commonly-used transforms out of the box.

链接给了,自学:实践教程|源码级理解Pytorch中的Dataset和DataLoader (qq.com)

实践技巧。链接给了,自学:pytorch的dataloader如何读取变长数据 - 知乎 (hu.com); pytorch dataloader数据加载占用了大部分时间,各位大佬都是怎么解决的? - 知乎 (hu.com)

实战。中午午休时间,看着办公室很多人都在睡觉,也有人在默默看电脑,忽然想到这个系列是为了从零到一学会复现任何一篇Paper。既然是从零到一复现论文,那么真刀真枪找个项目来干一下。这里我们选择 codertimo/BERT-pytorch: Google AI 2018 BERT pytorch implementation (github.com) 仓库,验证一下我们刚才学习的。具体看的过程只能你自己去看了,或者等我出视频的时候,带领你一起读源码,Bert非常重要,一定要熟练掌握,要能背下来。你之所以觉得一些大佬牛逼,无他,手熟尔,他在夜深人静时,一定在反复看源码。

2. delphi 如何通过Tdataset数据集 获取数据库列名 以及列数。

1、数据库列数可以用 TDATASET的FieldCount属性获得。
2、数据库列名可以做一个循环得到,例如:
var
i:integer
begin
for i := 0 to Table1.FieldCount-1 do
showmessage(Table1.Fields[i].FieldName);
end;

3. 如何取DataSet第一个表中第一行一列的数据

代码如下:

private void button1_Click(object sender, EventArgs e)

{

//假定目前dataset里只有一个表

DataTable dt = ds.Tables[0];

string textname = "tn";//必须保证有这行

DataRow dr = dt.Select("text='{0}'", textname)[0];

string suibe = dr[2].ToString();

//或者

string suibe1 = dr["suibe"].ToString();

//现在是给textbox赋值

//其他列类似操作

}

(3)怎么用dataset获取数据扩展阅读

DataSet用法详细

一、特点介绍

1、处理脱机数据,在多层应用程序中很有用。

2、可以在任何时候查看DataSet中任意行的内容,允许修改查询结果的方法。

3、处理分级数据

4、缓存更改

5、XML的完整性:DataSet对象和XML文档几乎是可互换的。

二、使用介绍

1、创建DataSet对象:

DataSetds = new DataSet("DataSetName");

2、查看调用SqlDataAdapter.Fill创建的结构

da.Fill(ds,"Orders");

DataTabletbl = ds.Table[0];

foreach(DataColumncol in tbl.Columns)

Console.WriteLine(col.ColumnName);

阅读全文

与怎么用dataset获取数据相关的资料

热点内容
厂里产品的工艺是怎么知道的 浏览:376
产品如何影响经理 浏览:641
拉货信息费一般多少 浏览:872
女性去斑产品有哪些 浏览:854
中农联楚雄国际农产品交易中心怎么样 浏览:488
哪个软件查正晚点信息 浏览:184
郴州医保信息在哪个网站查 浏览:386
水家湖镇在草莓市场哪个中学 浏览:513
为什么市场上的毛肚有药味 浏览:739
番薯怎么卖成农产品 浏览:891
开封祛痘项目代理多少钱 浏览:899
熟食如何做代理 浏览:243
哪些电子产品可以代工 浏览:351
魔动核手办如何代理 浏览:878
票据信息怎么填 浏览:531
全世界网络数据量有多少 浏览:566
输出技术成交金额怎么计算 浏览:878
分析数据变化趋势是什么意思 浏览:302
证券市场为什么大涨 浏览:789
巴南家具交易怎么样 浏览:860