昇思25天學習打卡營第04天 | 數據集 Dataset

昇思25天學習打卡營第04天 | 數據集 Dataset

文章目錄

  • 昇思25天學習打卡營第04天 | 數據集 Dataset
    • 數據集加載
    • 數據集迭代
    • 數據集的變換
      • shuffle
      • map
      • batch
    • 自定義數據集
      • 可隨機訪問數據集對象
      • 可迭代數據集
      • 生成器
    • 總結
    • 打卡

數據集Dataset對原始數據進行封裝、變換,為神經網絡提供高質量的輸入數據。
mindspore.dataset內置了的文本、圖像、音頻等數據集的加載接口,也提供創建自定義數據集的方法。

數據集加載

mindspore.dataset僅支持解壓后的數據文件,對于壓縮包文件,需要先解壓才能創建數據集:

from download import downloadurl = "https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/" \"notebook/datasets/MNIST_Data.zip"
path = download(url, "./", kind="zip", replace=True)					 # 下載并解壓到"./"目錄下train_dataset = MnistDataset("MNIST_Data/train", shuffle=False)			# 通過數據集的文件目錄直接創建dataset

數據集迭代

數據集可以通過create_tuple_iteratorcreate_dict_iterator接口創建迭代器進行訪問。
訪問的類型默認為Tensor,如果設置output_numpy=True,則訪問Numpy

def visualize(dataset):figure = plt.figure(figsize=(4, 4))cols, rows = 3, 3plt.subplots_adjust(wspace=0.5, hspace=0.5)for idx, (image, label) in enumerate(dataset.create_tuple_iterator()):figure.add_subplot(rows, cols, idx + 1)plt.title(int(label))plt.axis("off")plt.imshow(image.asnumpy().squeeze(), cmap="gray")if idx == cols * rows - 1:breakplt.show()

數據集的變換

shuffle

shuffle可以對數據集進行打亂,消除數據排列不均勻的問題。
op-shuffle
mindspore.dataset可以在加載數據集的時候配置shuffle=True,或者通過mindspore.dataset.shuffle(buffer_size)進行打亂。

map

map是數據預處理的關鍵,可以針對數據集的指定列添加變換,將指定變換應用于該列數據的每個元素,并返回變換后的新元素。

train_dataset = train_dataset.map(vision.Rescale(1.0 / 255.0, 0), input_columns='image')

batch

將數據集中的數據打包為batch有利于在資源受限的情況下使用梯度下降,可以保證梯度下降的隨機性和優化計算量。

train_dataset = train_dataset.batch(batch_size = 32)

通過batch后數據增加一維,大小為batch_size

自定義數據集

通過構造自定義數據加載類和自定義數據集生成函數的方法來生成數據集,并通過GeneratorDataset接口實現數據集的加載
GeneratorDataset支持可隨機訪問數據集對象可迭代數據集對象生成器構造數據集。

可隨機訪問數據集對象

是指實現了__getitem____len__方法的數據集,可以通過索引/鍵直接訪問對應位置的數據。

class RandomAccessDataset:def __init__(self):self._data = np.ones((5, 2))self._label = np.zeros((5, 1))def __getitem__(self, index):return self._data[index], self._label[index]def __len__(self):return len(self._data)loader = RandomAccessDataset()
dataset = GeneratorDataset(source=loader, column_names=["data", "label"])

可迭代數據集

是指實現了__iter____next__方法的數據集,可以通過迭代的方式獲取數據樣本,適用于隨機訪問成本太高或不可行的情況。

class IterableDataset():def __init__(self, start, end):'''init the class object to hold the data'''self.start = startself.end = enddef __next__(self):'''iter one data and return'''return next(self.data)def __iter__(self):'''reset the iter'''self.data = iter(range(self.start, self.end))return selfloader = IterableDataset(1, 5)
dataset = GeneratorDataset(source=loader, column_names=["data"])

生成器

