pytorch中的transforms模塊實例詳解
pytorch中的transforms模塊中包含了很多種對圖像數(shù)據(jù)進行變換的函數(shù),這些都是在我們進行圖像數(shù)據(jù)讀入步驟中必不可少的,下面我們講解幾種最常用的函數(shù),詳細的內(nèi)容還請參考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進行的,分別對其進行隨機大?。J原始圖像大小的0.08-1.0)和隨機寬高比(默認原始圖像寬高比的3/4-4/3)的裁剪,之后resize到指定大小224;以及對原始圖像進行隨機(默認0.5概率)的水平翻轉(zhuǎn)。
第三個transforms.ToTensor()的變換操作是關鍵一步,它將PILImage轉(zhuǎn)變?yōu)閠orch.FloatTensor的數(shù)據(jù)形式,這種數(shù)據(jù)形式一定是C x H x W的圖像格式加上[0,1]的大小范圍。它將顏色通道這一維從第三維變換到了第一維。
最后的Normalize變換是對tensor這種數(shù)據(jù)格式進行的,它的操作是用給定的均值和標準差分別對每個通道的數(shù)據(jù)進行正則化。具體來說,給定均值(M1,...,Mn),給定標準差(S1,..,Sn),其中n是通道數(shù)(一般是3),對每個通道進行如下操作:
output[channel] = (input[channel] - mean[channel]) / std[channel]
最后需要強調(diào)一點的是,這幾個變換的先后順序有一定的講究,因為不同的方法所處理的對象不一樣,前兩種變換是對PILImage進行的,而Normalize則是對tensor進行的,所以處理PILImage的變換方法(大多數(shù)方法)都需要放在ToTensor方法之前,而處理tensor的方法(比如Normalize方法)就要放在ToTensor方法之后。
附上pytorch官方參考:https://pytorch.org/docs/stable/torchvision/transforms.html?highlight=torchvision%20transforms
以上這篇pytorch中的transforms模塊實例詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python模塊psycopg2連接postgresql的實現(xiàn)
本文主要介紹了Python模塊psycopg2連接postgresql的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-07-07
Pandas 類型轉(zhuǎn)換astype()的實現(xiàn)
本文主要介紹了Pandas 類型轉(zhuǎn)換astype()的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07
基于文件路徑中/?\?//?\\的用法以及絕對相對路徑的問題
這篇文章主要介紹了基于文件路徑中/?\?//?\\的用法以及絕對相對路徑的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02

