首页 > 解决方案 > 使用 keras 评估多任务学习的模型结果

问题描述

我为 keras 中的多任务分类设计了一个 CNN,其中我有一个输入和两个不同类别的输出。

我以这种方式编译模型:

 model.compile(loss='categorical_crossentropy',
               optimizer=tf.keras.optimizers.Adam(lr=0.00002, decay=1e-6),
               metrics=['accuracy'])

我想知道使用此指令获得的结果的含义是什么:

preds = model.evaluate(x=X_test, y=[Y1_test, Y2_test])

我得到了 5 个元素,我想第一个和第二个是第一和第二类的损失,第三个似乎是两个损失之间的差异,最后两个可能是准确度。这是对的吗?我没有找到多任务分类输出的解释

标签: keras

解决方案


在这个虚拟示例中,我为您提供了一个多输出模型并尝试进行评估

X = np.random.uniform(0,1, (1000,10))
y1 = np.random.randint(0,2, 1000)
y2 = np.random.randint(0,2, 1000)

inp = Input((10))
x = Dense(32, activation='relu')(inp)
out1 = Dense(2, activation='softmax')(x)
out2 = Dense(2, activation='softmax')(x)
m = Model(inp, [out1,out2])
m.compile(loss='sparse_categorical_crossentropy',
          optimizer='adam',
          metrics=['accuracy'])

m.fit(X, [y1,y2], epochs=10, verbose=2)

m.evaluate(X, [y1,y2])

评估方法返回 5 个数字:

  • 总损失(由两个输出损失的总和给出)
  • 输出1损失
  • 输出2损失
  • 输出1精度
  • 输出2精度

推荐阅读