生成器屬于可迭代的數據集類型,依賴于python的generator返回數據,直到生成器拋出StopIteration異常。

def my_generator(start, end):for i in range(start, end):yield idataset = GeneratorDataset(source=lambda: my_generator(3, 6), column_names=["data"])

總結

通過這一節的學習,對MindSpore中Dataset的使用方法有了一定的了解,掌握了通過download下載/解壓數據并創建數據集,通過迭代器方位數據集中的元素,通過shuffle打亂數據,通過map變換數據以及將數據打包為固定大小的patch。此外,還了解了自定義數據集的創建以及自定義數據集需要實現的方法,為之后的訓練數據管理和處理打下了基礎。

打卡

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/39357.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/39357.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/39357.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux 靜態庫 和 動態庫

在Linux系統上,庫文件用于共享和重用代碼。根據使用方式和鏈接方式的不同,庫文件可以分為靜態庫和動態庫。 靜態庫(Static Library) 靜態庫是在編譯時被嵌入到最終可執行文件中的庫。靜態庫的擴展名通常是.a。 特點 獨立性&am…

ADOP帶你了解:SFP 光模塊:構建高速網絡的關鍵技術

在數字化時代,企業運營的效率往往取決于數據傳輸的速度。因此,構建一個可靠的網絡基礎架構至關重要。本指南深入探討了小型可插拔(SFP)光收發器的關鍵作用,這些設備確保了網絡中數據的高效和安全流動。SFP光收發器的設…

【Rust入門教程】hello world程序

文章目錄 前言Hello World程序運行總結 前言 對于學習任何一種新的編程語言,我們都會從編寫一個簡單的Hello World程序開始。這是一個傳統,也是一個開始。在這篇文章中,我們將一起學習如何在Rust中編寫你的第一個程序:Hello Worl…

【C語言內存函數】

目錄 1.memcpy 使用 模擬實現 2.memmove 使用 模擬實現 3.memset 使用 4.memcmp 使用 1.memcpy 使用 void * memcpy ( void * destination, const void * source, size_t num );目的地址 源地址 字節數 destination:指向要復制內…

20240703 每日AI必讀資訊

🤖爆火Character AI慘遭閹割 美國00后集體“失戀” - Character AI曾是00后最火爆的社交軟件,但用戶發現對話模型變得冷淡,失去趣味。 - 用戶流失嚴重,面臨成本高、競爭激烈的挑戰,甚至遭到挖角。 - 盡管困難重重&a…

淘寶API接口開發系列:淘寶訂單詳情API接口與物流電子面單API接口概述

淘寶訂單詳情API接口與物流電子面單API接口概述 在電子商務領域,API(應用程序接口)扮演著至關重要的角色,它們使得不同的系統能夠相互通信,實現數據的共享和交換。淘寶作為國內最大的電商平臺之一,其提供的…

C# 多線程造成CPU占用率高

