|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import numpy as np import sys,os sys.path.append(os.pardir) from p88func import * from mnist import load_mnist (x_train, t_train),(x_test,t_test) = load_mnist(normalize= True, one_hot_label=True) train_loss_list = [] iters_num = 10000 train_size = x_train.shape[0] batch_size = 100 learning_rate = 0.1 network = TwoLayerNet(input_size = 784, hidden_size = 50, output_size=10) for i in range(iters_num): batch_mask = np.random.choice(train_size,batch_size) x_batch = x_train[batch_mask] t_batch = t_train[batch_mask] grad = network.gradient(x_batch,t_batch) for key in ('W1', 'b1', 'W2', 'b2'): network.params[key] -= learning_rate * grad[key] loss = network.loss(x_batch,t_batch) train_loss_list.append(loss) |
MNIST 데이터를 가지고 미니배치 학습을 구현한 코드이다. 훈련데이터와 테스트 데이터로 나누었고 정규화와 one_hot_encoding을 하였다. 앞서 만들었던 TwoLayerNet(신경망) 을 사용하여 학습한다. iters_num= 10,000이므로 for문을 10,000번…