エンジニア

なんくるないさ

「このブログはアフィリエイト広告を利用しています」

sone neural network console の簡単な使い方(推論編)

jump1268.hatenablog.com
前回はNNCを使って学習をプログラミングなしでやりました。

今回は、学習に使ったモデルとパラメータを読み込み、推論するとこまでやります。

1:モデルコードのエクスポート
2:パラメータの読み込み
3:推論

の順番です。

1:モデルコードのエクスポート

この画面で右クリック
f:id:jump1268:20181209163651p:plain
すると
f:id:jump1268:20181209163708p:plain
となります。
export→pythonコードを選択。

これを自分が使ってる環境に張り付け。
f:id:jump1268:20181209163944p:plain
このときreturnの前の
カテゴリークロスエントロピーを#でコメントアウトします
f:id:jump1268:20181209164029p:plain
おしまい

2:パラメータの読み込み

この画面にして
f:id:jump1268:20181209164104p:plain
良い評価だったファイルをダブルクリック
するとそのフォルダが開きます
f:id:jump1268:20181209164209p:plain

その中のparameters.h5のパスをコピー
(右クリックのプロパティで場所をコピーします)

でプログラムを追加します
f:id:jump1268:20181209164355p:plain
こんな感じ patの前にrをつけるとうまくいきます。
これで2もおしまい

3:推論

自分が推論したcsvファイルを下のように読み込みます
f:id:jump1268:20181209164641p:plain

これでおけ

全体は

import nnabla as nn
import nnabla.functions as F
import nnabla.parametric_functions as PF

def network(x, y, test=False):
    # Input:x -> 30,2
    # Reshape -> 1,10,6
    h = F.reshape(x, (x.shape[0],1,10,6))
    # Convolution -> 16,9,9
    h = PF.convolution(h, 16, (2,2), (0,2), name='Convolution')
    # ReLU
    h = F.relu(h, True)
    # MaxPooling -> 16,9,17
    h = F.max_pooling(h, (1,1), (1,1), True, (0,4))
    # PReLU
    h = PF.prelu(h, 1, False, name='PReLU')
    # Convolution_2 -> 15,7,15
    h = PF.convolution(h, 15, (3,3), (0,0), name='Convolution_2')
    # MaxPooling_2 -> 15,3,7
    h = F.max_pooling(h, (2,2), (2,2))
    # Tanh_2
    h = F.tanh(h)
    # Dropout
    if not test:
        h = F.dropout(h)
    # Affine -> 150
    h = PF.affine(h, (150,), name='Affine')
    # ReLU_2
    h = F.relu(h, True)
    # Affine_2 -> 5
    h = PF.affine(h, (5,), name='Affine_2')
    # Softmax
    h = F.softmax(h)
    # CategoricalCrossEntropy -> 1
    #h = F.categorical_cross_entropy(h, y)
    return h


        #ネットワークの構築
nn.clear_parameters()
        # Prepare input variable
x = nn.Variable((1,30,2))
t = nn.Variable((1,1))
        # Build network for inference
y = network(x, t)

nn.load_parameters(r'C:\Users\jump1268\sony\arduino\5times10deep.files\20181118_175114\parameters.h5')
test_data = data_iterator_csv_dataset(r"C:\Users\jump1268\sony\many_kind\10_deep\valu.csv",1,shuffle=False,normalize=False)

for i in range(test_data.size):
    x.d, t.d = test_data.next()
    y.forward()
    print(y.d[0])

これでNNCも完璧ですね。