张量流中的F1分数

问题描述 投票:0回答:1

在训练模型时,我试图在 ResNeXt 和 ResNet 上获得二元分类问题的 f1 分数。当我使用 tf.keras.metrics.F1Score 函数时,我在尝试拟合模型时收到以下错误:

ValueError:FBetaScore 期望形状为(batch_size、output_dim)的 2D 输入,且 output_dim 已完全定义(不是 None)。收到的输入形状: y_pred.shape=(None, 2) 和 y_true.shape=(None, None)。

但是,如果我使用 tfa.metrics.F1Score 函数,我会得到输出而不会出现任何错误。为什么会发生这种情况?这两个 f1 分数函数有什么区别?

此外,在使用 tfa.metrics.F1Score 时,我还打印精度、召回率和准确度值。它们都有相同的值怎么会发生呢?

这就是我编译模型的方式:

f1 =tfa.metrics.F1Score(num_classes=2, average='weighted')
f1score = tf.keras.metrics.F1Score(average="weighted",threshold=0.5)

model.compile (
    loss = 'categorical_crossentropy',
    optimizer="adam" ,metrics=[ f1score, "Precision", "Recall"]
)

我如何适合我的模型:

history = model.fit(
    training_set,
    validation_data = val_set,
    epochs = 5,
    steps_per_epoch = 95,
    validation_steps = 95

    )

制作trainig_Set和val_set:

training_set = train_datagen.flow_from_directory(
    train_Path,
    target_size = IMAGE_SIZE,
    batch_size = 32,
    class_mode = 'categorical' 
)
python tensorflow precision resnet
1个回答
0
投票

我今天在 FbetaScore 上也遇到了这个问题..你找到解决方案了吗?

fbeta_score = tf.keras.metrics.FBetaScore(average='micro', beta=5.0, threshold=0.6, name='fbeta_score')

# ValueError: FBetaScore expects 2D inputs with shape (batch_size, output_dim). Received input shapes: y_pred.shape=(16, 512, 12) and y_true.shape=(16, 512).
© www.soinside.com 2019 - 2024. All rights reserved.