clamp cross-entropy loss

3 次查看(过去 30 天)
the Matlab cross-entropy loss has this form:
loss = -sum(W*(T.*log(Y)))/N;
I would like to "clamp" it so that the log function output is bounded, for example it cannot be less than 100.
Can we do it?

采纳的回答

David Goodmanson
David Goodmanson 2020-9-3
编辑:David Goodmanson 2020-9-6
Hi Matt,
z = log(Y);
z(z<100) = 100;
loss = -sum(W*(T.*z))/N;
In the link you provided, they talk about a limit of -100 rather than +100. The former appears to make more sense. Lots of possibilities for a smooth differentiable cutoff, here is one, assuming Y>=0
Ylimit = -100;
loss = -sum(W*(T.*log(Y+exp(Ylimit)))/N;
  3 个评论
David Goodmanson
David Goodmanson 2020-9-6
Hi Matt,
see amended answer.
Matt Fetterman
Matt Fetterman 2020-9-6
probably a smart approach.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by