我正在处理一个分类问题。数据集是从画家的数量收集的,这是一个由卡格尔主持的竞赛。任务是确定画家,风格和类型给出的绘画。
到目前为止,我训练了个别的模型来预测画家,风格,类型给出的绘画。现在,我想结合多任务学习(即)开发一个单一的模型,可以预测所有三个任务。
我目前面临的问题是设计架构。
Model No of classes (Softmax)
(Individual Models)
-------------------- -----------------------
Model predicts painter 8 (8 - painters)
given paintings
Model predicts style 10 (10 style classes)
given paintings
Model predicts genre 23 (23 genre classes)
given paintings 我不知道如何把上面的模型结合在一起。任何建议或反馈都是有帮助的。
发布于 2018-03-08 19:32:49
您应该设计一个多任务模型(MTM)。MTM能够在多个任务之间共享来自输入的经验表示。更准确地说,我们试图同时优化一个具有m类型损失函数的模型,每个任务一个。因此,MTM将在其早期层学习更通用的特性,这些特性应该用于多个任务。然后,随后的层逐渐变得更加特定于所需任务的细节,可以将其划分为多个分支,每个分支用于特定任务。
您需要如下所示的体系结构:
# Your input and hidden layers
inp = Input(...)
x = Layer1(...)(inp)
x = Layer2(...)(x)
...
x = Layer_N-1(...)(x)
# Your 'm' output layers
out_1 = Layer_N(x)
out_2 = Layer_N(x)
...
out_m = Layer_N(x)
# your model
MTM = Model(inputs=inp, outputs=[out_1,out_2,...,out_m])
MTM.compile(loss=[loss_func_1, loss_func_2,..., loss_func_m],
optimizer='xxx',
metrics=xxx)
MTM.fit(train_data, [train_labels_1,train_labels_2,...,train_labels_m],
batch_size = xxx,
epochs = xxx)如果您想在Keras中找到一个真实的例子,我已经为我的项目ConvNet实现了一个2任务的这里。
https://datascience.stackexchange.com/questions/28827
复制相似问题