tf.keras.metrics.TruePositives()在作为度量传递给model.compile()时在model.fit()中返回错误值

尼古拉斯·托比斯(Nicolas Tobis)

当我将热编码的标签作为训练和验证数据传递到tensorflow keras的model.fit()函数中时,该指标tf.keras.metrics.TruePositives()返回错误的值。

我正在运行Tensorflow 2.0。

例如,如果这是我的代码:

model.compile(optimizer, 'binary_crossentropy', 
              ['accuracy', tf.keras.metrics.TruePositives()])

history = model.fit(train_data, train_labels_binary, batch_size=32, epochs=30,
                    validation_data=(val_data, val_labels_binary), 
                    callbacks=[early_stopping])

train_labels_binary 这是: array([[1, 0], [1, 0], [0, 1]])

和结果y_predarray([[1, 0], [1, 0], [0, 1]])

然后tf.keras.metrics.TruePositives()应返回1,但返回3。

任何帮助将不胜感激!!

尼古拉斯·托比斯(Nicolas Tobis)

好的,我做了更多的实验,当输入不是1热编码并且只有1个输出神经元时,它是固定的。因此,如果我们更改以下两行,则所有指标均可正确运行:

这个: train_labels = np.eye(2)[np.random.randint(0, 2, size=(10, 1)).reshape(-1)]

至: train_labels = np.random.randint(0, 2, size=(10, 1))

这个: model.add(layers.Dense(units=2, activation='sigmoid'))

至: model.add(layers.Dense(units=1, activation='sigmoid'))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章