【问题标题】:what is wrong with the metrics arg in this code?此代码中的指标 arg 有什么问题?
【发布时间】:2020-05-21 18:29:14
【问题描述】:

请看这段代码

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:形状 (None, 2) 和 (None, 1) 不兼容”。

现在当我像这里一样完全删除指标 arg 时:

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

一切正常,开始训练。

能否请您指出做错了什么以及解决方法。

【问题讨论】:

  • 你的模型架构或模型构建部分的代码是什么?或者你能显示model.summary()
  • @Vishnuvardhan Janapati 我添加了摘要。

标签: tensorflow keras conv-neural-network tf.keras


【解决方案1】:

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

Dense(1, activation='sigmoid')

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-21
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 2011-09-12
    • 1970-01-01
    • 2014-04-02
    相关资源
    最近更新 更多