使用keras评估多任务学习的模型结果

使用keras评估多任务学习的模型结果,keras,Keras,我为keras的多任务分类设计了一个CNN,其中我有一个输入和两个不同的类输出 我以这种方式编译模型: model.compile(loss='categorical_crossentropy', optimizer=tf.keras.optimizers.Adam(lr=0.00002, decay=1e-6), metrics=['accuracy']) 我想知道通过本说明获得的结果的含义: preds = model.eval

我为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个元素,我假设第一和第二个是第一和第二类的损失,第三个似乎是两个损失之间的差异,最后两个可能是精度。对吗?我没有找到多任务分类输出的解释在这个虚拟示例中,我提供了一个多输出模型并尝试进行评估

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])
evaluate方法返回5个数字:

  • 总损耗(由两个输出损耗之和得出)
  • 输出1损耗
  • 输出2损耗
  • 输出1精度
  • 输出2精度

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

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])
evaluate方法返回5个数字:

  • 总损耗(由两个输出损耗之和得出)
  • 输出1损耗
  • 输出2损耗
  • 输出1精度
  • 输出2精度

Evaluate返回您的模型的损失和度量,可以根据输出定义这些损失和度量,因此没有关于您的模型和损失的更多信息,任何人都无法为您提供解释/metrics@Dr.Snoopy我已经用损失和使用的指标更新了这个问题。这看起来不像多任务模型的编译调用,模型是什么?(特别是输出)。Evaluate返回模型的损失和度量,可以根据每个输出定义,因此没有关于模型和损失的更多信息,任何人都无法为您提供解释/metrics@Dr.Snoopy我已经用损失和使用的指标更新了问题。这看起来不像多任务模型的编译调用,模型是什么?(特别是产出)。