Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Elementweise binäre Operatoren.
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)
Parameter
x: linke Eingabey: Rechte Eingabe
Die Dimensionen und xy müssen übereinstimmen (siehe unten).
Für die drei Boolean Vorgänge werden beide Eingaben voraussichtlich entweder 0 oder 1 sein, andernfalls ist das Verhalten der Funktionen nicht angegeben und ändert sich tatsächlich in zukünftigen Versionen.
Sparsewerte werden derzeit nicht unterstützt.
Rückgabewert
Diese Funktionen geben das Ergebnis der entsprechenden Vorgänge zurück. Die Beziehungsoperatoren (Equal() usw.) und die drei Boolean Vorgänge geben Werte zurück, die entweder 0 oder 1 sind.
Die Ausgabedimension oder das Tensor-Shape ist identisch mit den Eingaben, die der Übertragung unterliegen, siehe unten.
Beschreibungen
Dies sind die allgemeinen binären Operatoren.
Sie werden elementweise angewendet.
(Beachten Sie, dass der Operator von * BrainScript nicht elementweise ist, sondern für das Matrixprodukt steht. Dies unterscheidet sich beispielsweise von der Python-Bibliothek numpy .)
Die Abmessungen der Eingaben müssen mit Ausnahme des Rundfunks identisch sein.
Rundfunksemantik
Rundfunk, ein Konzept, das CNTK Modelle nach der Bibliothek von numpy Python hat, bedeutet, dass eine Dimension in einer der Eingaben 1 sein kann, bei denen die andere Eingabe nicht ist.
In diesem Fall wird n die Eingabe mit der 1-Dimension kopiert, wobei n es sich um die entsprechende Bemaßung der eingabe handelt.
Wenn die Tensor-Rangfolgen nicht übereinstimmen, wird die Tensorform der Eingabe mit weniger Dimensionen als 1 angenommen und die Übertragung auslösen.
Das Hinzufügen eines [13 x 1] Tensors zu einem [1 x 42] Vektor würde beispielsweise einen [13 x 42] Vektor liefern, der die Summen aller Kombinationen enthält.
Beziehungsvorgänge
Die Beziehungsoperatoren (Equal() etc.) sind nicht unterschiedlich, ihr Farbverlauf gilt immer als 0.
Sie können für Flags verwendet werden, z. B. als Bedingungsargument im If() Vorgang.
LogPlus()
Der LogPlus() Vorgang berechnet die Summe der Werte, die in logarithmischer Form dargestellt werden.
Es berechnet folgendes:
LogPlus (x, y) = Log (Exp (x) + Exp (y))
wo x und y sind Logarithmen von Werten.
Dieser Vorgang ist nützlich beim Umgang mit Wahrscheinlichkeiten, die oft so klein sind, dass nur eine logarithmische Darstellung eine angemessene numerische Genauigkeit ermöglicht.
Hinweis: Ein weiterer allgemeiner Name für diesen Vorgang ist log-add-exp, z. B. SciPy.
Beispiele
Standard-Sigmoidschicht
Diese Ebene verwendet die elementweise Binärdatei +:
z = Sigmoid (W * x + b)
Beachten Sie, dass * oben nicht elementweise, sondern für das Matrixprodukt steht.
Alternative Implementierung der Softmax-Aktivierung
Die Softmax() Aktivierungsfunktion kann mithilfe von Rundfunk Minusgeschrieben werden:
MySoftmax (z) = Exp (z - ReduceLogSum (z))
Hier reduziert der Vektor z auf einen Skalar, ReduceLogSum() indem er seine logarithmische Summe berechnen kann. Durch die Sendesemantik der Subtraktion wird dieser Skalar dann von jedem Eingabewert subtrahiert.
Dadurch wird die Division durch die Summe aller Werte in der Softmax-Funktion implementiert.
Elementweise Max von zwei Eingaben
Die elementweise maximal zwei Eingaben können als Kombination von Greater() und If():
MyElementwiseMax (a, b) = If (Greater (a, b), a, b)
Dies funktioniert auch mit dem Rundfunk. Beispielsweise kann der lineare Retifier mit dieser mithilfe einer Skalarkonstante als zweite Eingabe geschrieben werden:
MyReLU (x) = MyElementwiseMax (x, Constant(0))