DataSet-深度學習中的常見類

深度學習中Dataset類通用的架構思路

Dataset 類設計的必備部分

1. 初始化 __init__

  • 配置和路徑管理:保存 config,區分 train/val/test 路徑。
  • 加載原始數據:CSV、JSON、Numpy、Parquet 等。
  • 預處理器/歸一化器:如 StandardScaler,或者 Tokenizer(在 NLP 任務里)。
  • 準備輔助信息:比如 meta 特征、文本 embedding。
  • 構造樣本列表(self.samples):保證后面取樣時直接 O(1) 訪問。

2. 數據預處理

  • normalize / inverse_transform:數值數據標準化和反變換。
  • tokenize / pad:文本分詞、對齊。
  • feature engineering:特征拼接、缺失值處理。

3. 核心接口

  • __len__: 返回數據集樣本數。
  • __getitem__: 返回一個樣本(通常是 (features, label) 的 tuple 或 dict)。

4. 可選接口

  • get_scaler(): 返回歸一化器。
  • get_vocab(): NLP 任務里返回詞表。
  • collate_fn: 定義 batch 內如何拼接(特別是變長序列)。
  • save_cache / load_cache: 大數據集可以存緩存,避免每次都重新處理。

5. 繼承關系

  • BaseDataset:負責

    • 通用邏輯(加載文件、歸一化、拼裝 sample)。
    • 提供鉤子函數,比如 load_paths(flag)process_sample(sample)
  • 子類:只需要實現 路徑差異樣本加工方式差異


通用代碼結構示意

class BaseDataset(Dataset):def __init__(self, config, flag="train", scaler=None):self.config = configself.flag = flagself.scaler = scaler or StandardScaler()self.samples = []self._load_data()self._build_samples()def _load_data(self):"""子類可重寫,加載原始數據"""raise NotImplementedErrordef _build_samples(self):"""子類可重寫,拼裝每個樣本的x, y, feats"""raise NotImplementedErrordef __len__(self):return len(self.samples)def __getitem__(self, idx):return self.samples[idx]def get_scaler(self):return self.scalerdef inverse_transform(self, x):return x * self.std + self.mean

子類只管:

class ElectricityDataset(BaseDataset):def _load_data(self):# 只寫路徑和文件加載邏輯passdef _build_samples(self):# 根據任務需要定義樣本結構pass

調用示例

data_config = {"root": "data/electricity/","train_file": "train.json","train_meta_file": "train_meta.npy","train_news_file": "train_news.npy"
}train_config = {"batch_size": 64,"learning_rate": 1e-3,"epochs": 20
}train_ds = ElectricityDataset(data_config, flag="train")train_loader = DataLoader(train_ds,batch_size=train_config["batch_size"],shuffle=True,collate_fn=custom_collate_fn
))

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

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

相關文章

【VC】 error MSB8041: 此項目需要 MFC 庫

? 目錄 ?🛫 導讀問題背景環境1?? 核心原因:MFC 組件缺失或配置不當2?? 解決方案:安裝 MFC 組件并驗證配置2.1 步驟1:檢查并安裝 MFC 組件2.2 步驟2:檢查并修正項目配置2.3 步驟3:針對特定場景的補充方…

Java零基礎學習Day10——面向對象高級

一.認識final1.含義final關鍵字是最終的意思,可以修飾:類,方法,變量修飾類:該類被稱為最終類,特點是不能被繼承修飾方法:該方法被稱為最終方法,特點是不能被重寫了修飾變量&#xff…

Qt中解析JSON文件

Qt中解析JSON文件 在Qt中解析JSON字符串主要有兩種方式:使用QJsonDocument類或使用QJsonDocument結合QVariant。以下是詳細的解析方法: 使用QJsonDocument(推薦) 這種方式的主要相關類如下: QJsonDocument: QJsonDocum…

深度解析HTTPS:從加密原理到SSL/TLS的演進之路

在互聯網時代,數據安全已成為不可忽視的基石。當我們在瀏覽器地址欄看到"https://"前綴和那把小小的綠色鎖圖標時,意味著正在進行一場受保護的通信。但這層保護究竟是如何實現的?HTTPS、SSL和TLS之間又存在著怎樣的聯系與區別?本文將深入剖析這些技術細節,帶你全…

Flutter 官方 LLM 動態 UI 庫 flutter_genui 發布,讓 App UI 自己生成 UI

今日,Flutter 官方正式發布了它們關于 AI 大模型的 package 項目: genui ,它是一個非常有趣和前沿的探索類型的項目,它的目標是幫助開發者構建由生成式 AI 模型驅動的動態、對話式用戶界面: 也就是它與傳統 App 中“寫…

Redis常用數據結構及其底層實現

Redis常用數據結構主要有String List Set Zset Hash BitMap Hyperloglog Stream GeoString:Redis最常用的一種數據結構,Sting類型的數據存儲結構有三種int、embstr、raw1.int:用來存儲long以下的整形embstr raw 都是用來存字符串,其中小于44字節的字符串用embstr存 …

O3.4 opencv圖形拼接+答題卡識別

一圖形拼接邏輯導入必要的庫pythonimport cv2 import numpy as np import sys導入cv2庫用于圖像處理,numpy庫用于數值計算,sys庫用于與 Python 解釋器進行交互,例如退出程序。定義圖像顯示函數def cv_show(name, img):cv2.imshow(name, img)c…

