欢迎访问宙启技术站
智能推送

使用Keras.metrics中的categorical_accuracy()函数评估分类模型的正确率

发布时间:2023-12-16 13:14:05

Keras.metrics中的categorical_accuracy()函数用于评估分类模型的正确率。这个函数接受两个参数:y_true和y_pred,其中y_true是真实的分类标签,y_pred是预测的分类概率。

假设我们有一个简单的分类模型,用于预测手写数字的标签。我们将使用MNIST数据集来训练这个模型,并使用categorical_accuracy()函数来评估其正确率。

首先,我们需要导入一些必要的库和模块:

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

接下来,我们加载MNIST数据集,并将其分为训练集和测试集:

(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()

然后,我们需要将数据进行预处理,将图像像素值归一化到[0, 1]的范围内,并将标签转换为one-hot编码:

x_train = x_train.astype("float32") / 255
x_test = x_test.astype("float32") / 255
y_train = keras.utils.to_categorical(y_train)
y_test = keras.utils.to_categorical(y_test)

接下来,我们定义我们的模型。我们将使用一个简单的卷积神经网络:

model = keras.Sequential()
model.add(layers.Reshape(target_shape=(28, 28, 1), input_shape=(28, 28)))
model.add(layers.Conv2D(filters=32, kernel_size=(3, 3), activation='relu'))
model.add(layers.MaxPooling2D(pool_size=(2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(units=10, activation='softmax'))

然后,我们编译模型,并定义评估指标为categorical_accuracy()函数:

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=[tf.keras.metrics.categorical_accuracy])

训练模型并进行评估:

model.fit(x_train, y_train, epochs=10, batch_size=32, validation_data=(x_test, y_test))

在训练过程中,Keras会计算每个批次的损失和正确率,并将其记录在history对象中。我们还可以使用模型的evaluate()方法,直接计算测试集上的损失和正确率:

loss, accuracy = model.evaluate(x_test, y_test)

使用categorical_accuracy()函数评估分类模型的正确率非常简单。它在模型的编译和训练过程中自动计算,并可以在训练完成后通过history对象或evaluate()方法获取。这样,我们就可以方便地评估我们的分类模型的性能了。