您好,登錄后才能下訂單哦!
這篇文章主要介紹Pytorch如何使用shuffle打亂數據的操作,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
首先我得告訴你一件事,那就是pytorch中的tensor,如果直接使用random.shuffle打亂數據,或者使用下面的方式,自己定義直接寫。
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
那你就會收獲一堆的混亂數據,因為使用這種交換的方式對tensor類型的數據進行操作,會導致里面的數據出現重復復制的問題。
比如我y中的數據為【0,1,0,1,0,1】
在經過幾次shuffle,其中的數據就變成了【1,1,1,1,1,1】。
數據頓時出現混亂。
比如:
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 #轉成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() #開始隨機置換 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] #轉回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
補充:python對訓練數據集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存的是讀取的特征數據,而不是圖片路徑,不要注釋后面兩句(list無法索引內部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]
1.PyTorch是相當簡潔且高效快速的框架;2.設計追求最少的封裝;3.設計符合人類思維,它讓用戶盡可能地專注于實現自己的想法;4.與google的Tensorflow類似,FAIR的支持足以確保PyTorch獲得持續的開發更新;5.PyTorch作者親自維護的論壇 供用戶交流和求教問題6.入門簡單
以上是“Pytorch如何使用shuffle打亂數據的操作”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。