0Pricing
Learn AI with Python · 강의

PyTorch 텐서와 Autograd

torch.Tensor, requires_grad, backward(), 그래디언트 계산, 텐서 연산을 다룹니다.

PyTorch 텐서와 Autograd은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.

PyTorch란 무엇인가요?

PyTorch는 GPU 가속과 자동 미분을 지원하는 다차원 배열인 텐서를 중심으로 구축된 딥러닝 프레임워크입니다. 먼저 반드시 익혀야 할 두 가지 핵심은 텐서와 자동 미분입니다.

pip install torch

import torch

텐서 생성

텐서는 NumPy 배열과 비슷하지만 GPU에 저장할 수 있고 기울기를 추적할 수 있습니다. torch.tensor로 텐서를 생성합니다. 텐서에는 shape과 dtype이 있습니다.

x = torch.tensor([1.0, 2.0, 3.0])
print(x.shape)   # torch.Size([3])
print(x.dtype)   # torch.float32

텐서 연산

텐서는 원소별 수학 연산, 행렬 곱셈, 형태 변경을 지원합니다. 연산은 벡터화되어 하드웨어에서 빠르게 실행됩니다. 이는 모든 신경망의 계산 기반입니다.

a = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
b = torch.tensor([[5.0, 6.0], [7.0, 8.0]])
print(a + b)
print(a @ b)  # matrix multiply

requires_grad: 기울기 추적

기울기를 계산하려면 requires_grad=True로 텐서를 생성합니다. 그러면 PyTorch는 해당 텐서에 적용되는 모든 연산을 기록하고, 나중에 미분할 수 있는 계산 그래프를 구성합니다.

x = torch.tensor([2.0, 3.0], requires_grad=True)
print(x.requires_grad)  # True

계산 구성하기

기울기를 추적하는 텐서에 연산을 적용하여 스칼라 출력값을 만듭니다. 여기서는 각 원소를 제곱한 뒤 모두 더해 x에 대해 미분할 수 있는 하나의 숫자를 얻습니다.

x = torch.tensor([2.0, 3.0], requires_grad=True)
y = x.pow(2).sum()   # y = x0^2 + x1^2
print(y)             # tensor(13., grad_fn=...)

backward() 호출하기

스칼라에 .backward()를 호출하면 역전파를 통해 기울기를 계산할 수 있습니다. PyTorch는 기록된 그래프를 역순으로 따라가며 미분값을 자동으로 채웁니다.

y.backward()

.grad 읽기

backward()를 실행한 후 각 입력 텐서는 .grad에 자신의 기울기를 저장합니다. y = sum(x^2)의 도함수는 2x이므로 기울기는 [4, 6]입니다.

print(x.grad)  # tensor([4., 6.])

기울기는 누적됩니다

주의할 점은 여러 번 backward()를 호출하면 기울기가 더해진다는 것입니다. 학습 반복문에서는 매 단계마다 x.grad.zero_() 또는 최적화 알고리즘의 zero_grad()로 기울기를 0으로 만들어야 합니다.

x.grad.zero_()  # reset before the next backward()

추론에 사용하는 torch.no_grad()

추론 중에는 기울기가 필요하지 않으며, 기울기를 추적하면 메모리만 낭비됩니다. 예측 코드를 with torch.no_grad():로 감싸 계산 그래프 생성을 비활성화하면 더 빠르게 실행할 수 있습니다.

with torch.no_grad():
    preds = x.pow(2).sum()
    print(preds.requires_grad)  # False

detach()로 기울기 흐름 중단하기

.detach()는 데이터를 공유하지만 계산 그래프에서는 분리된 텐서를 반환합니다. 기울기가 해당 값을 거슬러 올라가지 않도록 하면서 값을 사용하고 싶을 때 이용합니다. 예를 들어 값을 기록하거나 네트워크의 일부를 고정할 때 사용할 수 있습니다.

z = x.detach()
print(z.requires_grad)  # False

자동 미분이 중요한 이유

자동 미분은 딥러닝을 실용적으로 만들어 주는 핵심입니다. 순전파 계산을 정의하면 PyTorch가 역전파에 필요한 기울기를 자동으로 계산합니다. 작성하는 모든 학습 반복문은 requires_grad, backward, .grad를 기반으로 합니다.

빠른 확인

자동 미분에 대한 이해도를 확인해 보세요.

복습: 텐서와 자동 미분

torch.tensor로 텐서를 생성하고 requires_grad=True로 기울기 추적을 활성화했습니다. 출력값을 계산하고 .backward()를 실행한 뒤 .grad에서 미분값을 읽었습니다. 기울기가 누적된다는 점을 배우고, 추론에는 torch.no_grad()를 사용했으며, 기울기 흐름을 끊을 때는 .detach()를 사용했습니다.

자주 묻는 질문

“PyTorch 텐서와 Autograd” 강의는 무료인가요?

네 — “PyTorch 텐서와 Autograd” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.

“PyTorch 텐서와 Autograd”에서 뭘 배우나요?

torch.Tensor, requires_grad, backward(), 그래디언트 계산, 텐서 연산을 다룹니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“PyTorch 텐서와 Autograd” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. PyTorch 텐서와 Autograd
  2. 사용자 지정 데이터셋과 DataLoaders
  3. PyTorch에서 CNN 구축 및 학습
  4. YOLOv8을 활용한 객체 탐지
← Learn AI with Python(으)로 돌아가기