主要内容

softmax

对通道维度应用 softmax 激活

说明

softmax 激活运算将 softmax 函数应用于输入数据的通道维度。

softmax 函数将输入数据在通道维度上的值进行归一化处理,使其总和为 1。你可以将 softmax 函数的输出视为一个概率分布。

注意

此函数将 softmax 运算应用于 dlarray 数据。如果要在 dlnetwork 对象中应用 softmax,请使用 softmaxLayer

Y = softmax(X) 通过将 softmax 传递函数应用于输入数据的通道维度来计算输入 X 的 softmax 激活。Y 中的所有值都介于 01 之间,总和最大为 1。输入 X 必须是格式化的 dlarray。输出 Y 是格式化的 dlarray,其维度格式与 X 的维度格式相同。

示例

如果 X 不是格式化的 dlarrayY = softmax(X,'DataFormat',FMT) 还指定维度格式 FMT。输出 Y 是未格式化的 dlarray,其维度顺序与 X 的维度顺序相同。

示例

全部折叠

使用 softmax 函数将输入数据中的所有值都设置为 01 之间的值,所有通道的总和最大为 1

将输入分类数据创建为两个随机变量观测值。数据可以是 10 个类别中的任意一个。

numCategories = 10;
observations = 2;

X = rand(numCategories,observations);
X = dlarray(X,'CB');

计算 softmax 激活。

Y = softmax(X)
totalProb = sum(Y,1)
Y =

  10(C) x 2(B) dlarray

    0.1151    0.0578
    0.1261    0.1303
    0.0579    0.1285
    0.1270    0.0802
    0.0959    0.1099
    0.0562    0.0569
    0.0673    0.0753
    0.0880    0.1233
    0.1328    0.1090
    0.1337    0.1288
totalProb =

  1(C) x 2(B) dlarray

    1.0000    1.0000

Y 范围中的所有值都介于 01 之间。对于每个观测值而言,所有通道的值相加后的总和为 1

输入参数

全部折叠

输入数据,指定为格式化的 dlarray 或未格式化的 dlarray。当 X 不是格式化的 dlarray 时,必须使用 'DataFormat',FMT 指定维度标签格式。

X 必须包含一个 'C' 通道维度。

数据类型: single | double

数据维度的描述,指定为字符向量或字符串标量。

数据格式是一个字符串,其中每个字符描述对应数据的维度的类型。

这些字符是:

  • "S" - 空间

  • "C" - 通道

  • "B" - 批量

  • "T" - 时间

  • "U" - 未指定

例如,假设有一个表示一批序列的数组,其中第一个、第二个和第三个维度分别对应于通道、观测值和时间步。您可以将该数据描述为具有格式 "CBT"(通道、批量、时间)。

您可以指定多个标注为 "S""U" 的维度。每个 "C""B""T" 标签最多可以使用一次。该软件忽略第二个维度后的单一尾部 "U" 维度。

如果输入数据不是格式化的 dlarray 对象,则必须指定 FMT 选项。

有关详细信息,请参阅Deep Learning Data Formats

数据类型: char | string

输出参量

全部折叠

softmax 激活,以 dlarray 形式返回。Y 中的所有值都介于 01 之间。输出 Y 与输入 X 具有相同的基础数据类型。

如果输入数据 X 是格式化的 dlarray,则 Y 具有与 X 相同的维度格式。如果输入数据不是格式化的 dlarray,则 Y 是未格式化的 dlarray,其维度顺序与输入数据的维度顺序相同。

算法

全部折叠

扩展功能

全部展开

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。

版本历史记录

在 R2019b 中推出