python/pytorch雜聊

Dataset

  • 是否需要自己定義:如果你使用的數據集不是 PyTorch 提供的標準數據集(如 MNIST、CIFAR-10 等),那么你需要繼承?torch.utils.data.Dataset?類并實現兩個方法:__len__()?和?__getitem__()
  • __len__()?應該返回數據集的總大小。
  • __getitem__()?應該根據索引返回一個數據樣本。

DataLoader

  • 是否需要自己定義DataLoader?不需要自己定義,它是 PyTorch 提供的一個類,用于包裝?Dataset?并在數據集上提供迭代功能。它支持批量處理、打亂數據、多線程加載等。
  • 使用?DataLoader?時,你可以指定批處理大小(batch_size)、是否打亂數據(shuffle)、數據加載的線程數(num_workers)等。

model定義【繼承nn.module父類】

forward:input--forward-->output

forward(self,x)中x表示輸入,即x->卷積->relu->卷積-->relu-->輸出

class HeightPredictor(nn.Module):def __init__(self):super(HeightPredictor, self).__init__()self.conv1 = nn.Conv2d(1,20,5)self.conv2 = nn.Conv2d(20,20,5)def forward(self, x):x = F.relu(self.conv1(x))return F.relu(self.conv2(x))

Dict

building_info = {}【dict,key--value】

這是一個字典(dictionary)的創建語句。在Python中,字典是一種可變的、無序的、鍵值對(key-value pairs)的集合。每個鍵(key)都是唯一的,且必須是不可變的類型(如字符串、數字或元組),而值(value)可以是任何類型的數據。字典通過鍵來訪問對應的值,提供了快速查找和插入的能力。

特殊:defaultdict:defaultdict是Python標準庫collections模塊中的一個類。defaultdict與普通字典類似,但它在創建時提供了一個默認工廠函數【比如defaultdict(list):當訪問一個不存在的鍵時,defaultdict會自動為該鍵創建一個空列表作為默認值。】,當嘗試訪問一個不存在的鍵時,defaultdict會自動為該鍵創建一個默認值,而不會拋出KeyError

整理csv

df = pd.read_csv(file_path, encoding="utf-8")#讀取csv

#根據某個屬性分組

area_bins = [0, 100, 200, 300, 400, np.inf]

area_labels = [f"{left}-{right}" if right != np.inf else f">{left}"

? ? ? ? ? ? ? for left, right in zip(area_bins[:-1], area_bins[1:])]

df['area_bins'] = pd.cut(df['area'], bins=area_bins, labels=area_labels)

methods = ["a","b"]

attributes = ['material', 'height_bin']

for attr in attributes:

? ? results = []

? ? for method in methods:

? ? ? ? ? ? Num_col = f"{method}_Num"

? ? ? ? ? ? predict_col = f"{method}_predict"

? ? ? ? ? ? if Num_col not in df.columns or predict_col not in df.columns:

? ? ? ? ? ? ? ? print(f"跳過 {method},缺少必要列")

? ? ? ? ? ? ? ? continue

? ? ? ? ? ?

? ? ? ? ? ? valid_data = df[['true_Num', Num_col, predict_col, attr]].dropna()

? ? ? ? ? ? if valid_data.empty:

? ? ? ? ? ? ? ? print(f"{method} 在屬性 {attr} 下無有效數據")

? ? ? ? ? ? ? ? continue

? ? ? ? ? ?

? ? ? ? ? ? # 計算完整指標

? ? ? ? ? ? grouped = valid_data.groupby(attr).apply(

? ? ? ? ? ? ? ? lambda x: pd.Series({

? ? ? ? ? ? ? ? ? ? 'Ori_RMSE': np.sqrt(mean_squared_error(x['true_Num'], x[Num_col])),

? ? ? ? ? ? ? ? ? ? 'Pred_RMSE': np.sqrt(mean_squared_error(x['true_Num'], x[predict_col])),

? ? ? ? ? ? ? ? ? ? 'Ori_MAE': mean_absolute_error(x['true_Num'], x[Num_col]),

? ? ? ? ? ? ? ? ? ? 'Pred_MAE': mean_absolute_error(x['true_Num'], x[predict_col]),

? ? ? ? ? ? ? ? ? ? 'Group_Size': len(x),

? ? ? ? ? ? ? ? ? ? 'Sample_Optimized': np.sum(

? ? ? ? ? ? ? ? ? ? ? ? np.abs(x[Num_col] - x['true_Num']) >

? ? ? ? ? ? ? ? ? ? ? ? np.abs(x[predict_col] - x['true_height'])

? ? ? ? ? ? ? ? ? ? )

? ? ? ? ? ? ? ? })

? ? ? ? ? ? ).reset_index()

