🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Neural Network Console

Neural Network Consoleは、ソニー社が開発したディープラーニング・ツール。ニューラルネットワークを視覚的に設計することが可能で、学習や評価をスムーズに実現できます。また、ニューラルネットワークを自動的に構築する機能も備わっています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1613閲覧

NNCの画像分類の推論の結果の数値が変です

max12345

総合スコア20

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Neural Network Console

Neural Network Consoleは、ソニー社が開発したディープラーニング・ツール。ニューラルネットワークを視覚的に設計することが可能で、学習や評価をスムーズに実現できます。また、ニューラルネットワークを自動的に構築する機能も備わっています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/01/18 08:53

編集2021/01/18 08:56

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

負の値が表示されます。

考えられる原因は何でしょうか。

softmaxを入れてないから
Softmaxって何をしてるの?

投稿2021/01/18 09:15

jbpb0

総合スコア7653

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2021/01/18 09:22

def network(x, test=False): の一番最後の return h のすぐ上に h = F.softmax(h) を追加したらいいのでは??
max12345

2021/01/18 09:34

ありがとうございます。h = F.softmax(h)をプログラムに追加すると  [[2.88368818e-09 3.90868097e-14 1.41201697e-14 6.04061072e-13 3.33161410e-08 1.34033884e-09 1.78465975e-11 9.17362296e-14 1.11434029e-09 3.09066706e-09 7.83356800e-12 6.52297277e-15 4.17884593e-07 1.02343316e-08 1.66855918e-09 2.91020177e-11 1.80908619e-14 1.21412205e-08 9.99975443e-01 2.40253303e-05 3.27327943e-09 6.86726787e-10 1.59349839e-10 9.62386837e-11 6.69186725e-14 7.74098341e-10]] 正になりましたが、この様な感じでeがついてしまったので、ネットワーク層を調整して、もう一度学習をしてみます。
jbpb0

2021/01/18 09:55 編集

9.99975443e-01 は、99.9975443% という意味ですよ 順番が19番目なので「S」
max12345

2021/01/18 10:10

おお、安心しました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問