首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于多个输出的CNTK训练器

用于多个输出的CNTK训练器
EN

Stack Overflow用户
提问于 2019-04-11 11:04:06
回答 1查看 82关注 0票数 1

在CNTK有多个输出层的情况下,一个训练应该有多个训练器吗?

代码语言:javascript
运行
复制
List<Learner> learnersA = new List<Learner>() { Learner.SGDLearner(OutputLayerOne.Parameters(), learningRate) };
List<Learner> learnersB = new List<Learner>() { Learner.SGDLearner(OutputLayerTwo.Parameters(), learningRate) };

Trainer trainerA = Trainer.CreateTrainer(OutputLayerOne, loss, eval, learnersA);
Trainer trainerB = Trainer.CreateTrainer(OutputLayerTwo, loss, eval, learnersB);

或者,有没有更好的方法,和一位训练师一起训练多种功能?

EN

回答 1

Stack Overflow用户

发布于 2019-04-11 12:03:37

看起来你有两个损失函数。目前在优化领域中,仅存在优化单个损失函数的技术。对于多任务学习(即多个损失函数),您必须将它们组合起来形成单个损失。

示例:

代码语言:javascript
运行
复制
loss1 = loss(output1, target1)
loss2 = loss(output2, target2)
final_loss = a * loss1 + (1-a) * loss2  # where `a` is the relative importance between the 2 loss.

你还应该确保两个损失具有相同的单位,否则将它们组合在一起是没有意义的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55624071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档