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.
Sigmoid(), Tanh(), ReLU(), Softmax(), LogSoftmax(), Hardmax()
Niet-lineaire activeringsfuncties voor neurale netwerken.
Sigmoid (x)
Tanh (x)
ReLU (x)
Softmax (x)
LogSoftmax (x)
Hardmax (x)
Parameters
x: argument om de niet-lineariteit toe te passen op
Retourwaarde
Resultaat van het toepassen van de niet-lineariteit. De tensorshape van de uitvoer is hetzelfde als de invoer.
Description
Dit zijn de populaire activeringsfuncties van neurale netwerken.
Dit alles behalve de Softmax() familie en Hardmax() worden met elementwise toegepast.
Let op: bij het gebruik van het criterium voor kruis-entropietraining is het vaak wenselijk om aan het einde geen Softmax-bewerking toe te passen, maar in plaats daarvan de invoer van de Softmax door te geven aan CrossEntropyWithSoftmax()
De Hardmax() bewerking bepaalt het element met de hoogste waarde en vertegenwoordigt de locatie ervan als een een een-hot vector/tensor.
Dit wordt gebruikt voor het uitvoeren van classificatie.
Andere niet-lineariteiten uitdrukken in BrainScript
Als uw benodigde niet-lineariteit niet een van de bovenstaande is, kan het zijn dat deze kan worden composposeerbaar als een BrainScript-expressie. Een gelekte ReLU met een helling van 0,1 voor het negatieve deel kan bijvoorbeeld gewoon worden geschreven als
LeakyReLU (x) = 0.1 * x + 0.9 * ReLU (x)
Softmax langs assen
De Softmax-familie is speciaal omdat het de berekening van een noemer omvat. Deze noemer wordt berekend over alle waarden van de invoervector.
In sommige scenario's is de invoer echter een tensor met rang>1, waarbij assen afzonderlijk moeten worden behandeld.
Denk bijvoorbeeld aan een invoertenator van shape [10000 x 20] waarin 20 verschillende distributies worden opgeslagen. Elke kolom vertegenwoordigt de waarschijnlijkheidsverdeling van een afzonderlijk invoeritem.
Daarom moet de Softmax-bewerking 20 afzonderlijke noemers berekenen.
Deze bewerking wordt niet ondersteund door de ingebouwde (Log)Softmax() functies, maar kan als volgt worden gerealiseerd in BrainScript met behulp van een elementwise reductiebewerking:
ColumnwiseLogSoftmax (z) = z - ReduceLogSum (axis=1)
ReduceLogSum() Hier wordt het (logboek van) de noemer berekend, wat resulteert in een tensor met dimensie 1 voor de gereduceerde as; [1 x 20] in het bovenstaande voorbeeld. Dit aftrekken van de [10000 x 20]-dimensionale invoervector is een geldige bewerking, zoals gebruikelijk, de 1 wordt automatisch 'uitgezonden', dat wil gezegd, gedupliceerd om overeen te komen met de invoerdimensie.
Voorbeeld
Een eenvoudige MLP die een 10-wegclassificatie van 40-dimensionale functievectoren uitvoert:
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)