这段代码中的指标参数有什么问题?
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 个节点,而一些指标正在寻找单个输出。
请看这段代码
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 个节点,而一些指标正在寻找单个输出。