0

我设计了一个用于多任务学习的网络。在这里,我有一些共享层和特定层用于 5 个不同的任务。

 input_dim_train=X_train.shape[1]
 n_input_dim = int(input_dim_train)
 shared_model = Dense(input_dim_train)(inputs)
 shared_model = Dense(n_input_dim, activation='relu')(shared_model)
 shared_model = BatchNormalization(input_dim=n_input_dim)(shared_model)
 shared_model = Dropout(0.1)(shared_model)

 shared_model = Dense(int(n_input_dim//4), activation='relu')(shared_model)
 shared_model = BatchNormalization(input_dim=n_input_dim)(shared_model)
 shared_model = Dropout(0.1)(shared_model)

 shared_model = Dense(int(n_input_dim//12), activation='relu')(shared_model)
 shared_model = BatchNormalization(input_dim=n_input_dim)(shared_model)
 shared_model = Dropout(0.1)(shared_model)

 shared_model = Dense(int(n_input_dim//20), activation='relu')(shared_model)
 shared_model = BatchNormalization()(shared_model)
 shared_model = Dropout(0.1)(shared_model)

 output1 = Dense(3, activation='softmax',name='target_1',)(shared_model)
 output2 = Dense(2, activation='softmax',name='target_2')(shared_model)
 output3 = Dense(4, activation='softmax',name='target_3')(shared_model)
 output4 = Dense(2, activation='softmax',name='target_4')(shared_model)
 output5 = Dense(3, activation='softmax',name='target_5')(shared_model)

 model = Model(inputs=inputs, outputs=[output1, output2,output3,output4,output5])

 model.compile(optimizer='adam', loss='categorical_crossentropy',metrics=['accuracy',f1_metric])



 history=model.fit(X_train, [y_train_task1, y_train_task2,y_train_task3,y_train_task4,y_train_task5],
              validation_data=(X_test,[y_test_task1,y_test_task2,y_test_task3,y_test_task4,y_test_task5]),verbose='auto',epochs=n_epoch,batch_size=n_batch_size)

 task1_pred,task2_pred,task3_pred,task4_pred,task5_pred  = model.predict(X_test)

 

网络以某种方式运行良好,并给出如下结果:

在此处输入图像描述

现在,我的问题是:在这个多任务学习中,如何衡量例如 Task1 对 Task2 的影响?确实在想计算这个问题中任务之间的任务亲和度得分。有没有办法在训练过程中计算任务间的亲和力得分——在不同的时期?

4

0 回答 0