Часть III • Продвинутые возможности глубокого обучения с TensorFlow.js
измерение, равное числу измерений вложений. Далее вычисляется
внутреннее
произведение
(умножение и сложение) входного среза и ядра слоя conv1d, дающее
в результате один срез выходной последовательности. Эта операция повторяется
для всех возможных позиций скольжения до тех пор, пока не будет сгенерирован
полный выходной сигнал. Как и входной тензор слоя conv1d, полный выходной
сигнал представляет собой последовательность, хотя и другой длины (определя
емой длиной входной последовательности,
kernelSize
и другими настройками
слоя conv1d) и с другим числом измерений признаков (определяемых параметром
filters
конфигурации слоя conv1d). Благодаря этому можно сформировать из
нескольких идущих подряд слоев conv1d глубокую одномерную сверточную сеть
аналогично тому, как в двумерных сверточных сетях часто размещается подряд
несколько слоев conv2d.
Усечение последовательностей
и дополнение их символами
Теперь, когда мы уже умеем применять слои conv1d для машинного обучения на ос
нове текстов, готовы ли мы обучить одномерную сверточную сеть на данных IMDb?
Не совсем. Осталось рассказать про усечение и дополнение последовательностей.
Зачем нужны операции усечения и дополнения? Для моделей TensorFlow.js требу
ются входные данные
fit()
в виде тензоров, а тензор должен иметь четкую форму.
Следовательно, хотя длины обзоров фильмов не фиксированы (напомним, что они
могут варьироваться от 10 до 2400 слов), мы должны выбрать конкретное значение
длины в качестве второго измерения входного тензора признаков (
maxLen
), чтобы
получить полную форму входного тензора вида
[numExamples,
maxLen]
. При ис
пользовании федеративного кодирования в предыдущем разделе такой проблемы
не было, поскольку длина последовательности не влияет на второе измерение тен
зоров федеративного представления.
Выбор значения
maxLen
определяется следующими соображениями.
z
z
Она должна быть достаточно велика для захвата полезной части большинства
обзоров. Например, значение
maxLen
=
20
, вероятно, окажется слишком маленьким
и наиболее ценные части большинства обзоров будут отброшены.
z
z
Она не должна быть намного больше длины большинства обзоров, чтобы не рас
ходовать память и вычислительные ресурсы впустую.
В качестве компромисса мы выбрали для этого примера значение 500 (максимум)
слов на обзор. Оно задается с помощью флага
--maxLen
команды обучения одно
мерной сверточной сети:
yarn train --maxLen 500 cnn
После выбора
maxLen
необходимо привести к ней все примеры обзоров: более
длинные обрезать, а более короткие дополнить. Именно для этого служит функция
padSequences()
из листинга 9.7. Существует два способа усечения слишком длинной
Do'stlaringiz bilan baham: |