前提・実現したいこと
Errorメッセージがでて困っています
別に作成したプログラムでは通ったのですがこのプログラムだとIndexが文字列では駄目だと言われます
どこに問題があるかわかる方お願いします。
発生している問題・エラーメッセージ
Traceback (most recent call last):
File "76.py", line 50, in <module>
y = predict( x[i], network )
File "76.py", line 31, in predict
W1, W2, W3 = network['W1'], network['W2'], network['W3']
IndexError: only integers, slices (:
), ellipsis (...
), numpy.newaxis (None
)
該当のソースコード
import numpy as np
import sys, os
sys.path.append(os.pardir)
from dataset.mnist import load_mnist
from PIL import Image
import pickle
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 z3 = sigmoid(a3) y = softmax(z3) return y
def sigmoid(x):
y = 1/(1+exp(-x))
return y
def softmax(x):
c = np.max(x)
np_exp = np.exp(x-c)
np_sum = np.sum(np_exp)
y = np_exp/np_sum
return y
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
accuracy_cnt = 0 #正確性
x, y = get_data()
network = init_network()
for i in range( len(x)):
y = predict( x[i], network )
p = np.argmax(y)
if p == t[i] : accuracy_cnt += 1
print('Accuracy:' + str(float(accuracy_cnt)/len(x)))
回答1件
あなたの回答
tips
プレビュー