當線程多的時候就會造成CPU內存占用率過高 private void button1_Click(object sender, EventArgs e){Thread TH1, TH2, TH3, TH4, TH5;TH1 new Thread(Thread1){IsBackground true};TH2 new Thread(Thread2){IsBackground true};TH3 new Thread(Thread3){IsBackground t…

最小步數模型——AcWing 1107. 魔板

最小步數模型 定義 最小步數模型通常是指在某種約束條件下,尋找從初始狀態到目標狀態所需的最少操作或移動次數的問題。這類問題廣泛存在于算法、圖論、動態規劃、組合優化等領域。具體來說,它涉及確定一個序列或路徑,使得按照特定規則執行…

jenkins在使用pipeline時,為何沒有方塊形視圖

項目場景: 安裝完Jenkins時后,通過pipeline創建的項目任務。 問題描述 在立即構建后,沒有顯示每個階段的視圖。 原因分析: 原因是,剛安裝的Jenkins,這個視圖不是Jenkins自帶的功能,而必須安裝…

《5小時吃透小red書》讀書筆記之打造爆款筆記原理

1.流量推送邏輯: 一篇筆記發布并審核后,平臺根據內容提取關鍵詞,開始小范圍發布測試;初次先分發到1000個興趣用戶,根據這1000個用戶等反饋決定是否給該筆記更多流量和推薦;考核標準是點擊率、完播率、互動…

高校實訓室:老年實訓室的教學案例

本文以高校老年實訓室為研究對象,通過詳細分析具體的教學案例,探討了老年實訓室在提升學生專業素養和實踐能力方面的重要作用。文中介紹了多個具有代表性的教學案例,包括健康評估、康復護理和心理關懷等方面,闡述了其教學目標、實…

EDA 虛擬機 Synopsys Sentaurus TCAD 2017.09 下載

下載地址(制作不易,下載使用需付費,不能接受的請勿下載): 鏈接:https://pan.baidu.com/s/1327I58gvV1usWSqSrG7KXw?pwdo03i 提取碼:o03i

Boss直聘,無良廠商,亂封號

耽誤招工作,瞎吉兒封號 哥們單身 需要女生多的公司 問一下都不行,什么尿性 直接就給你封了 裝什么呢 辣雞boss 倒閉吧趕緊 我是狗子,希望你倒閉!

枚舉類示例

package net.cnki.editor.costcenter.pojo.enums;import lombok.Getter;import java.util.Arrays;/*** 費用枚舉接口*/ public interface CosttypeEnumInterface {/*** 費用類型和費用信息-> 費用性質, 支付人 , 收取人, 費用信息狀態*/Getterenum CosttypePayerAndReceiveE…

使用PHP實現Web爬蟲

web爬蟲是一種自動化工具,可以瀏覽互聯網上的網頁,收集信息并存儲在一個數據庫中。在今天的大數據時代,web爬蟲越來越重要,因為它可以查找大量信息并進行數據分析。在本文中,我們將學習如何使用php編寫web爬蟲&#xf…

Radxa 學習摘錄

文章目錄 1、參考資料2、硬件知識CIF 和 ISP 3、shell4、交叉編譯工具鏈5、問題6、DTS7、驅動 1、參考資料 技術論壇(推薦) 官方資料下載 wiki資料 u-boot 文檔 u-boot 源碼 內核文檔 內核源碼 原理圖 radxa-repo radxa-build radxa-pkg radxa-doc…

尋找最適合你的交易風格

與Eagle Trader一起,您將擁有一位堅不可摧的合作伙伴,為您的交易之路增添堅實信心,并重塑交易體驗的每一個細節。我們量身定制的交易環境,更能讓您精準捕捉并駕馭符合您獨特交易風格的卓越條件,讓交易之旅更加自由暢快…

Python容器 之 字典--定義

1.字典的介紹 1, 字典 dict, 使用 {} 表示 2, 字典是由鍵(key)值(value)對組成的, key: value 3, 一個鍵值對是一組數據, 多個鍵值對之間使用 逗號隔開 4, 在一個字典中, 字典的鍵 是不能重復的,如果重復原數據會被覆蓋 5, 字典中的鍵 主要使用 字符串類型, 可以是…

Mac可以卸載掉系統自帶的軟件嗎 Mac第三方軟件無法卸載是為什么

在使用Mac電腦時,有時候我們會發現系統預裝的一些應用并不常用或者不符合個人需求,想要將它們卸載掉。然而,對于系統自帶的軟件,卸載并不簡單,需要謹慎對待以免影響系統穩定性和功能正常運行。下面我們來看看Mac可以卸…

Firefox 編譯指南2024 Windows10-使用Git 管理您的Firefox(五)

1. 引言 在現代軟件開發中,版本控制系統(VCS)是不可或缺的工具,它不僅幫助開發者有效管理代碼的變化,還支持團隊協作與項目管理。Mercurial 是一個高效且易用的分布式版本控制系統,其設計目標是簡潔、快速…