[AI 인공지능 머신러닝 딥러닝/Python | PyTorch] - 인스톨! 파이토치 강의 소개
인스톨! 파이토치 강의 소개
혁펜하임 PyTorch 강의 오리엔테이션 요약혁펜하임 채널의 '[PyTorch] 0강. 오리엔테이션' 영상은 채널 5주년 기념으로 '인스톨! 파이토치' 강의를 소개하는 내용입니다. 강의자는 최근 출간한 '이론
inner-game.tistory.com

파이토치(PyTorch) 강의는 딥러닝 프레임워크의 핵심 개념을 실습 중심으로 다루는 시리즈입니다. 텐서의 기본 개념부터 고급 인덱싱, 그리고 신경망 구축에 필수적인 함수들까지 체계적으로 학습할 수 있어, 머신러닝·딥러닝을 처음 시작하는 학습자에게 최적의 입문 과정이라 할 수 있습니다.
파이토치의 가장 기본이 되는 텐서(tensor) 개념을 다룹니다. torch.tensor() 함수를 사용해 텐서를 생성하는 방법과 텐서 간의 기본적인 연산(덧셈, 뺄셈, 곱셈 등)을 학습합니다. 텐서는 파이토치에서 데이터를 표현하는 핵심 자료구조로, numpy의 배열과 유사하지만 GPU 연산을 지원한다는 점에서 차이가 있습니다. 텐서의 shape, dtype 등 기본 속성도 함께 배웁니다.

1-1강에서는 파이토치의 가장 기본이 되는 텐서(tensor) 개념을 직관적으로 설명합니다. 텐서는 파이토치에서 데이터를 표현하는 핵심 자료구조로, NumPy의 배열(ndarray)과 유사하지만 GPU 연산을 지원한다는 점에서 딥러닝에 최적화되어 있습니다.
torch.tensor() 함수를 사용해 텐서를 생성할 수 있으며, 1차원 텐서는 리스트를, 2차원 이상의 텐서는 중첩 리스트를 전달하여 생성합니다. 텐서의 기본 속성인 shape(형태), dtype(데이터 타입), dim(차원 수)을 이해하는 것이 중요합니다. 예를 들어, tensor.shape는 텐서의 크기를, tensor.dim()은 차원의 개수를 반환합니다.
텐서 간의 기본 연산으로는 덧셈(+ 또는 torch.add()), 뺄셈(-), 곱셈(*), 나눗셈(/) 등이 있으며, 브로드캐스팅(broadcasting) 기능을 통해 서로 다른 크기의 텐서 간 연산도 가능합니다. 또한 비교 연산(torch.eq(), torch.gt() 등)과 차원 감소 연산(torch.max(), torch.mean(), torch.sum() 등)도 함께 다룹니다. 이를 통해 "텐서는 단순한 배열이 아니라 GPU에서 병렬 연산이 가능한 강력한 데이터 구조"라는 점을 체감할 수 있습니다.
텐서에서 특정 요소나 부분을 추출하는 기초 인덱싱 방법을 학습합니다. 1차원, 2차원, 다차원 텐서에서 슬라이싱을 통해 원하는 데이터를 선택하는 방법을 다룹니다. 파이썬의 리스트 인덱싱과 유사하지만 다차원에서의 인덱싱 방법을 익혀야 딥러닝 모델 개발 시 데이터를 자유롭게 다룰 수 있습니다.

