1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import numpy as np
 
def identity_func(x):
    return x
 
def softmax(a):
    c= np.max(a)
    exp_a = np.exp(a-c)
    sum_exp_a = np.sum(exp_a)
    y = exp_a/sum_exp_a
    return y
 
= np.array([0.32.94.0])
y= softmax(a)
 
print(y)
 
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs

 

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
46
47
48
49
50
51
52
53
54
55
56
57
# 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()
accuracy_cnt = 0
 
# for문을 돌며 x에 저장된 이미지 데이터를 1장씩 꺼내 predict()호출
 
# predict()는 각 레이블의 확률을 넘파이 배열로 변환
 
# 해당 이미지가 0일 확률이 0.1 1이 확률이 0.3 식으로 [0.1, 0.3, 0.2,.....]배열 반환
 
 
# p == t[i] 를 통해 정답레이블과 비교하여 맞힌 숫자를 ++ 하고 전체 이미지 숫자로 나눠 정확도를 구한다.
 
 
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)))
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs

 

 

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
 # coding: utf-8
 
import sys, os
 
 
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
 
 
# range(start,end,step) start부터 end-1까지 step간격으로 증가하는 리스트
 
# x_batch = x[i:i+batch_size] => 100장씩 묶기
 
 
 
for i in range(0len(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)))
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs

+ Recent posts