|
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
import sys,os sys.path.append(os.pardir) import numpy as np from mnist import load_mnist from PIL import Image import matplotlib.pyplot as plt from p88func import * import pickle (x_train, t_train), (x_test, t_test) = load_mnist(flatten=True, normalize=False) 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() accuracy_cnt = 0 for i in range(len(x)): y = predict(network, x[i]) p = np.argmax(y) if p == t[i]: accuracy_cnt += 1 print("Accuracy : " + str(float(accuracy_cnt) / len(x))) |
third layer을 통해 약 93%의 정확도를 내고 있다.