您的位置:首页 > 其它

深度学习之多任务训练

2016-12-28 17:29 274 查看
   最近,做基于caffe的多任务学习,所以写下这篇博客如何修改网络使其支持多任务学习。

   一般地,一个卷积神经网络只是对某一个特定的目标进行学习训练。其实,也可以使一个网络并行地对两个或两个以上的任务进行学习,网络参数共享,这样可以起到减少模型个数,并且使模型具有很好的泛化能力。

  那么,应该如何对一个网络修改使其能够进行多任务学习呢,做法不是很复杂,比如对于 caffe里面的Alexnet这个网络,我们使它训练一个二分类任务,同时又使它做一个回归任务,此时,数据的输入也不同。对于这种情况,我们要定义两个data层,不妨设一个data,一个是data_p,如图所示,





然后复制相同的网络结构,命名都改一下,比如都是5个卷积层,那么一个conv1,另一个conv1_p,一次命名五个卷积层。因为共享参数主要是在卷积层上,所以在每一个卷积层的param内,加入 name:“conv1_w”, name:"conv1_b" 如图所示





这样卷积层修改完之后,全连接层不用修改,若是做分类任务,可以接SoftMaxWithLoss,若是做回归任务,可以接 EuclideanLoss

这样,修改完毕就可以实现多任务的学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: