日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

torchvision.transforms包的使用

發布時間:2025/3/19 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 torchvision.transforms包的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

torchvision.transforms是專門用來對數據進行相關的處理。我們可完成的操作如下:

  • 歸一化
  • PIL.Image / numpy.ndarray 與Tensor的相互轉化
  • 對PIL.Image進行裁剪、縮放等操作

通常,在使用torchvision.transforms,我們通常使用transforms.Compose將transforms組合在一起。

PIL.Image/numpy.ndarray與Tensor的相互轉換

PIL.Image/numpy.ndarray轉化為Tensor,常常用在訓練模型階段的數據讀取,而Tensor轉化為PIL.Image/numpy.ndarray則用在驗證模型階段的數據輸出。

import numpy as np import cv2 import torch from torchvision import transforms img_path = "" # here is your img path transform = transforms.Compose([transforms.ToTensor(), # convert range [0, 255] to range [0, 1] ])# ndarray -> tensor img = cv2.imread(img_path) print(type(img)) # <class 'numpy.ndarray'> print(img.shape) # (300, 300, 3) H, W, C img1 = transform1(img) print(type(img1)) # <class 'torch.Tensor'> print(img1.shape) # torch.Size([3, 300, 300]) C, H, W print("img max value :",np.max(img), " img1 max value:", torch.max(img1)) # img max value : 255 img1 max value: tensor(1.)# PIL.Image -> tensor from PIL import Image img3 = Image.imread(img_path) print(type(img3)) #<class 'PIL.Image.Image'> img4 = transform1(img3) print(type(img4)) # <class 'torch.Tensor'> print(img4.shape) # torch.Size([3, 300, 300]) C, H, W img3.show() # present the img print("img3 max value :",np.max(img4), " img4 max value:", torch.max(img4)) # img3 max value : 255 img4 max value: tensor(1.)# tensor -> PIL.Image transform2 = transforms.Compose([transforms.ToPILImage()]) img5 = transform2(img4) img5.show()

歸一化

歸一化對神經網絡的訓練是非常重要的,那么我們如何歸一化到[-1.0, 1.0]呢?只需要將上面的transform1改為如下所示:

transform1 = transforms.Compose([transforms.ToTensor(),transforms.Normalize(mean = [0.5, 0.5, 0.5], std = [0.5, 0.5, 0.5])] )

transforms.Normalize使用如下公式進行歸一化:

channel=(channel-mean)/std

這樣一來,我們的數據中的每個值就變成了[-1,1]的數了。

# follow the code above transform = transforms.Compose([transforms.ToTensor(),] ) transform1 = transforms.Compose([transforms.ToTensor(),transforms.Normalize(mean = [0.5, 0.5, 0.5], std = [0.5, 0.5, 0.5])] ) img1 = transform(img) img2 = transform1(img) print("img1 minimun valus is: ",torch.min(img1)," img2 minimnu valus is: ",torch.min(img2)) # output: # img1 minimun valus is: tensor(0.) img2 minimnu valus is: tensor(-1.)

PIL.Image的縮放裁剪等操作

使用transforms.RandomCrop來達到目的。
文檔中對該函數的其中一句描述如下:Crop the given PIL Image at a random location.

# follow the code abovetransform3 = transforms.Compose([transforms.ToTensor(), transforms.ToPILImage(),transforms.RandomCrop((100,100)),]) img6 = transform3(img3) print(img6.size) # 100 * 100 img3.show() img6.show()

參考

圖像基本操作

總結

以上是生活随笔為你收集整理的torchvision.transforms包的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。