• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    해결됨

처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 [데이터과학 Part3] - 지금까지 익힌 이론과 미니배치까지 적용된 딥러닝 코드 구현해보기 에서 질

23.07.19 17:19 작성 조회수 281

0

9분 20초쯤에

indices = torch.randperm(x.size(0)) print(indices) x_batch_list = torch.index_select(x, 0, index=indices) y_batch_list = torch.index_select(y, 0, index=indices)

indices를 랜덤한 순서로 넣었다고 하셨는데

그리고

x_batch_list = torch.index_select(x, 0, index=indices) 이걸사용하는 이유가뭔가요?

어차피 지금 랜덤하게 바뀐순서라면

x_batch_list = x[indices] 이걸통해서 바로 넣어도 되는게 아닌가요?

 

torch.index_select 이건 인덱스로 원하는 데이터만 선택적으로 추출하기에 적합하다고 알고있습니다. 이번에 굳이 x_batch_list = x[indices] 이게아닌 x_batch_list = torch.index_select(x, 0, index=indices) 이걸 사용한 이유를 알고 싶습니다.

제가 아는것이 전부가 아닌 또다른게 있는가해서요

답변 1

답변을 작성해보세요.

0

안녕하세요. 답변 도우미입니다.

기본적으로 IT에서 동일한 또는 유사한 기능을 하는 다양한 문법이 있는 것은 일반적이긴 하거든요. 그래서, 말씀하신 방법과 크게 차이는 없습니다.

PyTorch의 torch.index_select와 인덱싱 연산자인 []를 통한 인덱싱 방법은 매우 비슷한 기능을 제공합니다. 둘 다 텐서에서 특정 인덱스를 기반으로 원하는 요소를 선택하도록 합니다.

그럼에도 불구하고, 코드에서 torch.index_select를 사용하는 특별한 이유가 있다면, 다음과 같은 이유들이 있을 수 있습니다:

1. 명시성: torch.index_select 함수는 선택하려는 차원을 명시적으로 지정해야 합니다. 이는 코드를 읽는 사람에게 해당 연산이 어떤 차원에서 수행되는지 명확히 보여주는 장점이 있습니다. x[indices] 표현식은 암시적으로 첫 번째 차원에서 인덱싱을 수행한다는 것을 가정하므로, 이 점이 명시성에서 약간의 차이를 만들 수 있습니다.

2. 성능: 일부 상황에서 torch.index_select[] 연산자보다 약간 더 빠를 수 있습니다. 하지만 대부분의 일반적인 사용 사례에서는 성능 차이는 무시할 수 있을 정도로 작습니다.

3. 호환성: 일부 라이브러리 또는 환경에서는 torch.index_select를 선호할 수 있습니다. 예를 들어, autograd의 역전파 계산이 torch.index_select와 더 잘 작동할 수 있습니다.

그럼에도 불구하고, 주어진 상황에서 torch.index_select(x, 0, indices)x[indices]는 동일한 결과를 제공하므로, 어떤 방법을 선택할지는 주로 개발자의 선호도와 스타일에 따라 편하게 사용하시면 됩니다.

감사합니다.