맛동산

batch 본문

파이썬/딥러닝 구현

batch

오지고지리고알파고포켓몬고 2017. 5. 29. 21:34

배열을 하나씩 던져주는것보다 묶음으로 던져주는게 순수 CPU 가용량이 좋다

 

 

 
# coding: utf-8
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=False)
    return x_test, t_test


def init_network():
    with open("sample_weight.pkl", 'rb') as f:
        network = pickle.load(f)
    return network


def predict(network, x):
    w1, w2, w3 = network['W1'], network['W2'], network['W3']
    b1, b2, b3 = network['b1'], network['b2'], network['b3']

    a1 = np.dot(x, w1) + b1
    z1 = sigmoid(a1)
    a2 = np.dot(z1, w2) + b2
    z2 = sigmoid(a2)
    a3 = np.dot(z2, w3) + b3
    y = softmax(a3)

    return y


x, t = get_data()
network = init_network()

batch_size = 100 # 배치 크기
accuracy_cnt = 0

for i in range(0, len(x), batch_size):
    x_batch = x[i:i+batch_size]
    y_batch = predict(network, x_batch)
    p = np.argmax(y_batch, axis=1)
    accuracy_cnt += np.sum(p == t[i:i+batch_size])

print("Accuracy:" + str(float(accuracy_cnt) / len(x)))

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

MNIST 파라미터  (0) 2017.06.03
평균 제곱 오차, 교차 엔트로피 오차 함수 구현  (0) 2017.06.03
정규화  (0) 2017.05.29
np.max vs np.argmax  (0) 2017.05.29
Softmax 함수 구현  (0) 2017.05.22
Comments