How to replace the one-hot-encoded label with a (Gaussian) distribution in the training of a CNN for classification ?

10 views (last 30 days)
hyeonjin kim
hyeonjin kim on 24 Jan 2022
Commented: hyeonjin kim on 27 Jan 2022
Hi there,
I am trying to train a CNN for classification using imagedatastore, in which the cross entropy loss needs to be calculated between the softmax output and a (Gaussian) distribution instead of its one-hot-encoded version of the label.
In case I need to customize Matlab functions such that my own function (that converts an original label into a distribution) runs instead of 'onehotencode', where (or in which function) does this 'onehotencode' run ?
There may be other simpler ways to achieve my goal. I would greatly appreciate if anyone could help me on this.
Best regards,
HK

Answers (1)

yanqi liu
yanqi liu on 24 Jan 2022
yes,sir,may be just compute vector,such as
class_info = [1; 2; 2; 1]
class_info = 4×1
1 2 2 1
class_num = length(unique(class_info));
Y = zeros(length(class_info), class_num);
for i = 1 : length(class_info)
Y(i, class_info(i)) = 1;
end
Y
Y = 4×2
1 0 0 1 0 1 1 0
  3 Comments
hyeonjin kim
hyeonjin kim on 27 Jan 2022
Dear Yanqi, thanks very much for sharing your thoughts. I will try some more to tackle this issue, but might ultimately have to go for Pytorch, for instance, as you told.
Best !

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!