How to understand Softmax layer activations for pretrained CNN?

조회 수: 2 (최근 30일)
AK
AK 2021년 4월 21일
댓글: AK 2021년 4월 27일
Hello,
I was able to get softmax layer probabilities for the squeezenet network. Using
act1 = activations(net,i,'prob','OutputAs','rows');
However, Im unsure exactly what the probabilities represent, or how to identify what class they correspond with. Could you please explain what these probabilities mean? And how to get the corresponding class?
Thank you!

채택된 답변

Jon Cherrie
Jon Cherrie 2021년 4월 22일
How to identify what class they correspond with?
We can get this from the class names property of the output layer.
What these probabilities mean?
They are the probability that the given image is in the corresponding class.
Here's an example
net = squeezenet;
img = imread('peppers.png');
img = imresize(img,net.Layers(1).InputSize(1:2));
We can get the names of the classes from the output layer, which happens to bne the last layer for this network:
c = net.Layers(end).Classes;
Then get the activations from the softmax layer
p = activations(net,img,'prob','OutputAs','rows');
Note that these sum to 1
sum(p)
ans = single
1
We can then find the maximum probability and which class that corresponds to
[pm, i] = max(p)
pm = single
0.4172
i = 946
c(i)
ans = categorical
bell pepper
This is the same information that comes from the classify command:
[cc, pp] = classify(net,img);
cc
cc = categorical
bell pepper
isequal(pp, p)
ans = logical
1
  댓글 수: 4
AK
AK 2021년 4월 22일
Yes! This is perfect! Thank you!
AK
AK 2021년 4월 27일
How do i get the probability of a particular index (i) ? As in, I know the index and want the associated probability. Thanks!

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Image Data Workflows에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by