首先我得告訴你一件事,那就是pytorch中的tensor,如果直接使用random.shuffle打亂數(shù)據(jù),或者使用下面的方式,自己定義直接寫。
def Shuffle(self, x, y,random=None, int=int): if random is None: random = self.random for i in range(len(x)): j = int(random() * (i + 1)) if j=len(x)-1: x[i],x[j]=x[j],x[i] y[i],y[j]=y[j],y[i] retrun x,y
那你就會(huì)收獲一堆的混亂數(shù)據(jù),因?yàn)槭褂眠@種交換的方式對(duì)tensor類型的數(shù)據(jù)進(jìn)行操作,會(huì)導(dǎo)致里面的數(shù)據(jù)出現(xiàn)重復(fù)復(fù)制的問題。
比如我y中的數(shù)據(jù)為【0,1,0,1,0,1】
在經(jīng)過幾次shuffle,其中的數(shù)據(jù)就變成了【1,1,1,1,1,1】。
數(shù)據(jù)頓時(shí)出現(xiàn)混亂。
比如:
def Shuffle(self, x, y,random=None, int=int): """x, random=random.random -> shuffle list x in place; return None. Optional arg random is a 0-argument function returning a random float in [0.0, 1.0); by default, the standard random.random. """ if random is None: random = self.random #random=random.random #轉(zhuǎn)成numpy if torch.is_tensor(x)==True: if self.use_cuda==True: x=x.cpu().numpy() else: x=x.numpy() if torch.is_tensor(y) == True: if self.use_cuda==True: y=y.cpu().numpy() else: y=y.numpy() #開始隨機(jī)置換 for i in range(len(x)): j = int(random() * (i + 1)) if j=len(x)-1:#交換 x[i],x[j]=x[j],x[i] y[i],y[j]=y[j],y[i] #轉(zhuǎn)回tensor if self.use_cuda == True: x=torch.from_numpy(x).cuda() y=torch.from_numpy(y).cuda() else: x = torch.from_numpy(x) y = torch.from_numpy(y) return x,y
補(bǔ)充:python對(duì)訓(xùn)練數(shù)據(jù)集shuffle(打亂)的一些方式
image_list=[] # list of images label_list=[] # list of labels temp = np.array([image_list, label_list]) temp = temp.transpose() np.random.shuffle(temp) images = temp[:, 0] # array of images (N,) labels = temp[:, 1]
image_list=[] # list of images label_list=[] # list of labels ##如果image_list存的是讀取的特征數(shù)據(jù),而不是圖片路徑,不要注釋后面兩句(list無法索引內(nèi)部list) #[list indices must be integers or slices, not list] #image_list = np.array(image_list) #label_list = np.array(label_list) index = [i for i in range(len(image_list))] np.random.shuffle(index) images = image_list[index] labels = label_list[index]
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
標(biāo)簽:潛江 株洲 銅川 通遼 呂梁 常德 阿里 黑龍江
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Pytorch使用shuffle打亂數(shù)據(jù)的操作》,本文關(guān)鍵詞 Pytorch,使用,shuffle,打亂,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。