datasets.Dataset.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方法的核心,其介绍单独放在下列章节。其它常用参数的说明如下:

  • remove_columns:当function可调用对象处理完数据表中的全部样例之后,可以将指定的列删掉。在文本处理中,一般会将编码之后的text原文删除掉。
  • fn_kwargs: 传入可调用对象function的关键词参数。
  • desc: 自定义的描述性信息。
     

function位置参数

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

单样本处理(batched=False)

  • 当设置batched=False时,可调用对象依次处理每一行。在默认情况下,可调用对象的签名为function(example: Dict[str, Any]) -> Dict[str, Any],example中的键为数据表中的所有列。可使用input_columns指定哪些列进入example中。可调用对象应该返回一个Dict对象,并使用返回结果更新数据表。

    from typing import Dict, Anydef func(exam: Dict[str, Any]) -> Dict[str, Any]:return {"text_length": len(exam["text"])}print(ds.map(func).data)
    
  • 如果指定with_indices=True,则可调用对象中应该指定一个位置参数用于接受样本索引编号。

    def func_with_indices(exam, index):return {"text_length": len(exam["text"]), "row_index": int(index)}print(ds.map(func_with_indices, with_indices=True, batched=False).data)
    
  • 如果指定with_rank=True,则可调用对象中应指定一个位置参数用于接受进程rank。并且应当设置num_proc 大于1,否则进程rank的值是相同的。

    def func_with_rank(exam, rank):return {"text_length": len(exam["text"]), "proc_rank": int(rank)}print(ds.map(func_with_rank, with_rank=True, batched=False, num_proc=2).data)
    
  • 如果同时指定with_indices=Truewith_rank=True,则可调用对象中接受样本索引编号的位置参数应置于接受进程rank位置参数之前。如def function(example, idx, rank): ...

    def func_with_index_rank(exam, index, rank):return {"text_length": len(exam["text"]), "row_index": int(index), "proc_rank": int(rank)}print(ds.map(func_with_rank, with_indices=True, with_rank=True, batched=False, num_proc=2).data)
    

