这段代码中的指标参数有什么问题?

what is wrong with the metrics arg in this code?

请看这段代码

solver = Adam(learning_rate = 0.001)
model.compile(
optimizer=solver,
loss='binary_crossentropy',
metrics=[
    metrics.SensitivityAtSpecificity(0.5),
    metrics.SpecificityAtSensitivity(0.5),
    metrics.Precision(),
    metrics.Accuracy(),
    metrics.AUC()
]
)

train_datagen = ImageDataGenerator(
    rescale=1./255,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True,
    vertical_flip=True,
    rotation_range=270,
)
test_datagen = ImageDataGenerator(rescale=1./255)  
train_set = train_datagen.flow_from_directory(
        'DFU_Dataset/training',
        target_size=(256, 256),
        batch_size=8,
        class_mode='binary')
test_set = test_datagen.flow_from_directory(
        'DFU_Dataset/testing',
        target_size=(256, 256),
        batch_size=8,
        class_mode='binary')

到这里一切都执行得很好,没有任何错误或警告,现在当我执行下一部分时:

model.fit(
    train_set,
    epochs=40,
    validation_split= 5.9,
    verbose=1
    )

我得到:"ValueError: Shapes (None, 2) and (None, 1) are incompatible".

现在,当我完全删除此处的指标 arg 时:

model.compile(
optimizer=solver,
loss='binary_crossentropy'
)

一切正常并开始训练。

能否请您指出哪里做错了以及解决问题的方法。

我认为根本原因是数据和预测之间的形状不匹配。 二元分类的最后一层应该有

Dense(1, activation='sigmoid')

基于上述 model.summary(),目前您在输出层中有 2 个节点,而一些指标正在寻找单个输出。