搜尋
首頁科技週邊人工智慧一個超強 Pytorch 操作! !

一個超強 Pytorch 操作! !

Jan 06, 2024 pm 09:02 PM
函數pytorch

嗨,小壯!很高興見到你!有什麼我可以幫助你的嗎?

我已經分享了一些關於深度學習的內容,在這幾天裡。

另外,在Pytorch中也存在著一些類似numpy和pandas的常用資料處理函數,它們同樣具有重要性和趣味性!

同樣,PyTorch也提供了許多函數用於資料處理和轉換。

現在讓我們來看看最重要的幾個必備函數。

一个超强 Pytorch 操作!!

torch.Tensor

在PyTorch中,torch.Tensor是一種基本的資料結構,用來表示張量。張量是一種多維數組,可以包含數字、布林值等不同類型的資料。你可以使用torch.Tensor的建構函式來建立張量,也可以使用其他函式來建立。

import torch# 创建一个空的张量empty_tensor = torch.Tensor()# 从列表创建张量data = [1, 2, 3, 4]tensor_from_list = torch.Tensor(data)

torch.from_numpy

用於將NumPy陣列轉換為PyTorch張量。

import numpy as npnumpy_array = np.array([1, 2, 3, 4])torch_tensor = torch.from_numpy(numpy_array)

torch.Tensor.item

用於從只包含一個元素的張量中提取Python數值。適用於標量張量。

scalar_tensor = torch.tensor(5)scalar_value = scalar_tensor.item()

torch.Tensor.view

用於改變張量的形狀。

original_tensor = torch.randn(2, 3)# 2x3的随机张量reshaped_tensor = original_tensor.view(3, 2)# 将形状改变为3x2

torch.Tensor.to

用於將張量轉換到指定的裝置(如CPU或GPU)。

cpu_tensor = torch.randn(3)gpu_tensor = cpu_tensor.to("cuda")# 将张量移动到GPU

torch.Tensor.numpy

將張量轉換為NumPy陣列。

pytorch_tensor = torch.tensor([1, 2, 3])numpy_array = pytorch_tensor.numpy()

torch.nn.functional.one_hot

用於對整數張量進行獨熱編碼。

import torch.nn.functional as Finteger_tensor = torch.tensor([0, 2, 1])one_hot_encoded = F.one_hot(integer_tensor)

torch.utils.data.Dataset和torch.utils.data.DataLoader

用於載入和處理資料集。這兩個類別通常與自訂的資料集類別一起使用。

from torch.utils.data import Dataset, DataLoaderclass CustomDataset(Dataset):def __init__(self, data):self.data = datadef __len__(self):return len(self.data)def __getitem__(self, index):return self.data[index]dataset = CustomDataset([1, 2, 3, 4, 5])dataloader = DataLoader(dataset, batch_size=2, shuffle=True)

以上這些是PyTorch中一些重要的資料轉換函數,進行了簡單的使用。

它們對於處理和準備深度學習任務中的資料非常非常有幫助。

一個案例

接下來,我們製作一個影像分割的案例。

在這個案例中,我們將使用PyTorch和torchvision函式庫進行影像分割,並使用預先訓練的DeepLabV3模型和PASCAL VOC資料集。

在整個的程式碼中,涉及到上面所學到的內容,調整大小、裁剪、標準化等。

import torchimport torchvision.transforms as transformsfrom torchvision import modelsfrom PIL import Imageimport matplotlib.pyplot as plt# 下载示例图像!wget -O example_image.jpg https://pytorch.org/assets/deeplab/deeplab1.jpg# 定义图像转换transform = transforms.Compose([transforms.Resize((256, 256)),# 调整大小transforms.ToTensor(), # 转换为张量transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])# 标准化])# 加载并转换图像image_path = 'example_image.jpg'image = Image.open(image_path).convert("RGB")input_tensor = transform(image).unsqueeze(0)# 添加批次维度# 加载预训练的DeepLabV3模型model = models.segmentation.deeplabv3_resnet101(pretrained=True)model.eval()# 进行图像分割with torch.no_grad():output = model(input_tensor)['out'][0]output_predictions = output.argmax(0)# 将预测结果转换为彩色图像def decode_segmap(image, nc=21):label_colors = np.array([(0, 0, 0),# 0: 背景 (128, 0, 0), (0, 128, 0), (128, 128, 0), (0, 0, 128), (128, 0, 128),# 1-5: 物体 (0, 128, 128), (128, 128, 128), (64, 0, 0), (192, 0, 0),# 6-9: 道路 (64, 128, 0), (192, 128, 0), (64, 0, 128), (192, 0, 128),# 10-13: 面部 (64, 128, 128), (192, 128, 128), (0, 64, 0), (128, 64, 0),# 14-17: 植物 (0, 192, 0), (128, 192, 0), (0, 64, 128)])# 18-20: 建筑r = np.zeros_like(image).astype(np.uint8)g = np.zeros_like(image).astype(np.uint8)b = np.zeros_like(image).astype(np.uint8)for l in range(0, nc):idx = image == lr[idx] = label_colors[l, 0]g[idx] = label_colors[l, 1]b[idx] = label_colors[l, 2]rgb = np.stack([r, g, b], axis=2)return rgb# 将预测结果转换为彩色图像output_rgb = decode_segmap(output_predictions.numpy())# 可视化原始图像和分割结果plt.figure(figsize=(12, 6))plt.subplot(1, 2, 1)plt.imshow(image)plt.title('Original Image')plt.subplot(1, 2, 2)plt.imshow(output_rgb)plt.title('Segmentation Result')plt.show()

