Поделиться через


Сбор и точечная диаграмма

Сбор(), точечная()

Сокращение или расширение последовательности данных на основе маски.

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

Параметры

  • maskSequence: последовательность 0 или 1 (статическое измерение тензора [1]), где 1 указывает образцы для хранения. (Любое другое значение приводит к неопределенному поведению и может измениться в будущем.)
  • dataSequence: последовательность данных для обработки. Для Gather(), его длина должна быть той же, что maskSequenceи , в то время как для Scatter(), она должна быть равна числу из них в maskSequence.

Возвращаемое значение

Для Gather()последовательности, содержащей подмножество dataSequence, при этом некоторые примеры удалены. Длина последовательности результатов будет равна числу из них.maskSequence

Для Scatter()последовательности, содержащей примеры dataSequence и вставленные нули. Последовательность результатов будет иметь ту же длину, что maskSequenceи .

Описание

Gather() и Scatter() позволяет сократить или продлить входную последовательность, например последовательность слов, на основе последовательности маски.

Gather() возвращает вложенную последовательность этих выборок dataSequence[n]maskSequence[n]1, то есть те, для которых будет удалена маска 0.

Scatter() принимает элементы вложенной последовательности и помещает их в длинную последовательность, вставляя нули.

Пример:

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() часто используется косвенно через Slice(..., axis=-1), BS.Sequences.First()и BS.Sequences.Last().

Примеры

Повторяющаяся языковая модель

Учитывая последовательность слов формы <s> A B C ... </s>, языковая модель принимает input форму <s> A B C ... для прогнозирования labels формы A B C ... </s>. Gather() позволяет считывать одну последовательность слов из файла, а затем создавать и удалять inputlabels конечные </s> и начальные <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)

Примечание. Операция Gather() может быть удобнее записываться следующим образом, что под вызовами Gather()капюшона:

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

Вектор мысли

В следующем примере выбирается последняя последовательность скрытых состояний:

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

Создайте маску для использования для Gather() выбора первой и последней выборки последовательности соответственно.

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

Параметры

  • dataSequence: любая последовательность, например последовательность слов

Возвращаемое значение

Маска для использования с Gather() этим элементом будет выбирать первый или последний элемент соответственно при удалении всех остальных образцов.

Описание

IsFirst() и IsLast() создайте маску для использования для Gather() выбора первой и последней выборки последовательности соответственно, которая обычно требуется в моделях последовательности в последовательности для извлечения "вектора мысли" (последнее скрытое состояние повторения).

Примеры

Дополнительные сведения см. здесь.