日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

一個超強 Pytorch 操作!!

來源: 責編: 時間:2024-01-02 09:30:10 214觀看
導讀哈嘍,我是小壯!這幾天關于深度學習的內容,已經分享了一些。另外,類似于numpy、pandas常用數據處理函數,在Pytorch中也是同樣的重要,同樣的有趣!!Pytorch同樣提供了許多用于數據處理和轉換的函數。今兒來看下,最重要的幾個必會

哈嘍,我是小壯!vEl28資訊網——每日最新資訊28at.com

這幾天關于深度學習的內容,已經分享了一些。vEl28資訊網——每日最新資訊28at.com

另外,類似于numpy、pandas常用數據處理函數,在Pytorch中也是同樣的重要,同樣的有趣!!vEl28資訊網——每日最新資訊28at.com

Pytorch同樣提供了許多用于數據處理和轉換的函數。vEl28資訊網——每日最新資訊28at.com

今兒來看下,最重要的幾個必會函數。vEl28資訊網——每日最新資訊28at.com

vEl28資訊網——每日最新資訊28at.com

torch.Tensor

torch.Tensor 是PyTorch中最基本的數據結構,用于表示張量(tensor)。張量是多維數組,可以包含數字、布爾值等。你可以使用torch.Tensor的構造函數創建張量,也可以通過其他函數創建。vEl28資訊網——每日最新資訊28at.com

import torch# 創建一個空的張量empty_tensor = torch.Tensor()# 從列表創建張量data = [1, 2, 3, 4]tensor_from_list = torch.Tensor(data)

torch.from_numpy

用于將NumPy數組轉換為PyTorch張量。vEl28資訊網——每日最新資訊28at.com

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

torch.Tensor.item

用于從只包含一個元素的張量中提取Python數值。適用于標量張量。vEl28資訊網——每日最新資訊28at.com

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

torch.Tensor.view

用于改變張量的形狀。vEl28資訊網——每日最新資訊28at.com

original_tensor = torch.randn(2, 3)  # 2x3的隨機張量reshaped_tensor = original_tensor.view(3, 2)  # 將形狀改變為3x2

torch.Tensor.to

用于將張量轉換到指定的設備(如CPU或GPU)。vEl28資訊網——每日最新資訊28at.com

cpu_tensor = torch.randn(3)gpu_tensor = cpu_tensor.to("cuda")  # 將張量移動到GPU

torch.Tensor.numpy

將張量轉換為NumPy數組。vEl28資訊網——每日最新資訊28at.com

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

torch.nn.functional.one_hot

用于對整數張量進行獨熱編碼。vEl28資訊網——每日最新資訊28at.com

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

用于加載和處理數據集。這兩個類通常與自定義的數據集類一起使用。vEl28資訊網——每日最新資訊28at.com

from torch.utils.data import Dataset, DataLoaderclass CustomDataset(Dataset):    def __init__(self, data):        self.data = data        def __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中一些重要的數據轉換函數,進行了簡單的使用。vEl28資訊網——每日最新資訊28at.com

它們對于處理和準備深度學習任務中的數據非常非常有幫助。vEl28資訊網——每日最新資訊28at.com

一個案例

接下來,我們制作一個圖像分割的案例。vEl28資訊網——每日最新資訊28at.com

在這個案例中,我們將使用PyTorch和torchvision庫進行圖像分割,使用預訓練的DeepLabV3模型和PASCAL VOC數據集。vEl28資訊網——每日最新資訊28at.com

在整個的代碼中,涉及到上面所學到的內容,調整大小、裁剪、標準化等。vEl28資訊網——每日最新資訊28at.com

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 == l        r[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()

在這個案例中,我們首先定義了一系列圖像轉換函數,包括調整大小、轉換為張量和標準化。這些轉換確保輸入圖像滿足模型的需求。vEl28資訊網——每日最新資訊28at.com

然后,加載了一個示例圖像并應用了這些轉換。vEl28資訊網——每日最新資訊28at.com

接下來,我們使用了torchvision中預訓練的DeepLabV3模型來進行圖像分割。對于輸出,我們提取了預測結果的最大值索引,以獲得每個像素的預測類別。vEl28資訊網——每日最新資訊28at.com

最后,我們將預測結果轉換為彩色圖像,并可視化原始圖像和分割結果。vEl28資訊網——每日最新資訊28at.com

vEl28資訊網——每日最新資訊28at.com

這個案例強調了圖像轉換函數在圖像分割任務中的重要作用,確保輸入圖像符合模型的輸入要求,并且輸出結果易于可視化。vEl28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-55080-0.html一個超強 Pytorch 操作!!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: [備忘錄]Markdown最常用的20個語法

下一篇: 在Go中使用Goroutines和Channels發送電子郵件

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 临江市| 扎囊县| 德化县| 新丰县| 无棣县| 威海市| 苏尼特左旗| 怀仁县| 和田县| 石家庄市| 禄丰县| 红河县| 民权县| 堆龙德庆县| 通化县| 合水县| 谷城县| 平凉市| 宿松县| 喀喇| 茌平县| 巴林右旗| 宜昌市| 西城区| 绍兴市| 桂阳县| 进贤县| 惠来县| 建宁县| 确山县| 万宁市| 伊金霍洛旗| 甘孜县| 杨浦区| 舟曲县| 明光市| 林口县| 桃园市| 惠水县| 客服| 晋城|