Pytorch에서 shuffle을 사용하여 데이터를 흐트러뜨리는 작업
이 물건은 내가 이 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]이다.
몇 번의 셔플을 거치면 그 중의 데이터는 [1,1,1,1,1,1,1]이 된다.
데이터에 갑자기 혼란이 생겼다.
정확한 방식은 먼저numpy로 전환한 다음에 데이터를 교환하는 것이다
예:
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 (혼란) 방식1. 수조를 통해 셔플
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]
2. 색인 인덱스를 통해 shuffle
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]
이상의 개인적인 경험으로 여러분께 참고가 되었으면 좋겠습니다. 또한 많은 응원 부탁드립니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Pytorch에서 shuffle을 사용하여 데이터를 흐트러뜨리는 작업우선 내가 너에게 한 가지 알려줘야 할 것은 바로pytorch의tensor이다. 만약에random을 직접 사용한다면.shuffle는 데이터를 흐트러뜨리거나 아래의 방식을 사용하여 직접 쓰기를 정의합니다. 그러면 혼란...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.