2026a

# crossentropy


分类任务的交叉熵损失

函数库: TyDeepLearning

# 语法

loss = crossentropy(X, targets)

# 说明

loss = crossentropy(X, targets) 将权重应用于计算的损失值。 示例

使用此语法可以加权类、观测值、区域或输入的单个元素对计算损失值的贡献。 支持两种不同的目标值(target):

  • 类别索引 (Int),取值范围为其中 为类别数,交叉熵损失公式如下:
𝟙

其中, 表示预测值,表示目标值, 表示权重,表示batch size,限定范围为[0, C-1],表示类索引,其中 表示类的数量。

  • 类别概率 (Float),用于目标值为多个类别标签的情况。交叉熵损失公式如下:

其中, 表示预测值, 表示目标值, 表示权重, 表示 batch size, 限定范围为[0, C-1],表示类索引,其中 表示类的数量。

# 示例

类别索引标签分类的交叉熵计算

计算交叉熵损失。

using TyDeepLearning
using Random
set_backend(:mindspore)
numclass = 5
numobseravation = 3
Random.seed!(1234)
Y = randn(Float32, (3, 5))
targets = Int32[1, 0, 4]
output = TyDeepLearning.crossentropy(Y, targets)
print(output)
1.6352946
类别概率标签分类的交叉熵计算

计算交叉熵损失。

using TyDeepLearning
using Random
set_backend(:mindspore)
numclass = 10
numobseravation = 12
Random.seed!(1234)
Y = rand(Float32, (numobseravation, numclass))
targets = rand(Float32, (numobseravation, numclass))
output = TyDeepLearning.crossentropy(Y, targets)
print(output)
10.658039

# 输入参数

X-输入数据
数组

数据类型为 Float 的输入。任意维度的数组。

数据类型: Float16 | Float32 | Float64

targets-目标值
向量

输入目标值。若目标值为类别索引,则shape为 ,数据类型仅支持 Int32。 若目标值为类别概率,则 shape 为

数据类型: Float16 | Float32 | Float64

# 输出参数

loss-交叉熵损失
数组

交叉熵损失,作为未格式化的数组返回。输出损失是一个无格式的数组,其基础数据类型与输入 Y 相同。

数据类型: Float16 | Float32 | Float64

# 另请参阅

huber | mse