本文介绍: 可以datasets中的Dataset实例看做是一张数据表map方法会将输入function按照指定的方式应用在每一行(每一行称为一个example)上。是map方法的核心,其介绍单独放在下列章节。

Dataset.map 方法概要

可以datasets中的Dataset实例看做是一张数据表map方法会将输入的function按照指定的方式应用在每一行(每一行称为一个example)上。本文采用一下示例进行说明:

from datasets import Dataset  #  datasets.__version__ = '2.13.0'
x = [{"text": "good", "label": 1}, {"text": "bad", "label": 0}, {"text": "great", "label": 2}]
ds = Dataset.from_list(x)

function是map方法的核心,其介绍单独放在下列章节。其它常用参数的说明如下:

function位置参数

function位置参数接受一个可调用对象,本质是该可调用对象数据表中的每行进行处理。按照布尔型位置参数with_indices, with_rank, batched取值function有8种签名。其中batched表示可调用对象一次处理一行还是多行,with_indices表示是否将样本索引编号传入可调用对象, with_rank表示是否将进程rank传入可调用对象

单样本处理(batched=False)

样本批处理(Batched=True)

设置batched=True时,可调用对象会对样本进行批处理,批的大小可以通过batch_size控制,默认一个批为1000条样本。此情况下签名应满足function(batch: Dict[str, List]) -> Dict[str, List]。batch中的键仍然是数据表中的列名称,值为多行数据组成的列表

def batched_func(batch):
	return {"text_length": [len(text) for text in batch["text]]}

print(ds.map(batched_func, batched=True, batch_size=2).data)

 

map方法返回torch.tensor会被转换list

x = [{'text': 'good', 'label': torch.tensor(1, dtype=torch.long)},
	 {'text': 'bad', 'label': torch.tensor(0, dtype=torch.long)},
	 {'text': 'great', 'label': torch.tensor(2, dtype=torch.long)}]
ds = Dataset.from_list(x)
print(type(x[0]["label"]))  # torch.Tensor

print(ds.map().data)

def to_tensor(exam):
	return {"label" : torch.tensor(exam["label"], dtype=torch.long)}

print(ds.map(to_tensor).data)  # 结果一致,数据表中的label均为整数型

原文地址:https://blog.csdn.net/weixin_44815943/article/details/134571497

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_3000.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注