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


Параметры и константы

ParameterTensor{}

Создает скалярный, вектор, матрицу или тензор тензорных параметров.

ParameterTensor {shape,
                 init='uniform'/*|heNormal|...*/, initOutputRank=1, initValueScale=1.0,
                 randomSeed=-1,
                 initValue=0.0, initFromFilePath='',
                 learningRateMultiplier=1.0}

Параметры

  • shape: фигура (измерения) параметра в виде массива. (13:42) Например, чтобы создать матрицу с 13 строками и 42 столбцами. Для некоторых операций измерения, заданные как 0, автоматически выводятся (см. здесь)
  • init(по умолчанию "uniform"): указывает случайную инициализацию, например (см.init='heNormal' здесь)
  • initOutputRank (по умолчанию 1): указывает количество ведущих осей вентилятора. Если отрицательный, -number of trailing fan-out axes (см. здесь)
  • initValueScale (по умолчанию 1): дополнительный коэффициент масштабирования, применяемый к значениям случайной инициализации
  • randomSeed (по умолчанию –1): если положительный результат, используйте это случайное начальное значение для случайной инициализации. Если отрицательный, используйте счетчик, который увеличивается для каждого из них. ParameterTensor{}
  • initValue: указывает инициализацию с константным значением, например. initValue=0
  • initFromFilePath: указывает инициализацию путем загрузки исходных значений из файла. Например, initFromFilePath="my_init_vals.txt"
  • learningRateMultiplier: скорость системного обучения будет масштабироваться (0 для отключения обучения) (см. здесь)

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

Тензор обучаемых параметров.

Описание

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

Значения будут инициализированы в зависимости от того, какой необязательный параметр присваивается.

  • случайные числа, если init задано;
  • константой, если initValue она задана; или
  • тензор, считывающийся из внешнего входного файла, если initFromFilePath он задан. Значение по умолчанию — init="uniform".

Чтобы создать скалярный, вектор, матрицу или тензор с рангом>2, передайте следующий параметр в качестве shape параметра:

  • (1) для скалярного;
  • (M) для вектора столбца с M элементами;
  • (1:N) для вектора строк с N элементами. Векторы строк являются однострочных матрицами;
  • (M:N) для матрицы со строками N и I столбцами;
  • (I:J:K...) для тензора произвольного ранга 2 (примечание: максимальный допустимый ранг>равен 12); и
  • (W:H:C) для тензора [W x H] , который соответствует измерениям изображения с C каналами.

Автоматическое определение измерения

Если используется ParameterTensor для весовых коэффициентов в качестве немедленного ввода определенных операций, можно указать некоторые измерения как Inferred. Например, матричный продуктParameterTensor{42:Inferred} * x) автоматически выведет второе измерение, равное измерению x.

Это очень удобно для входных данных слоев, так как он освобождает код BrainScript пользователя от бремени передачи вокруг входных измерений. Кроме того, в некоторых ситуациях очень сложно определить точные входные измерения слоя, например для первого полностью подключенного слоя на вершине пирамиды сверток или объединения в пуле, без заполнения, где каждая операция свертки и пула может удалять строки или столбцы границ пикселей и шаги масштабирования измерений.

Эта функция позволяет предопределенным слоям CNTK задаваться только их выходным измерением (например, DenseLayer{1024}).

Случайная инициализация

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

значение init распределение отклонение диапазона или стандартного отклонения
"heNormal" нормальный sqrt (2 / fanIn)
"heUniform" Однородный элемент sqrt (6 / fanIn)
"glorotNormal" нормальный sqrt (2 / (fanIn+fanOut))
"glorotUniform" Однородный элемент sqrt (6 / (fanIn+fanOut))
'xavier' Однородный элемент sqrt (3 / fanIn)
"униформа" Однородный элемент 1/20
'gaussian' нормальный sqrt (0,04 / fanIn)
"ноль" Недоступно 0

(Где zero иногда удобная альтернатива указанию initValue=0.) Для равномерного распределения параметры будут инициализированы равномерно в [диапазоне, диапазоне]; для нормального распределения среднее всегда равно нулю.

