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

使用keras.metricscategorical_accuracy()评估模型在多标签分类任务中的性能

发布时间:2023-12-25 14:43:55

在多标签分类任务中,keras.metrics.categorical_accuracy()可以用于评估模型的性能。在以下例子中,我们将使用categorical_accuracy()来评估一个模型在MNIST数据集上的性能。

首先,导入必要的库和模块:

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()

x_train = x_train.astype("float32") / 255.0
x_test = x_test.astype("float32") / 255.0

y_train = keras.utils.to_categorical(y_train, 10)
y_test = keras.utils.to_categorical(y_test, 10)

然后,构建一个简单的模型,使用keras.metrics.categorical_accuracy()作为评估指标:

model = keras.Sequential([
    layers.Flatten(input_shape=(28, 28)),
    layers.Dense(128, activation='relu'),
    layers.Dense(10, activation='softmax')
])

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

接下来,训练模型并在测试集上评估性能:

model.fit(x_train, y_train, batch_size=64, epochs=5, verbose=1)

test_loss, test_accuracy = model.evaluate(x_test, y_test, verbose=2)
print("Test accuracy:", test_accuracy)

在这个例子中,我们使用MNIST数据集,共有10个类别。我们首先将输入数据归一化到0到1之间,并将标签转换为one-hot编码的形式。然后构建了一个简单的全连接神经网络模型,包括一个展平层、一个隐藏层和一个输出层。我们使用adam优化器和交叉熵损失函数对模型进行编译,并将keras.metrics.categorical_accuracy()作为评估指标。接下来,我们使用训练集对模型进行训练,并使用测试集对模型进行评估。最后,打印模型在测试集上的准确率。

在上面的例子中,我们使用了默认的batch_size、epochs和verbose参数。你可以根据实际需求调整这些参数。