Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Gather(), Scatter()
Förkorta eller förlänga en datasekvens baserat på en mask.
BS.Sequences.Gather (maskSequence, dataSequence)
BS.Sequences.Scatter (maskSequence, dataSequence)
Parametrar
maskSequence: en sekvens med 0 eller 1 (statisk tensordimension[1]), där 1 indikerar att prover ska behållas. (Andra värden ger upphov till odefinierat beteende och kan ändras i framtiden.)dataSequence: den datasekvens som ska bearbetas. FörGather()måste dess längd vara samma sommaskSequenceför , medan förScatter()måste den vara lika med antalet imaskSequence.
Returvärde
För Gather(), en sekvens som innehåller en delmängd av dataSequence, med några exempel borttagna. Längden på resultatsekvensen är lika med antalet i maskSequence.
För Scatter(), en sekvens som innehåller exempel på dataSequence och infogade nollor. Resultatsekvensen har samma längd som maskSequence.
Description
Gather() och Scatter() gör att du kan förkorta eller förlänga en indatasekvens, till exempel en ordsekvens, baserat på en masksekvens.
Gather() returnerar delsekvensen för de exempel dataSequence[n] som maskSequence[n] är 1, medan de som masken är 0 för kommer att tas bort.
Scatter() tar element i en undersekvens och placerar dem i en längre sekvens och infogar nolla.
Exempel:
g = Gather (m, d)
s = Scatter (m, g)
d = A B C D E F G H I J K L M N O P Q R S T U V W X Y Z # data
m = 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 1 0 0 1 0 0 1 1 0 1 # mask
g = A B D G I J M P Q T W X Z
s = A B 0 D 0 0 G 0 I J 0 0 M 0 0 P Q 0 0 T 0 0 W X 0 Z
Gather() används ofta indirekt via Slice(..., axis=-1), BS.Sequences.First()och BS.Sequences.Last().
Exempel
Återkommande språkmodell
Med en ordsekvens i formuläret <s> A B C ... </s>tar input en språkmodell formen <s> A B C ... för att förutsäga labels formuläret A B C ... </s>. Gather() låter en enda ordsekvens läsas från filen och sedan skapa input och labels genom att släppa efterföljande </s> respektive inledande <s>:
words = Input {inputDim}
inputMask = !BS.Sequences.IsFirst (words)
labelsMask = !BS.Sequences.IsLast (words)
input = Gather (inputMask, words) # drop trailing </s>
labels = ReconcileDynamicAxis (Gather (labelsMask, words), input) # drop leading <s>
lstmLM = Sequential
(
EmbeddingLayer {300} :
RecurrentLSTMLayer {512} :
DenseLayer {inputDim, activation=LogSoftmax}
)
logP = lstmLM (input)
ce = -TransposeTimes (labels, logP)
criterionNodes = (ce)
Obs! Åtgärden Gather() kan mer bekvämt skrivas på följande sätt, som under huven anropar Gather():
input = Slice (0, -1, words, axis=-1) # strip trailing </s>
labels = ReconcileDynamicAxis (Slice (1, 0, words, axis=-1), input) # strip leading <s>
Tankevektor
Följande väljer det sista exemplet på en sekvens med dolt tillstånd:
h = RecurrentLSTMLayer {} (x) # sequence of hidden states
lastMask = BS.Sequences.IsLast (h) # mask to denote the last step
thoughtVector = BS.Sequences.Gather (lastMask, h) # select the last
IsFirst(), IsLast()
Skapa en mask för användning med Gather() för att välja det första respektive sista exemplet på en sekvens.
BS.Sequences.IsFirst (dataSequence)
BS.Sequences.IsLast (dataSequence)
Parametrar
dataSequence: valfri sekvens, t.ex. en ordsekvens
Returvärde
En mask för användning med Gather() som väljer det första eller sista objektet, samtidigt som alla andra exempel tas bort.
Description
IsFirst() och IsLast() skapa en mask för användning med Gather() för att välja det första respektive sista exemplet på en sekvens, vilket vanligtvis behövs i sekvens-till-sekvens-modeller för att extrahera "tankevektorn" (det sista dolda tillståndet för en upprepning).
Exempel
Se här.