【发布时间】: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->outputs;,我似乎得到了计算损失函数后的值,这将是 cross_entropy。
如何得到customSoftmax计算的结果?
【问题讨论】:
标签: c++ mxnet loss-function