Compartir a través de


Recopilación y dispersión

Gather(), Scatter()

Acortar o alargar una secuencia de datos basada en una máscara.

BS.Sequences.Gather  (maskSequence, dataSequence)
BS.Sequences.Scatter (maskSequence, dataSequence)

Parámetros

  • maskSequence: una secuencia de 0 o 1 (dimensión [1]tensor estática), donde 1 indica las muestras que se van a mantener. (Cualquier otro valor da lugar a un comportamiento indefinido y puede cambiar en el futuro).
  • dataSequence: secuencia de datos que se va a procesar. Para Gather(), su longitud debe ser la misma que la de maskSequence, mientras que para Scatter(), debe ser igual al número de valores maskSequencede .

Valor devuelto

Para Gather(), una secuencia que contiene un subconjunto de dataSequence, con algunos ejemplos quitados. La longitud de la secuencia de resultados será igual al número de uno de maskSequence.

Para Scatter(), una secuencia que contiene muestras de dataSequence ceros insertados e insertados. La secuencia de resultados tendrá la misma longitud que maskSequence.

Descripción

Gather() y Scatter() permiten acortar o alargar una secuencia de entrada, como una secuencia de palabras, en función de una secuencia de máscara.

Gather() devuelve la subcadena de esas muestras dataSequence[n] para las que maskSequence[n] es 1, mientras que las para las que la máscara es 0 se quitarán.

Scatter() toma elementos de una subcadena y los coloca en una secuencia más larga, insertando ceros.

Por ejemplo:

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() a menudo se usa indirectamente a través Slice(..., axis=-1)de , BS.Sequences.First()y BS.Sequences.Last().

Ejemplos

Modelo de lenguaje recurrente

Dada una secuencia de palabras del formulario <s> A B C ... </s>, un modelo de lenguaje toma el input de forma <s> A B C ... para predecir labels el formato A B C ... </s>. Gather()permite que una sola secuencia de palabras se lea desde el archivo y, a continuación, cree input y quitando </s> el final y el inicial <s>, labels respectivamente:

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)

Nota: La Gather() operación se puede escribir más convenientemente de la siguiente manera, que en segundo plano llama a Gather():

input  =                       Slice (0, -1, words, axis=-1)          # strip trailing </s>
labels = ReconcileDynamicAxis (Slice (1,  0, words, axis=-1), input)  # strip leading <s>

Vector de pensamiento

A continuación se selecciona el último ejemplo de una secuencia de estado oculto:

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()

Cree una máscara para usarla con Gather() para seleccionar la primera y la última muestra de una secuencia, respectivamente.

BS.Sequences.IsFirst (dataSequence)
BS.Sequences.IsLast  (dataSequence)

Parámetros

  • dataSequence: cualquier secuencia, por ejemplo, una secuencia de palabras.

Valor devuelto

Máscara para su uso con Gather() que seleccionará el primer o último elemento, respectivamente, al quitar todos los demás ejemplos.

Descripción

IsFirst() y IsLast() crean una máscara para su uso con Gather() para seleccionar la primera y la última muestra de una secuencia, respectivamente, que normalmente se necesita en los modelos de secuencia a secuencia para extraer el "vector de pensamiento" (el último estado oculto de una periodicidad).

Ejemplos

Consulte aquí.