Часть III • Продвинутые возможности глубокого обучения с TensorFlow.js
Разберем рис. 8.1. Для генерации тензора признаков примера данных произ
водится выборка из CSVфайла через каждые
step
строк (для примера возьмем
step
= 6), всего
timeSteps
строк (для примера
timeSteps
= 240). В результате получа
ется тензор формы
[timeSteps,
numFeatures]
, где
numFeatures
(по умолчанию — 14)
представляет собой количество столбцов признаков в CSVфайле. Для генерации
целевого тензора производим выборку значения температуры (
T
), начиная с шага,
соответствующего строке
delay
(для примера — 144), после последней строки, по
павшей в тензор признаков. Прочие примеры данных можно сгенерировать, начав
с другой строки CSVфайла, но они формируются по тому же правилу. В результате
получаем следующую задачу предсказания температуры: по заданным 14 метеоро
логическим измерениям за указанный период времени (например, десять дней),
предшествующий текущему моменту, предсказать температуру на момент, отстоя
щий от текущего на
delay
(например, 24 часа). Показанные на этой схеме действия
производит код функции
getNextBatchFunction()
из файла
jena-weather/data.js
.
Для генерации признаков обучающего примера мы выбираем набор строк за про
межуток времени десять дней. Вместо того чтобы использовать все строки данных
за эти десять дней, мы выбираем только каждую шестую строку. Почему? По двум
причинам. Вопервых, при выборке всех строк получилось бы в шесть раз больше
данных, что означает модель большего размера и более длительное обучение. Во
вторых, избыточность данных при часовой шкале времени довольно велика (ат
мосферное давление шесть часов назад обычно мало отличалось от давления шесть
часов и десять минут назад). Благодаря отбрасыванию пяти шестых частей данных
мы получаем более эффективную модель меньшего размера, практически не теряя
ее способности к предсказанию. Выбранные строки объединяются в двумерный тен
зор признаков формы
[timeSteps,
numFeatures]
для нашего обучающего примера.
По умолчанию значение
timeSteps
равно 240, что соответствует 240 моментам вы
борки, равномерно распределенным по промежутку времени десять дней. Значение
numFeatures
равно 14, что соответствует показаниям 14 метеорологических приборов
в CSV наборе данных.
Получить целевой тензор для обучающего примера проще: необходимо лишь
перейти вперед на определенный промежуток времени (
delay
) от последней строки,
включаемой в тензор признаков, и взять значение из столбца температуры. На рис. 8.1
показана генерация только одного обучающего примера. Для генерации нескольких
примеров данных необходимо просто начинать с различных строк CSVфайла.
Вы могли заметить нечто необычное в тензоре признаков для нашей задачи пред
сказания температуры (см. рис. 8.1): во всех предыдущих задачах тензор признаков
отдельного примера данных был одномерным, в результате чего при организации
нескольких примеров данных в батч получался двумерный тензор. Однако в дан
ной задаче тензор признаков отдельного примера уже двумерный, а значит, при
объединении нескольких примеров в батч получится трехмерный тензор (формы
[batchSize,
timeSteps,
numFeatures]
). Тонкое наблюдение! Возникает такая дву
мерная форма тензора признаков изза того, что источник признаков —
последова-
тельность
событий. В частности, метеорологические измерения за 240 моментов
времени. Этим данная задача отличается от всех прочих встречавшихся вам до
сих пор в книге задач, в которых входные признаки для конкретного примера не
Do'stlaringiz bilan baham: |