? ? ? ?

? ? ? ? grouped['method'] = method

? ? ? ? results.append(grouped)

? ?

? ? if not results:

? ? ? ? print(f"屬性 {attr} 無數據,跳過")

? ? ? ? continue

? ?

? ? # 合并結果

? ? combined_df = pd.concat(results, ignore_index=True)

? ?

? ? # 生成透視表

? ? pivot_df = combined_df.pivot(

? ? ? ? index=attr,

? ? ? ? columns='method',

? ? ? ? values=['Ori_RMSE', 'Pred_RMSE', 'Ori_MAE', 'Pred_MAE']

? ? )

? ?

? ? # 扁平化列名并填充NaN

? ? pivot_df.columns = [f"{method}_{metric}" for metric, method in pivot_df.columns]

? ? pivot_df = pivot_df.fillna(0)

? ?

? ? # 保存到CSV

? ? csv_path = os.path.join(output_dir, f"{attr}.csv")

? ? pivot_df.reset_index().to_csv(csv_path, index=False)

實現了分別對每個方法依據不同屬性評估的功能

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

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

相關文章

PHP 安全 E-mail

PHP 安全 E-mail 引言 隨著互聯網的普及和電子商務的發展,電子郵件成為了人們日常生活中不可或缺的通信工具。PHP作為一種廣泛使用的服務器端腳本語言,也經常被用于發送和接收電子郵件。然而,在PHP中處理電子郵件時,安全性問題不容忽視。本文將深入探討PHP安全發送電子郵…

【夜話系列】DelayQueue延遲隊列(下):實戰應用與面試精講

?? 本文是DelayQueue系列的下篇,聚焦實戰應用場景和性能優化。通過多個真實案例,帶你掌握DelayQueue在項目中的最佳實踐和性能調優技巧。 ?? 系列專欄推薦: JAVA集合專欄 【夜話集】JVM知識專欄數據庫sql理論與實戰小游戲開發文章目錄 一、DelayQueue實戰應用1.1 訂單超…

Redis(筆記)

簡介: 常用數據類型: 常用操作命令: Redis的Java客戶端: 操作字符串類型的數據: 操作Hash類型的數據: 操作列表類型的數據: 操作集合類型的數據: 操作有序集合類型數據: 通用命令…

PhotoShop學習05

1.選區基礎知識 選區,就是選定一些區域,我們對圖片的更改只在選區內生效,這樣可以精細調整圖片的部分而不會影響整體。它的快捷鍵是M。 我們用點擊鼠標后滑動就會出現虛線框,虛線框內的就是我們選定的區域。這時我們再滑動就會創…

使用Redission實現分布式鎖

分布式鎖在分布式系統中非常重要,主要用于解決多個進程/服務并發訪問共享資源時的數據一致性問題。在日常開發中常用于: 1. 防止重復操作(冪等性控制) 場景:用戶重復提交訂單、重復支付、重復點擊等。 示例&#xff1…

VScode 畫時序圖(FPGA)

