pytorch中的transforms模組例項詳解

2022-09-28 09:00:12 字數 1189 閱讀 3311

pytorch中的transforms模組中包含了很多種對影象資料進行變換的函式,這些都是在我們進行影象資料讀入步驟中必不可少的,下面我們講解幾種最常用的函式,詳細的內容還請參考pytorch官方文件(放在文末)。

data_transforms = transforms.compose([

transforms.randomresizedcrop(224),

transforms.randomhorizontalflip(),

transforms.totensor(),

transforms.normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])

])從上面的data_transforms變數中我們能夠看出進行了多種變換,而compose方法是將多種變換組合起來。data_transforms中一共包含了四個變換,前兩個是對pilimage進行的,分別對其進行隨機大小(預設原始影象大小的0.08-1.0)和隨機寬高比(預設原始影象寬高比的3/4-4/3)的裁剪,之後resize到指定大小224;以及對原始影象進行隨機(預設0.5概率)的水平翻轉。

第三個transforms.totensor()的變換操作是關鍵一步,它將pilimage轉變為torch.floattensor的資料形式,這種資料形式一定是c x h x w的影象格式加上[0,1]的大小範圍。它將顏色通道這一維從第三維變換到了第一維。

最後的normalize變換是對tensor這種資料格式進行的,它的操作是用給定的均值和標準差分別對每個通道的資料進行正則化。具體來說,給定均值(m1,...,mn),給定標準差(s1,..,sn),其中n是通道數(一般是3),對每個通道進行如下操作:

output[channel] = (input[channel] - mean[channel]) / std[channel]

最後需要強調一點的是,這幾個變換的先後順序有一定的講究,因為不同的方法所處理的物件不一樣,前兩種變換是對pilimage進行的,而normalize則是對tensor進行的,所以處理pilimage的變換方法(大多數方法)都需要放在totensor程式設計客棧方法之前,而處理tensor的方法(比如normalize方法)就要放在totensor方法之後。

附上pytorch官方參考:

本文標題: pytorch中的transforms模組例項詳解

本文位址: /jiaoben/python/296591.html

Pytorch 中 torchvision的錯誤

在學習pytorch的時候,使用 torchvision的時候發生了乙個小小的問題 安裝都成功了,並且import torch也沒問題,但是在import torchvision的時候,出現了如下所示的錯誤資訊 dll load failed 找不到指定模組。首先,我們得知道torchvision在...

pytorch中的乘法

總結 按元素相乘用torch.mul,二維矩陣乘法用torch.mm,batch二維矩陣用torch.bmm,batch 廣播用torch.matmul if name main a torch.tensor 1 2,3 b torch.arange 0,12 reshape 4 3 c torch...

pytorch中index select 的用法

a torch.linspace 1,12,steps 12 view 3,4 print a b torch.index select a,0,torch.tensor 0,2 print b print a.index select 0,torch.tensor 0,2 c torch.inde...