pytorch的資料增強

2021-10-04 23:14:34 字數 2204 閱讀 4495

在利用pytorch進行深度學習的時候,經常是在固定的資料集上進行epoch次訓練,常用**如下所示:

import torch

import torch.nn as nn

from torchvision import datasets, transforms

transform_list = [

transforms.resize((256,128), interpolation=3),

transforms.randomhorizontalflip(p=0.5),

transforms.pad(10),

transforms.randomcrop((256,128)),

transforms.totensor(),

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

]transform_compose = transforms.compose(transform_list)

try_dataset1 = datasets.imagefolder('./try_data2',transform_compose)

try_dataloader1 = torch.utils.data.dataloader( try_dataset1, batch_size=4,shuffle=true )

epoch = 10

for i in range(epoch):

for data in try_dataloader1:

inputs,labels = data

print(inputs.sum())

但是我們的try_dataloader1在進入epoch迴圈之前就已經定義了,那麼對於資料的增強處理,比如裁剪、翻轉等,難道說只進行了一次嗎?答案是否定的,在每次獲取data的時候,都會進行這種資料增強操作,實驗如下:

transform_compose = transforms.compose(transform_list)

try_dataset1 = datasets.imagefolder('./try_data2',transform_compose)

try_dataloader1 = torch.utils.data.dataloader( try_dataset1, batch_size=4 )

epoch = 10

for i in range(epoch):

print("epoch {}" .format(i))

for data in try_dataloader1:

inputs,labels = data

print(inputs.sum())

如果只對資料增強操作進行了一次的話,那麼每次的.sum值應該是相同的 ,但是結果卻是不同的,這說明每當獲得一次data,都相當於是在獲取的操作中進行了資料增強的操作。

結果如下:

epoch 0

tensor(-197226.9688)

tensor(-162211.0781)

tensor(-102560.9062)

epoch 1

tensor(-196300.1250)

tensor(-164609.2188)

tensor(-82898.9531)

epoch 2

tensor(-194079.5156)

tensor(-175566.)

tensor(-94034.0469)

epoch 3

tensor(-204648.8438)

tensor(-163293.3281)

tensor(-93733.1641)

epoch 4

tensor(-194449.8750)

tensor(-145408.9688)

tensor(-107744.4062)

epoch 5

tensor(-220769.4219)

tensor(-163949.2188)

tensor(-88742.4688)

epoch 6

tensor(-204906.4375)

tensor(-155830.3438)

tensor(-87216.5469)

epoch 7

pytorch系列之實用資料增強

pytorch資料增強 from pil import image,imagefilter from torchvision import datasets,transforms img image.open fn fn是路徑 記住pytorch資料增強傳入的格式是pil mg img.filter...

學習筆記 pytorch中資料增強

pytorch的資料增強功能並非是事先對整個資料集進行資料增強處理,而是在從dataloader中獲取訓練資料的時候 獲取每個epoch的時候 才進行資料增強。舉個例子,如下面的資料增強 transform train transforms.compose transforms.randomcrop...

資料增強 自動駕駛中的資料增強

本文摘取了matt cooper對自動駕駛資料增強的一些看法。文章的核心觀點是,針對特定的模型必須分析確定特定的資料增強器,不能把增強器技術黑箱使用,否在會產生過擬合。問題起源 作者在實習的時候實現乙個資料增強器,以改進物件檢測工作。這其中,一種簡單的技術被稱為裁剪正則化。簡而言之,就是在輸入影象中...