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


Последовательные

Создает массив функций в новую функцию, которая вызывает эти функции друг за другом ("переадресация композиции функций").

Sequential (arrayOfFunctions)

Параметры

arrayOfFunctions: массив функций BrainScript, например созданный с : помощью оператора: (LinearLayer{1024} : Sigmoid)

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

Эта функция возвращает другую функцию. Возвращаемая функция принимает один аргумент и возвращает результат применения всех заданных функций в последовательности к входным данным.

Описание

Sequential() — это мощная операция, которая позволяет компактно выразить очень распространенную ситуацию в нейронных сетях, где входные данные обрабатываются путем распространения его через прогрессирование слоев. Вы можете ознакомиться с ним из других наборов средств нейронной сети.

Sequential() принимает массив функций в качестве аргумента и возвращает новую функцию, которая вызывает эти функции по порядку, каждый раз при передаче выходных данных одного в следующий. Рассмотрим следующий пример.

FGH = Sequential (F:G:H)
y = FGH (x)

Здесь двоеточие (:) — это синтаксис BrainScript для выражения массивов. Например, (F:G:H) это массив с тремя элементами, FGи H. Например, в Python это будет записано как [ F, G, H ].

Функция, определенная FGH выше, означает то же, что и

y = H(G(F(x))) 

Это называется "композицией функций" и особенно удобно для выражения нейронных сетей, которые часто имеют такую форму:

     +-------+   +-------+   +-------+
x -->|   F   |-->|   G   |-->|   H   |--> y
     +-------+   +-------+   +-------+

который совершенно выражается Sequential (F:G:H).

Наконец, обратите внимание, что следующее выражение:

layer1 = DenseLayer{1024}
layer2 = DenseLayer{1024}
z = Sequential (layer1 : layer2) (x)

означает, что что-то отличается от:

layer = DenseLayer{1024}
z = Sequential (layer : layer) (x)

В последней форме та же функция с одинаковым общим набором параметров применяется дважды, а в первом — два слоя имеют отдельные наборы параметров.

Пример

Стандартная 4-скрытая сеть потокового канала, используемая в более ранней глубокой нейронной сети, работает с распознаванием речи:

myModel = Sequential (
    DenseLayer{2048, activation=Sigmoid} :  # four hidden layers
    DenseLayer{2048, activation=Sigmoid} : 
    DenseLayer{2048, activation=Sigmoid} : 
    DenseLayer{2048, activation=Sigmoid} : 
    DenseLayer{9000, activation=Softmax}    # note: last layer is a Softmax 
)
features = Input{40}
p = myModel (features)