首页 > 解决方案 > 如何在 Tensorflow 2.0 中获取其他指标(不仅是准确性)?

问题描述

我是 Tensorflow 领域的新手,我正在研究 mnist 数据集分类的简单示例。我想知道除了准确性和损失(并可能显示它们)之外,我如何获得其他指标(例如精度、召回率等)。这是我的代码:

from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
from tensorflow.keras.callbacks import ModelCheckpoint
from tensorflow.keras.callbacks import TensorBoard
import os 

#load mnist dataset
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

#create and compile the model
model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)), 
  tf.keras.layers.Dense(128, activation='relu'), 
  tf.keras.layers.Dropout(0.2), 
  tf.keras.layers.Dense(10, activation='softmax') 
])
model.summary()

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

#model checkpoint (only if there is an improvement)

checkpoint_path = "logs/weights-improvement-{epoch:02d}-{accuracy:.2f}.hdf5"

cp_callback = ModelCheckpoint(checkpoint_path, monitor='accuracy',save_best_only=True,verbose=1, mode='max')

#Tensorboard
NAME = "tensorboard_{}".format(int(time.time())) #name of the model with timestamp
tensorboard = TensorBoard(log_dir="logs/{}".format(NAME))

#train the model
model.fit(x_train, y_train, callbacks = [cp_callback, tensorboard], epochs=5)

#evaluate the model
model.evaluate(x_test,  y_test, verbose=2)

由于我只得到准确度和损失,我怎样才能得到其他指标?提前谢谢你,如果这是一个简单的问题,或者如果已经在某个地方得到回答,我很抱歉。

标签: pythontensorflowmachine-learningkerastensorflow2.x

解决方案


从 TensorFlow 2.X 开始,precisionrecall可以作为内置指标使用。

因此,您不需要手动实现它们。除此之外,它们之前在 Keras 2.X 版本中被删除,因为它们具有误导性——因为它们是以批量方式计算的,精度和召回率的全局(真实)值实际上是不同的。

你可以在这里看看:https ://www.tensorflow.org/api_docs/python/tf/keras/metrics/Recall

现在他们有一个内置的累加器,可以确保正确计算这些指标。

model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy',tf.keras.metrics.Precision(),tf.keras.metrics.Recall()])

推荐阅读