SQL注入常見攻擊點與防御詳解

SQL注入是一種非常常見且危險的Web安全漏洞。攻擊者通過將惡意的SQL代碼插入到應用程序的輸入參數中,欺騙后端數據庫執行這些非預期的命令,從而可能竊取、篡改、刪除數據或獲得更高的系統權限。以下是詳細、準確的SQL注入點分類、說明及舉例:…

EKSPod 資源利用率配置修復:從占位符到完整資源分析系統

概述 在 Kubernetes 集群管理過程中,資源利用率的監控和優化是保證應用性能和成本效益的關鍵環節。近期,我們對 EKSPod 管理界面的資源利用率顯示功能進行了全面修復,將原先簡單的占位符文本升級為完整的資源分析系統。本文將詳細介紹這次修復的背景、方案、實現細節和最終…

Linux內核(架構)

文章目錄Linux內核架構概述核心子系統詳解1、進程管理2、內存管理3、虛擬文件系統(VFS)4、設備驅動模型掌握Linux內核核心技術階段1:基礎準備階段2:內核基礎階段3:深入子系統階段4:高級主題(持續學習)調試和…

基于數據挖掘的單純冠心病與冠心病合并糖尿病的證治規律對比研究

標題:基于數據挖掘的單純冠心病與冠心病合并糖尿病的證治規律對比研究內容:1.摘要 背景:冠心病和冠心病合并糖尿病在臨床上較為常見,且二者在證治方面可能存在差異,但目前相關系統研究較少。目的:對比基于數據挖掘的單純冠心病與冠…

即夢AI快速P圖

原圖: 模型選擇3.0效果比較好,提示詞“根據提供圖片,要求把兩邊臉變小,要求把臉變尖,要求眼妝變淡,眼睛更有神,要求提亮面部膚色要求面部均勻,面部要磨皮!鼻頭高光和鼻翼兩邊陰影變淡…

【辦公類-109-04】20250913圓牌卡片(接送卡被子卡床卡入園卡_word編輯單面)

背景需求: 為了發被子,我做了全校批量的圓形掛牌,可以綁在“被子包”提手上,便于再操場上發放被子時,很多老師可以協助根據學號發放。 https://blog.csdn.net/reasonsummer/article/details/149755556?spm=1011.2415.3001.5331https://blog.csdn.net/reasonsummer/arti…

Shoptnt 促銷計算引擎詳解:策略模式與責任鏈的完美融合

在電商系統中,促銷計算是業務邏輯最復雜、變更最頻繁的模塊之一。它不僅需要處理多種促銷類型(滿減、折扣、優惠券等),還要管理它們之間的優先級和互斥關系。 Shoptnt 設計了一套基于 策略模式 (Strategy Pattern) 和 責任鏈模式…

【HTTP 請求格式】從請求行 到 請求體

引言 在前后端開發中,前端和后端之間的交互主要依賴于 HTTP(HyperText Transfer Protocol,超文本傳輸協議)。HTTP 是互聯網通信的基礎,它定義了客戶端(通常是瀏覽器或App)和服務器之間如何交換數…

【自記】SQL 中 GROUPING 和 GROUPING SETS 語句的案例說明

我們用一個生活中的例子來理解,比如你開了家小超市,想統計「銷售額」,但需要從多個角度看(比如按 “日期 商品”、“僅日期”、“僅商品”、“整體總銷售額”)。假設你的銷售數據長這樣(簡化版&#xff09…

C語言第五課:if、else 、if else if else 控制語句

C語言第五課&#xff1a;if、else 、if else if else 控制語句if else 、if else if else 聯合使用編程快速學習平臺if else 、if else if else 聯合使用 代碼示列 #include <stdio.h> int main(){//設置中文編碼輸出到控制臺system("chcp 65001");//今天星…

七彩喜智慧養老:用科技溫暖晚年,讓關愛永不掉線

“當銀發潮遇見科技力&#xff0c;養老方式正在發生一場靜悄悄的變革。”你有沒有想過&#xff1a;當父母年邁獨居時&#xff0c;如何確保他們的安全&#xff1f;當老人突然摔倒&#xff0c;如何第一時間獲得救助&#xff1f;當慢性病需要長期管理&#xff0c;如何避免頻繁奔波…

window顯示驅動開發—為頭裝載和專用監視器生成自定義合成器應用(二)

顯示相關的 API 的比較 API用途和目標受眾DisplayInformation用于檢索 CoreWindow 的呈現和布局屬性。HdmiDisplayInformation用于枚舉和設置受限模式集的僅限 Xbox 的 API。 高度專用于 Xbox 媒體應用方案。DisplayMonitor用于查詢物理監視器設備的屬性。 不公開有關操作系統…

Linux 高性能 I/O 事件通知機制的核心系統調用—— `epoll_ctl`

epoll 是 Linux 上處理大量文件描述符 I/O 事件的高效模型&#xff0c;而 epoll_ctl 則是你用來指揮 epoll 實例&#xff08;epoll instance&#xff09;的“遙控器”&#xff0c;負責向它添加、修改或刪除需要監視的文件描述符&#xff08;FD&#xff09;及其感興趣的事件。1.…