밑바닥부터 배우는 딥러닝
-
미니배치 학습 구현하기딥러닝 2020. 1. 16. 17:38
미니배치 학습이란 훈련 데이터 중 일부를 꺼내고(미니배치), 그 미니배치에 대해서 경사법으로 매개변수를 갱신하는 것 앞의 2층 신경망 클래스와 MNIST 데이터셋을 사용하여 구현해 봅시다. 이때 학습과정에서 오버피팅이 일어나지 않게 해야합니다. 어떻게 할까요? 학습 도중에 시험 데이터로 오버피팅이 일어나는지 안나는지 확인하면서 학습을 하면 됩니다. (신경망은 범용성을 가져야하므로 시험 데이터는 훈련 데이터와 달라야겠죠.) 오버피팅이 일어나면 학습을 중단하고 다른 데이터셋으로 훈련을 하면 됩니다. 일정 구간마다 평가를 하고 정확도를 기록하면 좋을 거 같네요. 구현 import numpy as np from dataset.mnist import load_mnist from two_layer_net impor..
-
2층 신경망 클래스 구현하기딥러닝 2020. 1. 16. 17:26
미니배치 학습을 구현해보기 전에 우선 2층 신경망 클래스를 구현해보겠습니다. 2층 신경망에 필요한 메소드(기능)는 무엇이 있을까요? 매개변수(가중치, 편향) 초기화, 예측값, 손실함수의 기울기, 정확도... 이 정도가 있겠네요. 그럼 구현해봅시다. import sys, os sys.path.append(os.pardir) from common.functions import* from common.gradient import numerical_gradient #2층 신경망 class TwoLayerNet: #가중치 초기화 #input_size : 입력층의 갯수 #hidden_size : 은닉층의 갯수 #output_size : 출력층의 갯수 #weight_init_std : ?? def __init__(s..