1-2강에서는 텐서에서 특정 요소나 부분을 추출하는 기초 인덱싱 방법을 학습합니다. 1차원 텐서의 경우 파이썬 리스트와 동일하게 0부터 시작하는 인덱스를 사용하며, 음수 인덱스로 뒤에서부터 접근할 수도 있습니다.
2차원 이상의 다차원 텐서에서는 [행, 열] 형식으로 인덱싱하며, 슬라이싱(slicing)을 통해 원하는 범위의 데이터를 선택할 수 있습니다. 슬라이싱은 시작 인덱스는 포함하고 끝 인덱스는 제외하는 규칙을 따르며, 콜론(:)을 사용해 해당 차원의 모든 원소를 선택할 수 있습니다.
예를 들어 tensor[:, :2]는 모든 행을 선택하되, 열은 처음 두 개만 선택하는 의미입니다. 또한 tensor[::2]와 같이 스텝(step)을 지정하여 일정 간격으로 원소를 추출하는 방법도 배웁니다. 이러한 인덱싱 기법은 이미지 데이터에서 특정 채널을 추출하거나, 시계열 데이터에서 특정 시간 구간을 선택하는 등 실제 딥러닝 모델 개발 시 데이터를 자유롭게 다루는 기초가 됩니다.
고급 인덱싱 기법을 학습합니다. Boolean 인덱싱, fancy 인덱싱 등 더 복잡한 조건으로 텐서의 특정 요소들을 선택하는 방법을 다룹니다. 이러한 고급 인덱싱 기법은 데이터 전처리나 모델 출력 결과를 처리할 때 매우 유용하게 활용됩니다.
1-3강에서는 더 복잡한 조건으로 텐서의 특정 요소들을 선택하는 고급 인덱싱 기법을 다룹니다. 첫 번째로 Boolean 인덱싱(마스킹)은 조건을 만족하는 원소만 선택하는 방법으로, 특정 임계값 이상의 값만 추출하거나 이상치를 필터링할 때 매우 유용합니다.
예를 들어 x[x > 10]은 텐서 x에서 10보다 큰 값들만 추출하며, (x > 2) & (x < 15)와 같이 복합 조건도 사용할 수 있습니다. 두 번째로 Fancy 인덱싱은 리스트나 텐서를 사용하여 특정 인덱스 위치의 원소들을 선택하는 방법입니다. 심지어 [4, 3, 0, 1, 2]와 같은 인덱스 리스트로 원소의 순서를 재배열할 수도 있습니다.
더 나아가 2차원 텐서에서 각 행마다 서로 다른 열의 값을 추출하는 등 행과 열을 동시에 다르게 인덱싱하는 고급 기법도 배웁니다. 이러한 고급 인덱싱은 신경망의 출력 결과에서 최댓값의 위치를 찾거나, 특정 조건을 만족하는 데이터만 학습에 사용하는 등 데이터 전처리와 후처리 과정에서 필수적으로 활용됩니다.
파이토치에서 자주 사용되는 다양한 함수들을 소개합니다. reshape, view, transpose, squeeze, unsqueeze 등 텐서의 형태를 변환하는 함수들과 cat, stack과 같은 텐서를 결합하는 함수들을 학습합니다. 이러한 함수들은 신경망 모델을 구축하고 데이터를 처리하는 과정에서 필수적으로 사용됩니다.
1-4강에서는 신경망 모델을 구축하고 데이터를 처리하는 과정에서 필수적으로 사용되는 텐서 조작 함수들을 종합적으로 다룹니다. 첫 번째 카테고리는 형태 변환 함수로, reshape()와 view()는 텐서의 원소 개수는 유지하면서 차원만 변경합니다. view()는 메모리가 연속적일 때만 사용 가능하며 원본과 메모리를 공유하지만, reshape()는 필요시 복사본을 생성하여 더 안전합니다.
두 번째는 차원 순서 변경 함수로, transpose()는 두 개의 차원만 교환하고, permute()는 모든 차원의 순서를 자유롭게 재배열할 수 있습니다. 예를 들어 이미지 데이터의 형태를 (높이, 너비, 채널)에서 (채널, 높이, 너비)로 바꿀 때 사용합니다. 단, 이들 함수 사용 후에는 메모리가 비연속적이 되므로 view()를 쓰려면 .contiguous()를 먼저 호출해야 합니다.
세 번째는 차원 추가/제거 함수로, squeeze()는 크기가 1인 차원을 제거하고, unsqueeze()는 크기가 1인 새 차원을 추가합니다. 배치(batch) 차원을 추가하거나 제거할 때 특히 유용합니다. 네 번째는 텐서 결합 함수로, torch.cat()은 기존 차원을 따라 텐서를 연결하고, torch.stack()은 새로운 차원을 생성하여 텐서를 쌓습니다.
강의에서는 이러한 함수들을 실제 예제와 함께 연습하면서, "어떤 상황에서 어떤 함수를 써야 하는지"를 직관적으로 이해할 수 있습니다. 특히 딥러닝 모델에서 흔히 발생하는 차원 불일치 오류를 해결하는 방법과, view()와 transpose()를 혼동하면 안 되는 이유를 실습을 통해 명확히 배울 수 있습니다. 이를 통해 "텐서 조작 함수는 단순 유틸리티가 아니라, 복잡한 신경망 구조를 구현하는 핵심 도구"라는 점을 체감하게 됩니다.
주요 포인트: 이 4개 강의를 통해 파이토치의 기초를 완벽히 다질 수 있으며, 텐서 생성부터 복잡한 인덱싱, 다양한 형태 변환까지 모든 기본기를 갖추게 됩니다. 특히 GPU 가속 연산의 이점, 메모리 공유 vs 복사의 차이, 그리고 실무에서 자주 마주치는 차원 관련 오류를 예방하는 방법까지 배울 수 있어, 본격적인 딥러닝 모델 구현을 위한 탄탄한 토대를 마련할 수 있습니다.
[AI 인공지능 머신러닝 딥러닝/Python | PyTorch] - 인스톨! 파이토치 2강 | 파이토치의 핵심! autograd를 알아보자 (2강)
인스톨! 파이토치 2강 | 파이토치의 핵심! autograd를 알아보자 (2강)
[AI 인공지능 머신러닝 딥러닝/Python | PyTorch] - 인스톨! 파이토치 강의 소개 인스톨! 파이토치 강의 소개혁펜하임 PyTorch 강의 오리엔테이션 요약혁펜하임 채널의 '[PyTorch] 0강. 오리엔테이션' 영상
inner-game.tistory.com