【问题标题】:Softmax Implementation in C++ [closed]C ++中的Softmax实现[关闭]
【发布时间】:2018-10-19 17:09:21
【问题描述】:

伙计们,

有没有实现 N 个值的简单 softmax 函数的示例?我看起来像是“基于softmax的检测器”等等,但我只想看到一个纯粹、直接的C++ softmax实现。

你知道的任何例子吗?

谢谢,

【问题讨论】:

  • 您可以至少告诉我们您认为“softmax 函数”是什么
  • @OznOg - 问题应该是独立的。 Google 应该是必需的。
  • 当然可以通过多种方式实现。实现将在很大程度上取决于您如何表示数据,这可能是vector<T>array<T,N>、一些指针数组,甚至是一些特定于库的东西,如 TensorFlow。如果你展示了你如何表达你的问题,你已经尝试过什么,以及你确切地在哪里卡住了,这将有助于你得到一个好的答案。
  • @JesperJuhl 这不是给你的评论,而是给已经在 SO 中回答他的问题的提问者

标签: c++ math encoding sum softmax


【解决方案1】:

我还没有看到 softmax 的库实现,尽管这并不能证明它不存在。这很简单,人们只需在需要时编写自己的。

作为记录,u1u2u3 ... 上的 softmax 函数只是元组 (exp(u1)/Z, exp(u2)/Z, exp(u3)/Z, ...),其中归一化常数 Z 只是指数的总和,Z = exp(u1) + exp(u2) + exp(u3) + ... .

请注意,从每个u 中添加或减去一个常数会使结果保持不变,因为它相当于将上面和下面乘以相同的因子。因此,您可以通过减去u 中的最大值来使计算在数值上表现得更好;那么最大的词 exp(u) 将是 1 和所有其他比它更小的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    • 2019-04-16
    相关资源
    最近更新 更多