评估模型结果以使用keras进行多任务学习

时间:2020-05-31 15:52:14

标签: 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个元素,我想第一和第二是第一和第二类的损失,第三似乎是两个损失之间的差,而最后两个是精度。这是对的吗?我找不到多任务分类的输出说明

1 个答案:

答案 0 :(得分:0)

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

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个数字:

  • 总损失(由两个输出损失之和得出)
  • output1损失
  • output2损失
  • output1精度
  • output2精度