Help us understand the problem. What is going on with this article?

Deeplerning基礎知識おさらい活動 その2

目的

Deeplerning基礎知識おさらい活動 第二回です!!
今回はニューラルネットワーク(3層)の推論処理に関してです!!
実際にニューラルネットがどのような手順で推論処理を行っているのかをコードを追いながら見ていきたいと思います!!
(今回のソースは「0から始まるDeeplearning」という著書を基にしています。)

ニューラルネットワークの推論処理

predict.py
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

早速、上記のコードを追っていきたいと思います。
まず、networkには既にラベル毎に('W1','b1'など)既に学習済みの重みが入っています。
それを各重み(W)、バイアス(b)に代入しています。それから各層のそれぞれの計算を行なっており、最後にsoftmax関数を用いて値を0~1に変換し、確率として表します!!

続いて以下のコードを追って行きましょう!!

doing_predict.py
#データセットを代入(xにデータ、tにラベル)
x, t = get_data()
#networkに学習済みの重みパラメータを代入
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))) 

get_data()はデータとラベルを返す関数です。
networkに学習済みのパラメータを保存します。

そしてfor文の中の処理を見て行きましょう。
iには一つのデータの番地が入っています。そのi番目のデータを先ほどのpredict関数にかますことによって確率としてyが得られます。
pにはyの最も確率の高かったインデックスが入りそれとラベルと比較をします。
正しければaccuracy_cntに1が加算されます。
この工程を繰り返しデータの個数で割ってあげることで正解率(推論結果)を出します。

まとめ

実際の推論処理の工程を見て行きましたがラベルとの差分→繰り返す→確率を出すという順番でしたね。
推論の説明が難しくコードを用いて説明して見ました。
なかなか難しかったです。。
いかがでしたでしょうか!!
またお願い致します!!

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away