使用Keras.metrics中的categorical_accuracy()函数评估多类别模型的正确率
发布时间:2023-12-16 13:18:32
Keras中的metrics模块包括了一系列用于评估模型性能的函数,其中之一是categorical_accuracy函数。这个函数用于评估多类别模型的正确率。在使用该函数之前,需要将模型输出转换为概率分布形式。下面将给出一个使用categorical_accuracy函数评估多类别模型的例子。
假设我们要构建一个多类别分类模型,用于识别手写数字图像。假设我们的训练集包含60,000个样本,每个样本是28x28的手写数字图像,并且有10个不同的类别(数字0到9)。首先,我们需要加载数据集并进行预处理。
import numpy as np
import tensorflow as tf
from tensorflow import keras
# 加载MNIST数据集
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
# 数据预处理
x_train = x_train.reshape((60000, 28, 28, 1))
x_train = x_train.astype('float32') / 255
x_test = x_test.reshape((10000, 28, 28, 1))
x_test = x_test.astype('float32') / 255
# 对标签进行one-hot编码
y_train = keras.utils.to_categorical(y_train, num_classes=10)
y_test = keras.utils.to_categorical(y_test, num_classes=10)
接下来,我们构建一个简单的卷积神经网络模型。
model = keras.Sequential() model.add(keras.layers.Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1))) model.add(keras.layers.MaxPooling2D(pool_size=(2, 2))) model.add(keras.layers.Flatten()) model.add(keras.layers.Dense(128, activation='relu')) model.add(keras.layers.Dense(10, activation='softmax')) model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
在编译模型时,我们将metrics参数设置为'accuracy',这意味着我们将使用accuracy函数评估模型的性能。该函数在Keras中实际上是categorical_accuracy函数的别名。编译完成后,我们可以开始训练模型。
model.fit(x_train, y_train, batch_size=128, epochs=10, validation_data=(x_test, y_test))
训练完成后,我们可以使用evaluate函数评估模型在测试集上的性能。这里我们将使用categorical_accuracy函数作为评估指标。
test_loss, test_accuracy = model.evaluate(x_test, y_test)
print("Test Loss:", test_loss)
print("Test Accuracy:", test_accuracy)
在这个例子中,我们使用了MNIST数据集训练一个简单的卷积神经网络模型,并使用categorical_accuracy函数作为评估指标来评估模型在测试集上的性能。评估结果包括了测试集上的损失和正确率。
