我正在尝试获取准确度、准确度和召回率的 keras 指标,但它们三个都显示相同的值,这实际上是准确度。
我正在使用 TensorFlow 文档示例中提供的指标列表:
metrics = [keras.metrics.TruePositives(name='tp'),
keras.metrics.FalsePositives(name='fp'),
keras.metrics.TrueNegatives(name='tn'),
keras.metrics.FalseNegatives(name='fn'),
keras.metrics.BinaryAccuracy(name='accuracy'),
keras.metrics.Precision(name='precision'),
keras.metrics.Recall(name='recall'),
keras.metrics.AUC(name='auc')]
Run Code Online (Sandbox Code Playgroud)
模型是用于图像分类的非常基本的 CNN:
model = Sequential()
model.add(Convolution2D(32,
(7, 7),
padding ="same",
input_shape=(255, 255, 3),
activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Convolution2D(64,
(3, 3),
padding ="same"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(256,
activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(n_classes,
activation='softmax'))
Run Code Online (Sandbox Code Playgroud)
使用上面显示的指标列表进行编译:
model.compile(loss=loss,
optimizer=optimizer,
metrics=metrics)
Run Code Online (Sandbox Code Playgroud)
这是我在训练时一直看到的问题的一个例子:
Epoch 1/15
160/160 [==============================] - 6s 37ms/step - loss: 0.6402 - tp: 215.0000 - fp: 105.0000 - tn: 215.0000 - fn: 105.0000 - accuracy: 0.6719 - precision: 0.6719 - recall: …Run Code Online (Sandbox Code Playgroud)