1、先安裝插件: 2、然后就可以編寫一個.js文件,如下: {signal: [{name: clk, wave: p.......|..},{name: rstn, wave: 01......|..},{name: din_vld, wave: 0.1.0...|..},{name: din, wave: "x.x...|..", data: ["D0", …

嵌入式學習筆記——I2C

IIC協議詳解 一、IIC協議簡介二、IIC總線結構圖三、IIC通信流程詳解1. 空閑狀態 : 雙高空閑2. 起始信號(START): 時高數下開始3. 停止信號(STOP): 時高數上結束4. 數據傳輸格式 : 時高數穩,時低數變5. 應答信號 四、寫…

Apifox Helper 與 Swagger3 區別

核心定位差異 Apifox Helper 定位:基于 IDEA 的代碼注釋解析工具,與 Apifox 平臺深度集成,實現文檔自動生成接口管理測試協作的一體化流程。 特點: 通過解析 Javadoc、KDoc 等注釋生成文檔,代碼零侵入(無…

單片機實現多線程的方法匯總

在單片機上實現“多線程”的方法有幾種,下面按照從簡單到復雜、從輕量到系統性來列出常見的方案: 🧵 一、偽多線程(最輕量) 方法:主循環 狀態機 / 定時器輪詢 主循環中輪流調用各個任務的處理函數&#x…

網絡:華為數通HCIA學習:靜態路由基礎

文章目錄 前言靜態路由基礎靜態路由應用場景 靜態路由配置靜態路由在串行網絡的配置靜態路由在以太網中的配置 負載分擔配置驗證 路由備份(浮動靜態路由)配置驗證 缺省路由配置驗證 總結 華為HCIA 基礎實驗-靜態路由 & eNSP靜態路由 基礎…

[項目總結] 在線OJ刷題系統項目技術應用(下)

🌸個人主頁:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵?熱門專欄: 🧊 Java基本語法(97平均質量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection與…

Qt音頻輸出:QAudioOutput詳解與示例

1. 簡介 QAudioOutput是Qt多媒體框架中的一個關鍵類,它提供了將PCM(脈沖編碼調制)原始音頻數據發送到音頻輸出設備的接口。作為Qt多媒體組件的一部分,QAudioOutput允許開發者在應用程序中實現音頻播放功能,支持多種音…

【計算機網絡】Linux配置SNAT/DNAT策略

什么是NAT? NAT 全稱是 Network Address Translation(網絡地址轉換),是一個用來在多個設備共享一個公網 IP上網的技術。 NAT 的核心作用:將一個網絡中的私有 IP 地址,轉換為公網 IP 地址,從而…

Redis淘汰策略詳解!

目錄 一、為什么需要淘汰策略? 🤔二、Redis 的淘汰策略詳解 👇三、如何選擇合適的淘汰策略? 🤔???四、如何切換 Redis 的淘汰策略? ??🔧五、總結 🎉 🌟我的其他文章…

存儲基石:深度解讀Linux磁盤管理機制與文件系統實戰

Linux系列 文章目錄 Linux系列前言一、磁盤1.1 初識磁盤1.2 磁盤的物理結構1.3 磁盤的存儲結構1.4 磁盤的邏輯結構 二、文件系統2.1 系統對磁盤的管理2.2 文件在磁盤中的操作 前言 Linux 文件系統是操作系統中用于管理和組織存儲設備(如硬盤、SSD、USB 等&#xff…

本節課課堂總結

匿名子類: 說明 和 Java 一樣,可以通過包含帶有定義或重寫的代碼塊的方式創建一個匿名的子類。 單例對象(伴生對象) Scala語言是完全面向對象的語言,所以并沒有靜態的操作(即在Scala中沒有靜態的概念&a…

I2C、SPI、UART、CAN 通信協議詳解

一、協議基本特性對比 特性ICSPIUARTCAN通信類型同步、半雙工同步、全雙工異步、全雙工異步、多主多從信號線SDA(數據)、SCL(時鐘)MOSI、MISO、SCK、SS(片選)TX(發送)、RX&#xff…

【diffusers 進階(十五)】dataset 工具,Parquet和Arrow 數據文件格式,load dataset 方法

系列文章目錄 【diffusers 極速入門(一)】pipeline 實際調用的是什么? call 方法!【diffusers 極速入門(二)】如何得到擴散去噪的中間結果?Pipeline callbacks 管道回調函數【diffusers極速入門&#xff0…

第十三章:持久化存儲_《鳳凰架構:構建可靠的大型分布式系統》

第十三章 持久化存儲 一、Kubernetes存儲設計核心概念 (1)存儲抽象模型 PersistentVolume (PV):集群級別的存儲資源抽象(如NFS卷/云存儲盤)PersistentVolumeClaim (PVC):用戶對存儲資源的聲明請求&#…

以太網安全

前言: 端口隔離可實現同一VLAN內端口之間的隔離。用戶只需要將端口加入到隔離組中,就可以實現隔離組內端口之間的二層數據的隔離端口安全是一種在交換機接入層實施的安全機制,旨在通過控制端口的MAC地址學習行為,確保僅授權設備能…