1. model 학습 전: 전체 data-set을 train-test로 나눈다
# convert data to a normalized torch.FloatTensorL: 정규화된 데이터로 변경
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])
# choose the training and test datasets: train, test를 선택
train_data = datasets.CIFAR10('data', train=True,
download=True, transform=transform)
test_data = datasets.CIFAR10('data', train=False,
download=True, transform=transform)
- 분리 이유?: overfitting(새로운 데이터 분별 못하는 문제) 문제해결
- train model로 학습, test는 새로운 데이터도 작동되는지 테스트용 model
2. Feed-forward
가중치(weight)
사용활성화함수(activation function)
을 적용3. Loss function
학습
이라함손실함수
사용해 error를 최소화하는 가중치 찾는 것이 목표(=Optimizer
)경사하강법(Gradient Descent Algorithm)
: 주어진 함수의 극소점
을 찾기 위해 gradient가 최소가 되는 지점을 찾는 방법weight
갱신은 기존 가중치에서 `학습률(learning rate)와 기존 loss 가중치를 미분한 값을 곱하여 빼는 방식(W=W-learning rate*∂L/∂W )3-1. 확률적 경사 하강법(Stochastic Gradient Descent)
overrfitting
발생, 일부 데이터를 random하게 선별하여 학습 선별된 데이터를 mini-batch
라고 함epoch
: 1epoch은 전체 training data에 대해 한번 학습한 것iteration
: 1epoch을 완료하기 위한 mini-batch의 개수