应用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()函数来评估多分类模型的精确性的示例。使用这个函数可以帮助我们衡量模型的性能,并根据结果进行调整和改进。
