【python代碼】一些小實驗

?

目錄

1. 測試Resnet50 ONNX模型的推理速度


1. 測試Resnet50 ONNX模型的推理速度

###############################
# 導出resnet50 模型
# 測試onnx模型推理 cpu 和 GPU 的對比
###############################import time
import numpy as np
import onnxruntime as ort
import torchvision.models as models
import torchdef export_onnx(onnx_path):# ResNet50 模型, 保存onnx model 返回 torch modelresnet50 = models.resnet50(pretrained=False)torch.onnx.export(resnet50,  # 模型torch.randn(1, 3, 224, 224),  # 輸入onnx_path, # 輸出文件名opset_version=12, # opset版本 input_names=["input"], # 輸入變量名output_names=["output"], # 輸出變量名dynamic_axes={"input":{0 : "batch_x"}, "output":{0: "batch_y"}} # 動態軸設置)class ONNXModel:def __init__(self, model_path, use_gpu=False):"""初始化 ONNX 模型推理類。:param model_path: ONNX 模型文件路徑:param use_gpu: 是否使用 GPU 推理"""self.model_path = model_pathself.use_gpu = use_gpuself.session = Noneself.load_model()self.input_name = self.session.get_inputs()[0].name  # 輸入名字def load_model(self):"""加載 ONNX 模型。"""try:print(f"Loading model from {self.model_path}...")providers = ['CUDAExecutionProvider', 'CPUExecutionProvider'] if self.use_gpu else ['CPUExecutionProvider']self.session = ort.InferenceSession(self.model_path, providers=providers)except Exception as e:print(f"Failed to load model: {e}")raiseproviders = self.session.get_providers()if 'CUDAExecutionProvider' in providers:print("? ONNX Runtime 正在使用 GPU 推理")else:print("? ONNX Runtime 正在使用 CPU 推理")def run_inference(self, input_data):"""執行推理并返回結果。:param input_data: 輸入數據,通常為 numpy 數組或字典:return: 推理結果"""# 確保輸入是字典格式input_data = {self.input_name: input_data}outputs = self.session.run(None, input_data)return outputs[0]def eval(onnx_model, n):# 推理n 次 返回對比結果batch_size = 32print("評估中....")onnx_input = np.random.randn(batch_size,3,224,224).astype(np.float32)  # ONNX 需要 CPU 數據# 1. ONNX 時間t1 = time.time()for _ in range(n):onnx_model.run_inference(onnx_input)t2 = time.time()t = t2 - t1print(f"推理{n}次時間對比:")print(f"模型推理時間: {t:.4f} 秒")print(f"模型推理平均時間: {t/n:.4f} 秒")def test():onnx_path = "./resnet50.onnx"# export_onnx(onnx_path)onnx_model_cpu = ONNXModel(onnx_path, use_gpu=False)# 評估推理性能eval(onnx_model_cpu, 50)onnx_model_gpu = ONNXModel(onnx_path, use_gpu=True)eval(onnx_model_cpu, 50)# 示例用法
if __name__ == "__main__":test()

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

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

相關文章

5.Java 面向對象編程入門:類與對象的創建和使用?

在現實生活中,我們常常會接觸到各種各樣的對象,比如一輛汽車、一個學生、一部手機等。這些對象都具有各自的屬性和行為。例如,汽車有顏色、品牌、型號等屬性,還有啟動、加速、剎車等行為;學生有姓名、年齡、學號等屬性…

從開發者角度看數據庫架構進化史:JDBC - 中間件 - TiDB

作者: Lucien-盧西恩 原文來源: https://tidb.net/blog/e7034d1b Java 應用開發技術發展歷程 在業務開發早期,用 Java 借助 JDBC 進行數據庫操作,雖能實現基本交互,但需手動管理連接、編寫大量 SQL 及處理結果集&a…

工業智能網關建立烤漆設備故障預警及遠程診斷系統

一、項目背景 烤漆房是汽車、機械、家具等工業領域廣泛應用的設備,主要用于產品的表面涂裝。傳統的烤漆房控制柜采用本地控制方式,操作人員需在現場進行參數設置和設備控制,且存在設備智能化程度低、數據孤島、設備維護成本高以及依靠傳統人…

故障率預測:基于LSTM的GPU集群硬件健康監測系統(附Prometheus監控模板)

一、GPU集群健康監測的挑戰與價值 在大規模深度學習訓練場景下,GPU集群的硬件故障率顯著高于傳統計算設備。根據2023年MLCommons統計,配備8卡A100的服務器平均故障間隔時間(MTBF)僅為1426小時,其中顯存故障占比達38%&…

Vue 樣式不一致問題全面分析與解決方案

文章目錄 1. 問題概述1.1 問題表現1.2 問題影響 2. 根本原因分析2.1 Vue 的渲染機制與樣式加載時機2.2 Scoped CSS 的工作原理2.3 CSS 模塊化與作用域隔離2.4 樣式加載順序問題2.5 熱重載(HMR)與樣式更新 3. 解決方案3.1 確保樣式加載順序3.1.1 預加載關鍵 CSS3.1.2 控制全局樣…

[免費]微信小程序寵物醫院管理系統(uni-app+SpringBoot后端+Vue管理端)【論文+源碼+SQL腳本】

