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.pswp.cn/news/165306.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/165306.shtml
英文地址,請注明出處:http://en.pswp.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的流程拆分成節點,實現了更加精準的工作流定制和完善的可復現性。但節點式的工…