암기카드
눌러서 뒷면 보기.
용어 · 이름 (34)
tensor
Tensor (텐서)숫자를 담는 다차원 배열. PyTorch의 기본 그릇
shape
모양 (torch.Size)각 차원의 길이. (4, 3)은 4행 3열
dtype
data type (자료형)원소의 종류. torch.int64, torch.float32 등
device
장치텐서가 놓인 곳. cpu 또는 cuda(GPU)
ndim / numel()
number of dimensions / elements차원 수 / 전체 원소 수
CPU / GPU
Central / Graphics Processing Unit복잡한 일을 차례로 / 단순 계산을 한꺼번에 병렬로
CUDA
Compute Unified Device Architecture엔비디아 GPU로 계산하게 해 주는 기술
Colab
Google Colaboratory브라우저에서 무료 GPU(T4)를 쓰는 온라인 노트북
self
자기 자신메서드 안에서 이 인스턴스를 가리키는 첫 인자
__init__
initializer (생성자)인스턴스를 만들 때 자동 실행되어 초기 상태를 저장
__call__
call (호출 가능 객체)인스턴스를 f(3)처럼 함수로 부를 때 실행되는 메서드
super()
super (부모 접근)부모 클래스를 가리킴. super().__init__()으로 부모 초기화
nn.Module
Neural Network Module모든 PyTorch 모델의 부모 클래스. __init__과 forward만 만들면 됨
nn.Linear
Linear (Fully Connected) layery = xWᵀ + b 계산. weight (출력, 입력), bias (출력,)
FC
Fully Connected모든 입력이 모든 출력에 연결된 층(= Linear)
ReLU
Rectified Linear Unit음수는 0, 양수는 그대로. 학습 파라미터 없음
nn.Parameter
Parameter모델에 등록되어 학습되는 텐서(기본 requires_grad=True)
nn.Sequential
Sequential층을 순서대로 이어 한 모델처럼 쓰는 상자
forward
순전파 (forward propagation)입력에서 예측값까지 계산. model(x)가 호출
backward
역전파 (backpropagation)loss에서 거꾸로 gradient를 계산해 .grad에 저장(값은 안 바꿈)
grad
gradient (기울기)weight를 바꿀 때 loss가 변하는 방향과 정도
requires_grad
gradient 필요 여부True여야 backward 때 .grad가 계산·저장됨
zero_grad
gradient 초기화누적된 grad를 지움. 학습 step의 첫 단계
loss
손실예측과 정답의 차이를 숫자 하나로 요약한 값
MSE
Mean Squared Error(예측−정답)²의 평균. nn.MSELoss
optimizer
최적화기grad로 weight를 고치는 도구(optim.SGD, Adam)
SGD
Stochastic Gradient Descentw ← w − lr × grad
lr
learning rate (학습률)한 번에 weight를 얼마나 움직일지 정하는 값. 보통 아주 작게
Dataset
데이터셋샘플을 번호로 꺼내는 데이터 모음. __len__, __getitem__
DataLoader
데이터 로더Dataset에서 샘플을 모아 batch로 묶어 주는 도구
batch_size
epoch
shuffle
섞기epoch마다 데이터 순서를 섞을지 정하는 옵션
drop_last
마지막 버리기batch_size보다 적게 남은 마지막 batch를 버릴지 정하는 옵션
공식 · 숫자 (15)
nn.Linear(in, out) 파라미터 수
weight = out×in, bias = out → 합계 in×out + out. 예 Linear(3,2) = 8 · Linear(5,3) = 18 · Linear(64,16) = 1,040
nn.Linear 모양
weight (out, in), bias (out,). 입력 (N, in) → 출력 (N, out). 계산은 x @ W.T + b
여러 층 모델의 파라미터 수
각 층의 in×out + out을 더한다. TinyMLP(4,8,2) = (32+8) + (16+2) = 58. 수업 PPT의 6×5+3×6+1×3 = 51은 bias 제외
인덱스와 슬라이싱
번호는 0부터. a[1:4]는 1~3번(끝 번호 제외). x[:,1] → 차원이 사라져 (3,), x[:,1:2] → 차원 유지 (3,1)
브로드캐스팅 규칙
오른쪽 끝부터 비교해 같거나, 하나가 1이거나, 한쪽에 없으면 가능. (2,3)+(3,) → (2,3) / (4,1)+(1,5) → (4,5) / (2,3)+(2,) → 불가
이미지 batch 모양
(N, C, H, W) = (장 수, 채널, 높이, 너비). (8,1,28,28)은 28×28 흑백 8장
cat과 stack
cat은 기존 차원에 이어 붙임(차원 수 그대로), stack은 새 차원을 만들어 쌓음(차원 수 +1). (2,3) 둘 → cat(dim=0) (4,3) / stack (2,2,3)
NumPy 변환
from_numpy · .numpy()는 메모리 공유(한쪽을 바꾸면 같이 바뀜), torch.tensor(arr)는 복사(독립)
학습 5단계
zero_grad → forward(prediction) → loss → backward → step. batch마다 한 번씩
SGD 업데이트
w ← w − lr × grad. 예 w=0.7, grad=−2, lr=1 → 2.7 / w=1, grad=−5, lr=0.1 → 1.5. 학습률은 보통 0.001 수준처럼 아주 작게
외울 gradient 값
w=3, L=w² → 6 / w=2, L=3w²+1 → 12 / (wx−t)², w=2, x=3, t=10 → −24 / 누적 w=2: 4 → 16 → 32 / W=[1,2,3], X=[2,1,4], L=(W@X)² → [64,32,128]
batch 개수와 step 수
len(loader) = ⌈샘플 수 ÷ batch_size⌉ (drop_last=True면 내림). 10개, batch 4 → 3 ([4,4,2]) 또는 2 ([4,4]). 전체 step = epoch 수 × batch 개수 (90개, batch 20, 30 epoch → 5×30 = 150)
epoch 평균 loss
Σ(batch loss × batch 샘플 수) ÷ 전체 샘플 수. 예 (3×4 + 3×4 + 6×2) ÷ 10 = 3.6
MSE 계산
mean((ŷ−y)²). [3,4] vs [1,5] → 2.5. prediction (3,1)과 target (3,)을 그대로 빼면 3×3으로 브로드캐스팅되어 틀린 값(예 6.0, 맞는 값 2.0)
모양 흐름 예
Linear(3,2): (4,3) → (4,2) / flatten(start_dim=1) 후 Linear(16,10): (8,1,4,4) → (8,16) → (8,10) / ReLU는 shape 불변