MATLABのHPにあるドキュメンテーション「イメージ分類用の積層自己符号化器の学習」で求めた重み・バイアスの値を用いて、C言語で数字認識を行おうと考えています。
softmax層で行われている計算を、C言語で以下のように組んでいるのですが、数字認識の結果がMATLABとC言語で異なってしまいます。
以下の計算式とMATLAB内での計算の差異を教えていただけないでしょうか?
sum = 0.0;
for(j = 0; j < 10; j++){
Dst_soft[j] = 0.0;
for(i = 0; i < 50; i++){
a = input[i] * SW[j][i];
Dst_soft[j] = Dst_soft[j] + a;
}
Dst_soft[j] = Dst_soft[j] + SB[j];
sum = sum + exp(Dst_soft[j]);
}
for(j = 0; j < 10; j++){
Dst_soft[j] = exp(Dst_soft[j])/sum;
}

 채택된 답변

Kenta
Kenta 2020년 3월 24일

2 개 추천

こんにちは、以下の通りです
a = softmax(n) = exp(n)/sum(exp(n))
また以下のような記載もあります。edit softmax と打てば出ます。
takes an SxQ matrix of S N-element net input column
% vectors and returns an SxQ matrix A of output vectors where each column
% vector of A sums to 1, with elements exponentially proportional to the
% respective elements in N.
また、カスタムループによるCNNでは、softmaxを関数として多く用いるので、その例の中で実際に使い、
想定した値と、softmax関数の返す値を比較すればより確実と思います。例えば以下の例など

댓글 수: 1

Miura Hiroki
Miura Hiroki 2020년 3월 25일
ありがとうございます。参考にさせて頂きます。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Deep Learning Toolbox에 대해 자세히 알아보기

제품

릴리스

R2019a

질문:

2020년 3월 24일

편집:

2020년 3월 25일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!