在這個案例中,我們首先定義了一系列影像轉換函數,包括調整大小、轉換為張量和標準化。這些轉換確保輸入影像滿足模型的需求。

然後,載入了一個範例圖像並應用了這些轉換。

接下來,我們使用了torchvision中預先訓練的DeepLabV3模型來進行影像分割。對於輸出,我們提取了預測結果的最大值索引,以獲得每個像素的預測類別。

最後,我們將預測結果轉換為彩色影像,並視覺化原始影像和分割結果。

一个超强 Pytorch 操作!!

這個案例強調了影像轉換函數在影像分割任務中的重要作用,確保輸入影像符合模型的輸入要求,並且輸出結果易於視覺化。

以上是一個超強 Pytorch 操作! !的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:51CTO.COM。如有侵權,請聯絡admin@php.cn刪除
閱讀AI索引2025:AI是您的朋友,敵人還是副駕駛?閱讀AI索引2025:AI是您的朋友,敵人還是副駕駛?Apr 11, 2025 pm 12:13 PM

斯坦福大學以人為本人工智能研究所發布的《2025年人工智能指數報告》對正在進行的人工智能革命進行了很好的概述。讓我們用四個簡單的概念來解讀它:認知(了解正在發生的事情)、欣賞(看到好處)、接納(面對挑戰)和責任(弄清我們的責任)。 認知:人工智能無處不在,並且發展迅速 我們需要敏銳地意識到人工智能發展和傳播的速度有多快。人工智能係統正在不斷改進,在數學和復雜思維測試中取得了優異的成績,而就在一年前,它們還在這些測試中慘敗。想像一下,人工智能解決複雜的編碼問題或研究生水平的科學問題——自2023年

開始使用Meta Llama 3.2 -Analytics Vidhya開始使用Meta Llama 3.2 -Analytics VidhyaApr 11, 2025 pm 12:04 PM

Meta的Llama 3.2:多模式和移動AI的飛躍 Meta最近公佈了Llama 3.2,這是AI的重大進步,具有強大的視覺功能和針對移動設備優化的輕量級文本模型。 以成功為基礎

AV字節:Meta' llama 3.2,Google的雙子座1.5等AV字節:Meta' llama 3.2,Google的雙子座1.5等Apr 11, 2025 pm 12:01 PM

本週的AI景觀:進步,道德考慮和監管辯論的旋風。 OpenAI,Google,Meta和Microsoft等主要參與者已經釋放了一系列更新,從開創性的新車型到LE的關鍵轉變

與機器交談的人類成本:聊天機器人真的可以在乎嗎?與機器交談的人類成本:聊天機器人真的可以在乎嗎?Apr 11, 2025 pm 12:00 PM

連接的舒適幻想:我們在與AI的關係中真的在蓬勃發展嗎? 這個問題挑戰了麻省理工學院媒體實驗室“用AI(AHA)”研討會的樂觀語氣。事件展示了加油

了解Python的Scipy圖書館了解Python的Scipy圖書館Apr 11, 2025 am 11:57 AM

介紹 想像一下,您是科學家或工程師解決複雜問題 - 微分方程,優化挑戰或傅立葉分析。 Python的易用性和圖形功能很有吸引力,但是這些任務需要強大的工具

3種運行Llama 3.2的方法-Analytics Vidhya3種運行Llama 3.2的方法-Analytics VidhyaApr 11, 2025 am 11:56 AM

Meta's Llama 3.2:多式聯運AI強力 Meta的最新多模式模型Llama 3.2代表了AI的重大進步,具有增強的語言理解力,提高的準確性和出色的文本生成能力。 它的能力t

使用dagster自動化數據質量檢查使用dagster自動化數據質量檢查Apr 11, 2025 am 11:44 AM

數據質量保證:與Dagster自動檢查和良好期望 保持高數據質量對於數據驅動的業務至關重要。 隨著數據量和源的增加,手動質量控制變得效率低下,容易出現錯誤。

大型機在人工智能時代有角色嗎?大型機在人工智能時代有角色嗎?Apr 11, 2025 am 11:42 AM

大型機:AI革命的無名英雄 雖然服務器在通用應用程序上表現出色並處理多個客戶端,但大型機是專為關鍵任務任務而建立的。 這些功能強大的系統經常在Heavil中找到

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器