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

应用Keras.metrics中的categorical_accuracy()函数评估多分类模型的精确性

发布时间:2023-12-16 13:12:59

Keras.metrics中的categorical_accuracy()函数用于计算多分类模型的精确性。精确性是指模型预测准确的样本比例,即正确预测的样本数除以总样本数。

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

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

接下来,我们定义一个简单的多分类模型,例如一个带有两个隐藏层的全连接神经网络:

model = keras.Sequential()
model.add(layers.Dense(64, activation='relu', input_shape=(10,)))
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))

在这个例子中,输入数据的维度是10,输出标签的类别数是10。

然后,我们需要编译模型,并指定评估指标为精确性:

model.compile(optimizer='adam',
              loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True),
              metrics=['categorical_accuracy'])

在这里,我们选择adam优化器和交叉熵损失函数。同时,我们将评估指标设置为精确性。

接下来,我们需要准备训练数据和标签。假设我们有1000个训练样本和对应的标签:

train_data = np.random.random((1000, 10))
train_labels = np.random.randint(10, size=(1000, 1))

为了将标签转换为one-hot编码格式的向量,我们可以使用keras.utils.to_categorical()函数:

train_labels = keras.utils.to_categorical(train_labels, num_classes=10)

然后,我们可以使用fit()函数来训练模型和评估精确性:

model.fit(train_data, train_labels, epochs=10, batch_size=32)

test_data = np.random.random((100, 10))
test_labels = np.random.randint(10, size=(100, 1))
test_labels = keras.utils.to_categorical(test_labels, num_classes=10)

_, accuracy = model.evaluate(test_data, test_labels)

print('Accuracy: %.2f' % (accuracy*100))

在上述代码中,我们通过训练数据和标签来训练模型,并指定训练轮数和批次大小。然后,我们使用测试数据和标签来评估模型的精确性,并打印出结果。

这就是如何使用Keras.metrics中的categorical_accuracy()函数来评估多分类模型的精确性的示例。使用这个函数可以帮助我们衡量模型的性能,并根据结果进行调整和改进。