样本批处理(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.Tensorprint(ds.map().data)def to_tensor(exam):return {"label" : torch.tensor(exam["label"], dtype=torch.long)}print(ds.map(to_tensor).data)  # 结果一致,数据表中的label均为整数型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/165306.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端开发工具集合

文章目录 Visual Studio Code (VS Code)安装及配置一、安装二、常用插件三、相关配置四、统一配置代码 Visual Studio Code (VS Code)安装及配置 一、安装 下载地址:https://code.visualstudio.com/ ?> VS Code 下载慢,解决办法请点击 双击下载文件…

Java零基础——SpringMVC篇

1.SpringMVC介绍 SpringMVC是Spring框架中的一个组件,是一个轻量级的web的MVC框架,充当controller,其本质就是一个Servlet。 1.1 传统Servlet的不足 每个请求,都需要定义一个Servlet。虽然可以在service方法中,根据业务标识进行…

【Linux 带宽限速】trickle,限制docker 上传速度

限制docker 上传速度 然而,你可以使用第三方工具来实现这个目的。一个常用的工具是 trickle,它可以模拟网络带宽。 首先,你需要安装 trickle。在 Ubuntu 上,可以使用以下命令安装: sudo apt-get install trickle然后…

deepxde 源码阅读笔记(长期更新)

2023.11.23 阅读的deepxde version: 1.9.0 1. train_aux_vars ,即pde当中的第三个参数 这个变量的含义困惑很久。最后发现就是operator learning的PDEs方程parameters。 脉络:def pde aux_vars-> deepxde目前支持tf1最多,但是对其他框架…

系列二、Spring整合单元测试

一、概述 Spring中获取bean最常见的方式是通过ClassPathXmlApplicationContext 或者 AnnotationConfigApplicationContext的getBean()方式获取bean,那么在Spring中如何像在SpringBoot中直接一个类上添加个SpringBootTest注解,即可在类中注入自己想要测试…

优秀的企业协同OA系统如何促进团队协作?

优秀的企业协同OA系统可以帮助团队协同工作变得更简单、更高效。 一、以下是一些优秀的企业协同OA系统可以帮助团队协作的方法: 1、提高工作效率 优秀的企业协同OA系统可以提高工作效率,减少工作的重复性和低效率。例如,可以使用共享日历和…

vue2生命周期

前言 vue的生命周期其实可以分为两块,一个是vue实例的生命周期,一个是组件的生命周期。 vue实例的生命周期方法共有4个:$mout,$forceUpdate,$nextTick,$destroy vue组件的生命周期钩子共有8个:beforeCreate,created,beforeMount,mounted,beforeUpdate, updated,beforeDestr…

C/C++小写字母的判断 2022年3月电子学会中小学生软件编程(C/C++)等级考试一级真题答案解析

目录 C/C小写字母的判断 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C小写字母的判断 2022年3月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 输入一个字符,判断是否是英文小…

iframe内部子页面与外部主页面通讯

文章目录 一、问题二、解决2.1、子页面2.2、主页面 三、知识点3.1、[浏览器兼容性](https://developer.mozilla.org/zh-CN/docs/Web/API/Window/postMessage#%E6%B5%8F%E8%A7%88%E5%99%A8%E5%85%BC%E5%AE%B9%E6%80%A7)3.2、详解3.2.1、发送方3.2.2、接收方 一、问题 如上所示&a…

被删数据库+勒索

被删数据库勒索 – WhiteNights Site 标签:日志 快照在手,天下我有 服务器又给人黑了。这次是给人黑了数据库,被人删库勒索,先放图吧。我还花了今天一个下午的时间查修这个漏洞,导致网站有接近6个小时都没法访问。 …

编程示例: Session Id的生成

实现思路 Session的实现方式如下:在用户第一次登录的时候,系统为它分配一个唯一Id(被称为Session Id)作为标识,并且 记录下这个用户的用户名、要登录的账套名、用户拥有的权限等,以Id为键,用户名、账套名等信息为值保…

云原生Kubernetes系列 | Kubernetes静态Pod的使用

云原生Kubernetes系列 | Kubernetes静态Pod的使用 静态pod不建议在master上操作,因为master上跑的是集群核心静态pod,如果配置失败,会导致集群故障。建议在knode1或knode2上去做。 kubernetes master节点上的核心组件pod其实都是静态pod: [root@k8s-master ~]# ls /etc/ku…

java中锁的使用-实战

技术主题 技术原理 在实际的业务中,为了保证线程安全,会进行对一些逻辑进行加锁,保证当前只有一个线程在操作。在代码中,我们经常使用两种方式进行加锁,来保证线程安全。一种是synchronized关键字,另一种是ReentrantLock加锁。写这一份的博客,就是为了记录下锁的基本使…

五分钟,Docker安装flink,并使用flinksql消费kafka数据

1、拉取flink镜像,创建网络 docker pull flink docker network create flink-network2、创建 jobmanager # 创建 JobManager docker run \-itd \--namejobmanager \--publish 8081:8081 \--network flink-network \--env FLINK_PROPERTIES"jobmanager.rpc.ad…

Redis 命令行 redis-cli 介绍

文章目录 前言1. 连接 Redis 服务2. 从其他程序获取输入3. 连续执行相同的命令4. CSV 输出5. 输出帮助信息6. 清空屏幕7. 连续监控统计信息8. 输出大 key 报告9. 监控 Redis 执行的命令 前言 redis-cli 是 Redis 自带的命令行工具,是运维和开发人员常用的工具&…

【C++干货铺】适配器 | stack | queue

个人主页点击直达:小白不是程序媛 C系列学习专栏:C干货铺 代码仓库:Gitee 目录 stack的介绍和使用 stack的介绍 stack的使用 queue的介绍和使用 queue的介绍 queue的使用 容器适配器 什么是适配器 STL中stack和queue的底层结构 d…

Doris扩容和缩容(六)

Doris 可以很方便的扩容和缩容 FE、BE、Broker 实例。 FE 扩容和缩容 可以通过将 FE 扩容至 3 个以上节点来实现 FE 的高可用。 1)使用 MySQL 登录客户端后,可以使用 sql 命令查看 FE 状态,目前就一台 FE mysql -h hadoop1 -P 9030 -uroo…

Python——基于YOLOV8的车牌识别(源码+教程)

目录 一、前言 二 、完成效果 三、 项目包 四、运行项目 (教程) 一、前言 YOLOv8LPRNet车牌定位与识别https://www.bilibili.com/video/BV1vk4y1E7MZ/ 最近做了有一个车牌识别的小需求,今天完成了,在此记录和分享 首先&#x…

办公技巧:Word中插入图片、形状、文本框排版技巧

目录 一、插入图片排版技巧 二、添加形状排版技巧 三、插入“文本框”排版技巧 我们平常在制作word时候经常会遇到插入选项卡下的图片、形状和文本框这三种情况下,那么如何使得Word文档当中添加这三个元素的同时,又能保证样式美观呢,今天小…

ComfyUI搭建使用教程

ComfyUI 是一个基于节点流程式的stable diffusion AI 绘图工具WebUI, 你可以把它想象成集成了stable diffusion功能的substance designer, 通过将stable diffusion的流程拆分成节点,实现了更加精准的工作流定制和完善的可复现性。但节点式的工…