你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

二进制操作

元素二进制运算符。

ElementTimes (x, y)
x .* y
Minus (x, y)
x - y
Plus (x, y)
x + y
LogPlus (x, y)
Less (x, y)
Equal (x, y)
Greater (x, y)
GreaterEqual (x, y)
NotEqual (x, y)
LessEqual (x, y)
BS.Boolean.And (x, y)
BS.Boolean.Or (x, y)
BS.Boolean.Xor (x, y)

parameters

  • x:左输入
  • y:右输入

其维度xy必须与广播规则 (匹配,请参阅以下) 。

对于这三 Boolean 个操作,这两个输入应为 0 或 1,否则函数的行为未指定,并且实际上会在将来的版本中发生更改。

目前不支持稀疏值。

返回值

这些函数返回相应操作的结果。 关系运算符 (Equal() etc.) ,三 Boolean 个运算返回 0 或 1 的值。

输出维度或张量形状与输入形状相同,但要进行广播,请参阅下文。

说明

这些是常见的二进制运算符。 它们以元素方式应用。 (请注意,BrainScript 运算符*不是以元素方式表示的,而是代表矩阵产品。例如,这不同于 Python 的 numpy library.)

输入的维度必须相同,但广播除外。

广播语义

广播是指在 Python numpy 库之后CNTK模型的概念,这意味着其中一个输入中的维度可以是 1,其中另一个输入不是。 在这种情况下,将复制 n 具有 1 维的输入,其中 n 对应其他输入的维度。 如果张量排名不匹配,则假定输入的张量形状小于 1,并触发广播。

例如,向[1 x 42]量中添加[13 x 1]张量将产生一个[13 x 42]包含所有组合的总和的向量。

关系操作

关系运算符 (Equal() 等) 不可区分,其渐变始终被视为 0。 它们可用于标志,例如作为操作中的 If() 条件参数。

LogPlus ()

LogPlus() 操作计算以对数形式表示的值的总和。 即计算:

LogPlus (x, y) = Log (Exp (x) + Exp (y))

值对数和xy对数。 处理概率时,此操作非常有用,通常很小,只有对数表示形式才允许适当的数值准确性。

注意:此操作的另一个公用名是 log-add-exp,例如 SciPy

示例

标准 Sigmoid 层

此层使用元素二进制文件 +

z = Sigmoid (W * x + b)

请注意, * 上面 不是 元素的,而是表示 矩阵乘积

Softmax 激活的替代实现

Softmax()可以使用广播Minus编写激活函数:

MySoftmax (z) = Exp (z - ReduceLogSum (z))

在这里, ReduceLogSum() 通过计算其对数求和,将向量 z 减少到标量。 通过广播减法语义,然后从每个输入值中减去此标量。 这将实现 Softmax 函数中所有值的除法。

元素最大为两个输入

可以按元素计算两个输入的最大两个输入, Greater() 并且 If()

MyElementwiseMax (a, b) = If (Greater (a, b), a, b)

这也适用于广播。 例如,可以使用标量常量作为第二个输入来编写线性整流器:

MyReLU (x) = MyElementwiseMax (x, Constant(0))