Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Elementwise binaire 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)
Parameters
x: linkerinvoery: juiste invoer
De afmetingen van en y moeten overeenkomen (afhankelijk van xde uitzendregels, zie hieronder).
Voor de drie Boolean bewerkingen zijn beide invoerwaarden naar verwachting 0 of 1, anders is het gedrag van de functies niet opgegeven en verandert in toekomstige versies.
Sparse-waarden worden momenteel niet ondersteund.
Retourwaarde
Deze functies retourneren het resultaat van de bijbehorende bewerkingen. De relationele operatoren (Equal() enzovoort) en de drie Boolean bewerkingen retourneren waarden die 0 of 1 zijn.
De uitvoerdimensie of tensorshape is identiek aan die van de invoer, afhankelijk van uitzending, zie hieronder.
Beschrijvingen
Dit zijn de algemene binaire operatoren.
Ze worden elementgewijs toegepast.
(De operator van * BrainScript is niet elementgewijs, maar staat voor het matrixproduct. Dit is bijvoorbeeld anders dan de bibliotheek van numpy Python.)
De afmetingen van de invoer moeten identiek zijn, met uitzondering van uitzending.
Semantiek uitzenden
Uitzenden, een concept dat CNTK modellen na de bibliotheek van numpy Python, betekent dat een dimensie in een van de invoerwaarden 1 kan zijn waar de andere invoer niet is.
In dat geval wordt de invoer met de 1-dimensie gekopieerd n , waarbij n de bijbehorende dimensie van andere invoer is.
Als de tensor-rangschikkingen niet overeenkomen, wordt ervan uitgegaan dat de tensor-vorm van de invoer met minder dimensies 1 is en dat het uitzenden wordt geactiveerd.
Als u bijvoorbeeld een [13 x 1] tensor toevoegt aan een [1 x 42] vector, levert dit een [13 x 42] vector op die de som van alle combinaties bevat.
Relatiebewerkingen
De relationele operatoren (Equal() enz.) zijn niet verschillend, hun kleurovergang wordt altijd beschouwd als 0.
Ze kunnen worden gebruikt voor vlaggen, bijvoorbeeld als voorwaardeargument in de If() bewerking.
LogPlus()
De LogPlus() bewerking berekent de som van waarden die worden weergegeven in logaritmische vorm.
Dit berekent het volgende:
LogPlus (x, y) = Log (Exp (x) + Exp (y))
waar x en y logaritmen van waarden zijn.
Deze bewerking is handig bij het omgaan met waarschijnlijkheden, die vaak zo klein zijn dat alleen een logaritmische weergave de juiste numerieke nauwkeurigheid toestaat.
Opmerking: Een andere algemene naam voor deze bewerking is log-add-exp, bijvoorbeeld SciPy.
Voorbeelden
Standaard sigmoidlaag
Deze laag maakt gebruik van het binaire elementgewijze +:
z = Sigmoid (W * x + b)
Houd er rekening mee dat * het bovenstaande niet elementgewijs is, maar staat voor het matrixproduct.
Alternatieve implementatie van Softmax-activering
De Softmax() activeringsfunctie kan worden geschreven met behulp van uitzending Minus:
MySoftmax (z) = Exp (z - ReduceLogSum (z))
ReduceLogSum() Hier vermindert u de vector z naar een scalaire waarde door de logaritmische som te berekenen. Door het uitzenden van semantiek van aftrekken wordt deze scalaire waarde vervolgens afgetrokken van elke invoerwaarde.
Hiermee wordt de verdeling geïmplementeerd door de som van alle waarden in de functie Softmax.
Elementwise Max van twee invoer
Het elementgewijze maximum van twee invoer kan worden berekend als een combinatie van Greater() en If():
MyElementwiseMax (a, b) = If (Greater (a, b), a, b)
Dit werkt ook met uitzenden. De lineaire gelijkrichter kan bijvoorbeeld worden geschreven met behulp van een scalaire constante als de tweede invoer:
MyReLU (x) = MyElementwiseMax (x, Constant(0))