大家好,我是java1234_小鋒老師,看到一個不錯的微信小程序寵物醫院管理系統(uni-appSpringBoot后端Vue管理端),分享下哈。 項目視頻演示 【免費】微信小程序寵物醫院管理系統(uni-appSpringBoot后端Vue管理端) Java畢業設計_嗶哩嗶哩_bilibi…

測試總結(一)

一、測試流程 參與需求評審-制定測試計劃-編寫測試用例-用例評審-冒煙測試-測試執行-缺陷管理-預發驗收測試-發布線上-線上回歸-線上觀察-項目總結 二、測試用例設計方法 等價類劃分(處理有效/無效輸入) 邊界值分析(臨界值測試&#xff09…

SAP-ABAP:ABAP異常處理與SAP現代技術融合—— 面向云原生、微服務與低代碼場景的創新實踐

專題三:ABAP異常處理與SAP現代技術融合 —— 面向云原生、微服務與低代碼場景的創新實踐 一、SAP技術演進與異常處理的挑戰 隨著SAP技術棧向云端、微服務化和低代碼方向演進,異常處理面臨新場景: Fiori UX敏感度:用戶期望前端友…

DC-DC電路的自舉電容電路原理

在以往的電子產品設計中,我們經常會選型 DCDC 芯片,在選型過程中經常遇到有些DC-DC電路中需要用到自舉電容,本文主要分析自舉電容在DC-DC電路中的原理。 無論同步或者異步整流,經常會看到一個自舉電容,常并聯在DC-DC的…

android studio 開啟無線調試

1、在工具的模擬器點擊下后,會出現下面菜單: 選擇Pair Devices Using Wi-Fi 發現一直在轉圈,并不會連接上,之前在android12的時候,發現一連就上了,現在換成了android14,連不上了。 2、選擇用命令…

Go基礎語法與控制結構

Go基礎語法與控制結構 1. 環境配置與Hello World(擴展) 安裝指南 # 驗證安裝成功 $ go version # 設置模塊代理(中國用戶推薦) $ go env -w GOPROXYhttps://goproxy.cn,direct程序解剖 package main // 程序入口包聲明import…

QGIS新手教程:兩種方法創建點圖層(手動添加 + 表格導入),支持經緯度定位與查找

🌍QGIS新手教程:兩種方法創建點圖層(手動添加 表格導入),支持經緯度定位與查找 本文將手把手教你在 QGIS 中通過兩種方法創建點圖層,并結合經緯度定位、拾取坐標、查找屬性等功能,快速掌握從地…

Doris ClickHouse Greenplum 對比

1. 核心架構對比 Doris (https://doris.apache.org/) MPP架構 列式存儲支持實時更新(Unique Key模型)向量化執行引擎兼容MySQL協議 ClickHouse (https://clickhouse.com/) 分布式列式存儲MergeTree存儲引…

基于python,html,echart,php,mysql,在線實時監控入侵檢測系統

詳細視頻:【基于python,html,echart,php,mysql,在線實時監控入侵檢測系統,需要的可聯系介紹都在所有圖片中。包遠程部署安裝。-嗶哩嗶哩】 https://b23.tv/KHxmE8k

基于51單片機智能垃圾桶—紅外感應自動開關

基于51單片機智能垃圾桶 (仿真+程序+原理圖+PCB+設計報告) 功能介紹 具體功能: 1.ULN2003驅動步進電機控制打開關閉垃圾桶; 2.一個紅外對管檢測有沒有人,一個紅外對管…

自動涂膠機設計及其在工業生產中的應用研究

摘要 本文詳細探討了自動涂膠機的設計原理、關鍵技術和應用前景。隨著工業自動化水平的不斷提高,自動涂膠機在制造業中的應用日益廣泛。文章首先分析了自動涂膠機的基本工作原理,然后深入研究了其機械結構設計、控制系統設計和視覺定位系統等關鍵技術。…

SQL 語言

SQL概述與數據庫定義 SQL的基本組成 1、數據定義語言。SQL DDL提供定義關系模式和視圖、刪除關系和視圖、修改關系模式的命令。 2、交互式數據操縱語言。SQL DML提供查詢、插入、刪除和修改的命令。 3、事務控制。SQL提供定義事務開始和結束的命令。 4、嵌入式SQL和動態SQL。用…

深度剖析ZooKeeper

1. ZooKeeper架構總覽 ZooKeeper 是一個分布式協調服務,廣泛用于分布式系統中的配置管理、命名服務、分布式鎖和領導選舉等場景。以下是對 ZooKeeper 架構、通信機制、容錯處理、數據一致性與可靠性等方面的詳細剖析。 一、ZooKeeper 主從集群 ZooKeeper 采用 主從…

K8S-statefulset-mysql-ha

需求 實現一個HA mysql,包括1個master,2個slave。在K8S上已statefulset部署。 mysql HA原理 略 K8S環境需要解決的問題 1、由于使用同一個statefulset配置,因此需要考慮master和slave使用不同的cnf文件。 2、不同pod之間文件的傳輸 3、…

人臉美顏磨皮祛痘1:數據集說明(含下載鏈接)

一. 前言 本篇博客是《人臉美顏磨皮祛痘》系列文章之《數據集說明(含下載鏈接)》,像這種深度學習圖像修復的數據一般是需要成對,網上很難找到,公司或者個人都是花錢找人做。為了方便你我他,本博客將分享一個由我自己整理的人臉美…