2026a

# softmaxLayer


Softmax 激活层

函数库: TyDeepLearning

# 语法

layer = softmaxLayer(axis = -1)

# 说明

layer = softmaxLayer(axis = -1) 创建一个 sigmoid 激活函数层。示例

softmaxLayer 函数,它是二分类函数 sigmoidLayer 在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。 对输入数据在轴 axis 上的元素计算其指数函数值,然后归一化到 [0, 1] 范围,总和为 1。 softmaxLayer定义为:

其中, 是输入数据在轴 axis 上的第 i 个元素。

# 示例

创建softmax激活函数层

创建一个 softmax 激活函数层。 创建一个数组,使用该层处理数组并输出结果,检验结果各维度加和是否为 1。

using TyDeepLearning
set_backend(:mindspore)
layer = softmaxLayer()
array = convert(Array{Float16}, [-1, -2, 0, 2, 1])
println(TyDeepLearning.predict(layer, array))
print(sum(TyDeepLearning.predict(layer, array)))
Float32[0.03168492, 0.011656229, 0.08612854, 0.6364086, 0.23412168]
1.0

随机生成一个维度为(1,1,28,28)的数组。

input = rand(Float32, (1, 1, 28, 28))

创建一个包含softmax激活函数层的神经网络。 使用该神经网络处理数组并输出结果维度。

layers = SequentialCell([
    convolution2dLayer(1, 20, 5),
    reluLayer(),
    maxPooling2dLayer(2; Stride = 2),
    flattenLayer(),
    fullyConnectedLayer(20 * 14 * 14, 10),
    softmaxLayer()
])
print(size(TyDeepLearning.predict(layers, input)))
(1, 10)

# 输入参数

axis-轴
标量

指定 sigmoidLayer 运算的轴 axis,假设输入 x 的维度为 x.ndim,则 axis 的范围为 [-x.ndim, x.ndim) ,-1 表示最后一个维度。默认值:-1。CPU环境下,axis 只支持 Int 类型。

数据类型: Int64

# 输出参数

layer-Softmax激活层
网络对象

输出为一个 Softmax 激活层

# 另请参阅

SequentialCell | convolution2dLayer | reluLayer | maxPooling2dLayer | flattenLayer | fullyConnectedLayer | predict