最近,做基于caffe的多任务学习,所以写下这篇博客如何修改网络使其支持多任务学习。
一般地,一个卷积神经网络只是对某一个特定的目标进行学习训练。其实,也可以使一个网络并行地对两个或两个以上的任务进行学习,网络参数共享,这样可以起到减少模型个数,并且使模型具有很好的泛化能力。
那么,应该如何对一个网络修改使其能够进行多任务学习呢,做法不是很复杂,比如对于 caffe里面的Alexnet这个网络,我们使它训练一个二分类任务,同时又使它做一个回归任务,此时,数据的输入也不同。对于这种情况,我们要定义两个data层,不妨设一个data,一个是data_p,如图所示,
然后复制相同的网络结构,命名都改一下,比如都是5个卷积层,那么一个conv1,另一个conv1_p