Обратите внимание, что значение по умолчанию используется inituniform напрямую ParameterTensor{} . Однако по умолчанию используется glorotUniformслои , содержащие параметры внутри, такие как DenseLayer{} и ConvolutionalLayer{}.

Вентилятор и раздувание для случайной инициализации

Случайная инициализация предполагает, что параметры являются частью какой-то формы матричного продукта, такой как операция, которая имеет четко определенный вентилятор и раздувание, которые используются при определении масштабирования случайных значений на указанную выше таблицу. По умолчанию первая ось считается раздувной, а остальные оси и оси являются вентилятором, совпадая с семантикой обычного матричного продукта.

Необязательный параметр initOutputRank можно использовать для указания числа ведущих осей, которые следует рассматривать как раздуваемые. Например, для матричного продукта в расширенной интерпретации тензора CNTK, которая сопоставляет [K]вектор [I x J]x -размерный ранг-2, можно записать как Times (W, x, outputRank=2), где W имеется фигура[I x J x K]. Здесь указывается, initOutputRank=2 что при масштабировании значений случайной инициализации выдумка и I*J вентилятора K.

Отрицательные значения для initOutputRank обозначения того, что оси вентилятора являются конечными осями. Например, ядро ConvolutionalLayer{} фильтра и базовая Convolution() операция для типичной установки обработки изображений имеет форму [W x H x C x K], где K находится выдувка, в то время как вентилятор находится W*H*C. Этот параметр задается параметром initOutputRank=-1.

Чтение начальных значений из файлов

Начальные значения можно считывать из текстового файла. Для этого передайте имя пути для необязательного параметра initFromFilePath. Ожидается, что текстовый файл состоит из одной строки на строки матрицы, состоящей из чисел, разделенных пробелами, по одному на столбец. Измерения строк и столбцов в файле должны совпадать shape.

Скорость обучения для конкретных параметров

Скорость обучения для конкретных параметров может быть реализована с помощью необязательного learningRateMultiplier параметра. Этот фактор умножается на фактическую скорость обучения при выполнении обновлений параметров. Например, если задано значение 0, параметр не будет обновлен, он является константой.

Примеры

Обычная матрица параметров, которая будет инициализирована как heUniform (по умолчанию — heNormal):

W = ParameterTensor {(outDim:inDim), init=`heUniform`}

Обычный параметр смещения, который будет инициализирован как ноль:

b = ParameterTensor {outDim, initValue=0}

Матрица внедрения, считываемая из файла и сохраняемая константа:

E = ParameterTensor {(embedDim:vocabSize),
                     initFromFilePath='./EmbeddingMatrix.txt',
                     learningRateMultiplier=0}  # prevents learning

Параметр смещения полного [width x height]размера изображения -size с numChannels цветными плоскостями:

bFull = ParameterTensor {(width:height:numChannels)}

Постоянной{}

Создайте константный тензор.

Constant {scalarValue, rows=1, cols=1}

Параметры

  • scalarValue: значение этой константы
  • rows (по умолчанию: 1): количество строк, если константа не является скалярной
  • cols (значение по умолчанию: 1): число столбцов, если константа не является скалярной

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

Константы, скалярные или ранг-1 или ранг-2 измерения [rows x cols], в которых все элементы заполняются scalarValue.

Описание

Значение-константа. Это может быть скалярный объект или объект rank-1 (vector) или объект rank-2 (матрица), инициализируемый одним значением (например, 0). Обратите внимание, что поскольку для векторных и матричных констант все значения идентичны, константы, используемые в сочетании с операциями с элементом , часто можно указать в виде скалярного представления.

Примечание о реализации:

A Constant() — это ParameterTensor{} с learningRateMultiplier=0.

Примеры

Интерполяция между двумя значениями с весом alpha интерполяции в диапазоне 0.1 ("soft multiplexer"):

SoftMUX (x, y, alpha) = Constant (1-alpha) .* x + Constant (alpha) .* y

Потеря Хамминга (см. здесь):

HammingLoss (y, p) = ReduceSum (BS.Boolean.Xor (y, Greater (p, Constant(0.5))))
hl = HammingLoss (multiLabels, probabilities)