https://arkouji.cocolog-nifty.com/blog/2019/02/sony-neural-net.html
こちらのブログを参考にして、NNC×pythonで画像分類の推論プログラムをかいて実行しました。
本来なら、ブログのように [0 0 0.4 1 0.8 ・・・ ] のように表示されるはずなのですが、負の値が表示されます。
考えられる原因は何でしょうか。
学習のやり方ですか?
#学習画像
A~Zの画像名26ラベル
カラー画像 250×250の大きさ
train.csv = 2243枚 Num Column = 2
shuffle=Yes, Cache = Yes ,Normalize = No
Validation.csv 561枚 Num Column = 2
shuffle=No ,Cache = Yes , Normalize = No
バッチサイズ20
学習反復世代数50
演算精度 Float
Alpha 0.001
ネットワーク構造は右のブログを参考 http://cedro3.com/ai/mini-alexnet/
#実行後 (学習に使ったLの画像を推論)
runfile('C:/Users/username/Desktop/output/syuwa.py', wdir='C:/Users/nogamitakuma/Desktop/output')
2021-01-18 17:27:39,614 [nnabla][INFO]: Parameter load (<built-in function format>): C:\Users\username\Desktop\output\yubidata.files\20210118_165022\results.nnp
[[ -7.646432 -16.922857 -19.45604 -8.552811 -2.2935107 -7.171723
3.6680415 -2.341182 -3.46057 -7.853706 -3.020269 14.173305
-9.716268 -9.6661005 -3.5073535 -4.0334044 -5.2449417 -5.0965605
-17.95626 -10.754642 -5.992459 -10.212325 -2.844038 -0.4497387
6.316589 1.8648801]]
Python
1# -*- coding: utf-8 -*- 2import nnabla as nn 3import nnabla.functions as F 4import nnabla.parametric_functions as PF 5import cv2 6 7 8def network(x, test=False): 9 # Input:x -> 3,250,250 10 # Convolution -> 16,250,250 11 h = PF.convolution(x, 16, (3,3), (1,1), name='Convolution') 12 # ReLU 13 h = F.relu(h, True) 14 # BatchNormalization 15 h = PF.batch_normalization(h, (1,), 0.9, 0.0001, not test, name='BatchNormalization') 16 # MaxPooling -> 16,125,125 17 h = F.max_pooling(h, (2,2), (2,2)) 18 # Convolution_2 19 h = PF.convolution(h, 16, (3,3), (1,1), name='Convolution_2') 20 # ReLU_2 21 h = F.relu(h, True) 22 # BatchNormalization_2 23 h = PF.batch_normalization(h, (1,), 0.9, 0.0001, not test, name='BatchNormalization_2') 24 # MaxPooling_2 -> 16,62,62 25 h = F.max_pooling(h, (2,2), (2,2)) 26 # Convolution_3 27 h = PF.convolution(h, 16, (3,3), (1,1), name='Convolution_3') 28 # ReLU_3 29 h = F.relu(h, True) 30 # Convolution_4 31 h = PF.convolution(h, 16, (3,3), (1,1), name='Convolution_4') 32 # ReLU_4 33 h = F.relu(h, True) 34 # Convolution_5 35 h = PF.convolution(h, 16, (3,3), (1,1), name='Convolution_5') 36 # ReLU_5 37 h = F.relu(h, True) 38 # MaxPooling_3 -> 16,31,31 39 h = F.max_pooling(h, (2,2), (2,2)) 40 # Affine -> 100 41 h = PF.affine(h, (100,), name='Affine') 42 # ReLU_6 43 h = F.relu(h, True) 44 # Affine_2 45 h = PF.affine(h, (100,), name='Affine_2') 46 # ReLU_7 47 h = F.relu(h, True) 48 # Dropout 49 if not test: 50 h = F.dropout(h) 51 # Affine_3 -> 26 52 h = PF.affine(h, (26,), name='Affine_3') 53 # SoftmaxCrossEntropy -> 1 54 #h = F.softmax_cross_entropy(h, y) 55 return h 56 57 58 59 # load parameters 60 61nn.load_parameters('C:\Users\username\Desktop\output\yubidata.files\20210118_165022\results.nnp') 62# Prepare input variable 63x=nn.Variable((1,3,250,250)) 64 65IMAGE_SIZE = 250 66im = cv2.imread('C:\Users\username\Desktop\out\L\L_1.png') #推論する写真「L」 67im = cv2.resize(im, (IMAGE_SIZE,IMAGE_SIZE)).transpose(2,0,1) 68x = nn.Variable((1, ) + im.shape) 69x.d = im.reshape(x.shape) 70 71# Build network for inference 72y = network(x,test=True) 73 74# Execute inference 75y.forward() 76print(y.d) 77
回答1件
あなたの回答
tips
プレビュー