맛동산

미니배치 학습 본문

파이썬/딥러닝 구현

미니배치 학습

오지고지리고알파고포켓몬고 2017. 6. 3. 22:54

훈련 데이터에 대한 손실 함수의 값을 구하고, 그 값을 최대한 줄여주는 매개변수를 찾아내는것이 기계학습의 과정.

이렇게 하려면 모든 훈련 데이터를 대상으로 손실 함수 값을 구해야함.

 

수백 수천만이 넘든 데이터를 대상으로 손실함수를 계산하는 것은 비용적인 문제가 있음.

그럴때 데이터 일부를 추려 전체의 근사치로 이용하는데 이것을 mini batch라고 함

 

 
import sys, os
sys.path.append(os.pardir)  # 부모 디렉터리의 파일을 가져올 수 있도록 설정
import numpy as np
import pickle
from dataset.mnist import load_mnist
from common.functions import sigmoid, softmax

def get_data():
    (x_train, t_train), (x_test, t_test) = load_mnist(normalize=True, flatten=True, one_hot_label=True)
    return (x_train, t_train), (x_test, t_test)
# normalize = True : 0.0~1.0 사이로 정규화, False : 0~255 사이 값 유지
# flatten = 1차원 배열로 평탄화할지 -> 1*28*28 vs 784
# one_hot_label = True : 정답인 라벨의 원소만 1 [0,0,1], False : 1, 5 등 정답 자체를 저장

(x_train, t_train), (x_test, t_test) = get_data()
print(x_train.shape) # (60000, 784) # 이미지
print(t_train.shape) # (60000, 10) # 라벨

#print(len(x_train))
train_size = x_train.shape[0] # 전체 중에
batch_size = 10 # 10개의 데이터를 추출
batch_mask = np.random.choice(train_size,batch_size) # numpy의 random choice 함수를 사용하여 랜덤 선택 인덱스를 반환

print(batch_mask)
x_batch = x_train[batch_mask]
t_batch = t_train[batch_mask]

 

예제 코드가 껴있어서 복붙으론 실행이 안되지만

메타 자체는 훈련데이터 70% 검증데이터 30% 추출하던 방식이랑 똑같음

 

책에는 안나와있는데 검증파트, 오차파트, 미니배치파트를 합쳐봐야겠음

'파이썬 > 딥러닝 구현' 카테고리의 다른 글

수치 미분 구현  (0) 2017.06.08
예측 + 미니배치 + 오차  (5) 2017.06.04
MNIST 파라미터  (0) 2017.06.03
평균 제곱 오차, 교차 엔트로피 오차 함수 구현  (0) 2017.06.03
batch  (0) 2017.05.29
Comments