【问题标题】:Output value with Mxnet C++ API使用 Mxnet C++ API 输出值
【发布时间】:2018-06-26 19:10:40
【问题描述】:

我正在尝试使用 Mxnet 的 C++ API 在 Mxnet 中实现自定义损失函数。损失函数的问题已经在 python (how to use customized loss function with mxnet?) 中提出,尽管它没有解决输出的具体问题。

假设我想创建自己的 softmax 函数,我可以执行以下操作:

         Symbol expFc2 = exp(fc2);
         Symbol sumExp = sum("sumExp", expFc2, dmlc::optional<Shape>(Shape(1)));
         Symbol expandedSumExp = expand_dims("expandedSumExp", sumExp, 1);
         Symbol customSoftmax = broadcast_div(expFc2, expandedSumExp);
         Symbol cross_entropy = (-1) * (one_hot("OneHotDataLabel", data_label, 10) * log(customSoftmax) + (1 - one_hot("OneHotDataLabel", data_label, 10)) * log(1 - customSoftmax));
         Symbol lenet = MakeLoss(cross_entropy);

但是,每当我得到输出时,auto curOutput = exe-&gt;outputs;,我似乎得到了计算损失函数后的值,这将是 cross_entropy

如何得到customSoftmax计算的结果?

【问题讨论】:

    标签: c++ mxnet loss-function


    【解决方案1】:

    没有 API 可以访问计算图中的中间输出。这是出于优化的原因。您需要的任何输出都必须作为图形的输出返回。您可以使用 mx.symbol.Group 返回多个符号作为输出。

    Here 是一个 Python 示例。你应该可以在 C++ 中做同样的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      • 2018-05-06
      • 2018-01-05
      • 2018-03-07
      • 2015-05-23
      相关资源
      最近更新 更多