deeplearningをやってみる7

『ゼロから作るDeep Learning』の第3章の後半(3.5~3.7)。
2時間半ぐらいかかった。

機械学習は2つに大別される→分類問題と回帰問題

分類問題・・・写真から男なのか女なのかを分類するような処理
回帰問題・・・写真から年齢をあてるような処理

分類問題には、ソフトマックス関数
回帰問題には、恒等関数を使う

以下のエラーが出た。ぐぐったら結構結果が出てきた(この本やってる人多いんだろうな)

>>> from dataset.mnist import load_mnist
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'dataset'

----- 3.6.1のコード

import sys, os
sys.path.append(os.pardir)
os.chdir('D:\deeplearning\deep-learning-from-scratch-master\ch03') # <<<< 追加

import numpy as np
from dataset.mnist import load_mnist
from PIL import Image

def img_show(img):
pil_img = Image.fromarray(np.uint8(img)) # << uint!
pil_img.show()

(x_train, t_train), (x_test, t_test) = load_mnist(flatten=True, normalize=False)
img = x_train[0]
label=t_train[0]
print(label) # 5

print(img.shape)
img = img.reshape(28,28)
print(img.shape)

img_show(img)


---- 3.6.2

os.chdir('D:\deeplearning\deep-learning-from-scratch-master\ch03') # <<<< 追加

import pickle # <<< これを忘れていた

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=sigmoid(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("Accuyracy" + str(float(accuracy_cnt)/len(x)))

いいなと思ったら応援しよう!