你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 BrainScript 激活函数
Sigmoid () , Tanh () , ReLU () , Softmax () , LogSoftmax () , Hardmax ()
神经网络的非线性激活函数。
Sigmoid (x)
Tanh (x)
ReLU (x)
Softmax (x)
LogSoftmax (x)
Hardmax (x)
parameters
x
:将非线性应用于的参数
返回值
应用非线性的结果。 输出的张量形状与输入的形状相同。
说明
这些是神经网络的热门激活功能。
除系列外 Softmax()
的所有项,均 Hardmax()
按元素应用。
请注意,为了提高效率,在使用交叉枚举训练标准时,通常需要在末尾不应用 Softmax 操作,而是将 Softmax 的 输入 传递给 CrossEntropyWithSoftmax()
该 Hardmax()
操作确定具有最高值的元素,并将其位置表示为单热向量/张量。
这用于执行分类。
在 BrainScript 中表达其他非线性
如果需要的非线性不是上述任一项,则它可以作为 BrainScript 表达式进行组合。 例如,负部分的斜率为 0.1 的泄漏 ReLU 可能只写为
LeakyReLU (x) = 0.1 * x + 0.9 * ReLU (x)
沿轴的 Softmax
Softmax 系列特别,因为它涉及分母的计算。 此分母在输入向量的所有值上计算。
但是,在某些情况下,输入是排名>为 1 的张量,应分别处理轴。
例如,考虑存储 20 个不同的分布的形状 [10000 x 20]
的输入张量,每列表示不同输入项的概率分布。
因此,Softmax 运算应计算 20 个单独的分母。
内置 (Log)Softmax()
函数不支持此操作,但可以使用元素缩减操作在 BrainScript 中实现,如下所示:
ColumnwiseLogSoftmax (z) = z - ReduceLogSum (axis=1)
在这里, ReduceLogSum()
计算分母) 的 (对数,从而产生维度为 1 的张 [1 x 20]
量;在上面的示例中。 从 [10000 x 20]
-dimension 输入向量中减去此值是一个有效的操作,即 1
自动“广播”,即重复以匹配输入维度。
示例
执行 40 维特征向量的 10 向分类的简单 MLP:
features = Input{40}
h = Sigmoid (ParameterTensor{256:0} * features + ParameterTensor{256})
z = ParameterTensor{10:0} * h * ParameterTensor{10} # input to Softmax
labels = Input{10}
ce = CrossEntropyWithSoftmax (labels, z)