【Softmax 回归+交叉熵损失(标签为独热编码类型)手写数字识别】

本文介绍了交叉熵损失在分类问题中的作用,提供了其数学公式,并展示了如何在TensorFlow中使用CategoricalCrossentropy进行模型编译和训练。以MNIST数据集为例,详细展示了整个过程。
摘要由CSDN通过智能技术生成

交叉熵损失的背景和数学原理

交叉熵损失是用于度量模型输出与实际标签之间差异的一种损失函数。在分类问题中,我们希望模型的预测结果尽可能接近真实标签,交叉熵损失就是基于概率分布的思想,衡量模型输出概率分布与实际标签概率分布之间的差异。

对于单个样本,交叉熵损失的数学表达式为:

H ( y , y ^ ) = − ∑ i y i ⋅ log ⁡ ( y ^ i ) H(y, \hat{y}) = -\sum_{i} y_i \cdot \log(\hat{y}_i) H(y,y^)=iyilog(y^i)

其中, y y y 表示真实标签的概率分布, y ^ \hat{y} y^ 表示模型的预测概率分布, y i y_i yi y ^ i \hat{y}_i y^i 分别是真实标签和模型预测的第 i i i 类的概率。

TensorFlow 中的交叉熵损失应用

在 TensorFlow 中,可以使用 tf.keras.losses.CategoricalCrossentropytf.keras.losses.SparseCategoricalCrossentropy 来计算交叉熵损失。如果标签是独热编码的形式,可以使用 CategoricalCrossentropy,如果标签是整数形式,可以使用 SparseCategoricalCrossentropy

import tensorflow as tf

# 创建模型
model = tf.keras.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),  # 将图像扁平化为 784 的形状
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(10, activation='softmax')
])

# 编译模型
model.compile(optimizer='adam',
              loss=tf.keras.losses.CategoricalCrossentropy(),
              metrics=['accuracy'])

# 加载数据集并进行预处理
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

# 将标签进行独热编码
y_train = tf.keras.utils.to_categorical(y_train, num_classes=10)
y_test = tf.keras.utils.to_categorical(y_test, num_classes=10)

# 设置 TensorBoard 回调
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir="logs")

# 训练模型
model.fit(x_train, y_train, epochs=10,
          validation_data=(x_test, y_test),
          callbacks=[tensorboard_callback])

# 评估模型
model.evaluate(x_test, y_test, verbose=2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武帝为此

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值