TensorFlow自定义评估指标

简介: TensorFlow自定义评估指标

TensorFlow内置常用指标:

  • AUC()
  • Precision()
  • Recall()
  • 等等

有些时候我们的指标不止这些,需要根据我们自己特定的任务指定自己的评估指标,这时就需要自定义Metric,需要子类化Metric,也就是继承keras.metrics.Metric,然后实现它的方法:

  • __init__:这个方法是用来初始化一些变量的
  • update_state:参数有真实值、预测值,采样权重,我们需要在这个方法内进行更新状态变量
  • result:使用状态变量计算最终的评估结果
  • reset_states:重新初始化状态变量

下方实现的评估指标是计算有多少个正类被评估正确,就是预测对了多少样本

完整代码:

"""
 * Created with PyCharm
 * 作者: 阿光
 * 日期: 2022/1/2
 * 时间: 18:32
 * 描述:
"""
import tensorflow as tf
import tensorflow.keras.datasets.mnist
from keras import Input, Model
from keras.layers import Dense
from tensorflow import keras
(train_images, train_labels), (val_images, val_labels) = tensorflow.keras.datasets.mnist.load_data()
train_images, val_images = train_images / 255.0, val_images / 255.0
train_images = train_images.reshape(60000, 784)
val_images = val_images.reshape(10000, 784)
class CategoricalTruePositives(keras.metrics.Metric):
    def __init__(self, name="categorical_true_positives"):
        super(CategoricalTruePositives, self).__init__(name=name)
        self.true_positives = self.add_weight(name='ctp', initializer='zeros')
    def update_state(self, y_true, y_pred, sample_weight=None):
        y_pred = tf.reshape(tf.argmax(y_pred, axis=1), shape=(-1, 1))
        values = tf.cast(y_true, 'int32') == tf.cast(y_pred, 'int32')
        values = tf.cast(values, 'float32')
        self.true_positives.assign_add(tf.reduce_sum(values))
    def result(self):
        return self.true_positives
    def reset_states(self):
        self.true_positives.assign(0.0)
def get_model():
    inputs = Input(shape=(784,))
    outputs = Dense(10, activation='softmax')(inputs)
    model = Model(inputs, outputs)
    model.compile(
        optimizer=keras.optimizers.RMSprop(learning_rate=1e-3),
        loss=keras.losses.SparseCategoricalCrossentropy(),
        metrics=[CategoricalTruePositives()]
    )
    return model
model = get_model()
model.fit(
    train_images,
    train_labels,
    epochs=5,
    batch_size=32,
    validation_data=(val_images, val_labels)
)


目录
相关文章
|
14天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
TensorFlow中的自定义层与模型
【4月更文挑战第17天】本文介绍了如何在TensorFlow中创建自定义层和模型。自定义层通过继承`tf.keras.layers.Layer`,实现`__init__`, `build`和`call`方法。例如,一个简单的全连接层`CustomDenseLayer`示例展示了如何定义激活函数。自定义模型则继承自`tf.keras.Model`,在`__init__`中定义层,在`call`中实现前向传播。这两个功能使TensorFlow能应对特定需求和复杂网络结构,增强了其在深度学习应用中的灵活性。
|
5月前
|
机器学习/深度学习 自然语言处理 算法
【Tensorflow深度学习】优化算法、损失计算、模型评估、向量嵌入、神经网络等模块的讲解(超详细必看)
【Tensorflow深度学习】优化算法、损失计算、模型评估、向量嵌入、神经网络等模块的讲解(超详细必看)
56 1
|
10月前
|
机器学习/深度学习 数据可视化 Java
TensorFlow 高级技巧:自定义模型保存、加载和分布式训练
本篇文章将涵盖 TensorFlow 的高级应用,包括如何自定义模型的保存和加载过程,以及如何进行分布式训练。
|
11月前
|
机器学习/深度学习 TensorFlow API
构建自定义机器学习模型:TensorFlow的高级用法
在机器学习领域,TensorFlow已经成为最受欢迎和广泛使用的开源框架之一。它提供了丰富的功能和灵活性,使开发者能够构建各种复杂的机器学习模型。在本文中,我们将深入探讨TensorFlow的高级用法,重点介绍如何构建自定义机器学习模型。
170 0
|
TensorFlow 算法框架/工具
TensorFlow自己定义EarlyStop回调函数通过监测loss指标
TensorFlow自己定义EarlyStop回调函数通过监测loss指标
98 0
|
TensorFlow 算法框架/工具
TensorFlow自定义回调函数【全局回调、批次、epoch】
TensorFlow自定义回调函数【全局回调、批次、epoch】
140 0
|
TensorFlow 算法框架/工具
TensorFlow自定义损失函数
TensorFlow自定义损失函数
94 0
|
4月前
|
机器学习/深度学习 人工智能 API
TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:1~5
TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:1~5
73 0
|
4月前
|
机器学习/深度学习 存储 人工智能
TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:6~11(3)
TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:6~11(3)
81 0
|
4月前
|
机器学习/深度学习 Dart TensorFlow
TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:6~11(5)
TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:6~11(5)
73 0

热门文章

最新文章