+-
多任务学习Keras(将两个任务整合在一个多任务中)

我在Keras工作,我有两个问题,我想解决(一个分类和其他回归)与相同的输入和不同的输出分类将使用所有的数据,也为回归,区别只是在输出层创建单一的模型,每一个如下面的例子为分类

model = Sequential()
model.add(Dense(300, activation='relu', input_dim=377))
model.add(Dense(256, activation='relu'))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.1))
model.add(Dense(56, activation='relu'))
model.add(Dense(16, activation='relu'))
model.add(Dropout(0.1))
model.add(Dense(1))# 

它的工作原理很好,同样的模型与改变在最后一个模型的工作原理很好的回归problemy的问题是如何整合两个任务在多任务学习神经网络,采取一个输入和输出的两个任务si搜索了很多,但我没有达到的解决方案,我想注意:我的工作与数据在CSV文件格式。

不胜感激

0
投票

这是一个使用keras函数式api的例子。

inp = Input((377,))
x = Dense(300, activation='relu')(inp)
x = Dense(256, activation='relu')(x)
x = Dense(128, activation='relu')(x)
x = Dropout(0.1)(x)
x = Dense(56, activation='relu')(x)
x = Dense(16, activation='relu')(x)
x = Dropout(0.1)(x)

out_reg = Dense(1, name='reg')(x)
out_class = Dense(1, activation='sigmoid', name='class')(x) # I suppose bivariate classification problem

model = Model(inp, [out_reg, out_class])

model.compile('adam', loss={'reg':'mse', 'class':'binary_crossentropy'}, 
              loss_weights={'reg':0.5, 'class':0.5})

我用了你报告的结构来做分类和做回归,唯一的区别就是输出。两个密集层,一个是回归,另一个是分类(我想是一个二元分类器)。

我也应用了不同的损失进行回归和分类。你也可以用不同的方式来平衡它们