Open y14a-chikuwa opened 4 years ago
初版 3章P.76にてpickleを使う1節がありますが、 事前にimport pickleと記述してライブラリをインストールしておく必要があるようです。 テキストにその記載がないように思われるので、念の為投稿します!
import pickle
P.74 - 77をまとめて記述すると以下のようになるかと思います。 (P.75の画像表示のくだりを除く)
import os, sys sys.path.append(os.pardir) import numpy as np from dataset.mnist import load_mnist from PIL import Image import pickle #ここを新しく記述! def img_show(img): pil_img = Image.fromarray(np.uint8(img)) pil_img.show() 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 def sigmoid(x): return 1/(1 + np.exp(-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 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)))
(以上)
初版 3章P.76にてpickleを使う1節がありますが、 事前に
import pickle
と記述してライブラリをインストールしておく必要があるようです。 テキストにその記載がないように思われるので、念の為投稿します!P.74 - 77をまとめて記述すると以下のようになるかと思います。 (P.75の画像表示のくだりを除く)
(以上)