Вопрос или проблема
После чтения некоторое время я запутался в своей структуре данных LSTM. Предположим, что у меня есть задача с учителем с 1000 образцами и 40 признаками на входе. Теперь я хочу создать 10 временных шагов x. Мое результирующее измерение структуры данных Keras будет
x: (1000, 10, 40)
с каждой двумерной матрицей (1000, 40), смещенной по строкам и созданной десять раз.
Теперь вопрос:
Какое измерение должно быть у моей цели y?
Мое измерение y=[1000,1]
для одной результирующей цели, но я также читал y=[1000,10,1]
. Я предполагаю, что второе измерение со значением 10 должно быть смещенным по строкам вектором цели. Но, действительно ли это необходимо? Разве мое решение не верное?
Ваша цель y может быть любой, какой вам нужно.
Если вы хотите сделать последовательность в последовательность, например, y будет иметь такое же количество временных шагов, как и входные данные (вы предсказываете что-то для каждого временного шага).
Но вы также можете определить выход с только одним временным шагом, например, для классификации текста. Ваши входные данные имеют 10 временных шагов, но выход представляет собой только предсказание на последнем временном шаге.
Это зависит от проблемы, которую вы пытаетесь решить.
Это зависит от задачи. Форма [1000,1] подразумевает, что вы пытаетесь предсказать одну метку для каждого члена последовательности партии, каждый член имеет до 10 токенов в последовательности. Это может произойти, скажем, если вы хотите классифицировать предложения из 10 слов каждое как положительные или отрицательные по настроению, или если у вас есть метка, которую нужно применить к каждому предложению.
Форма [1000,10,1] подразумевает, что вы пытаетесь предсказать одну метку для каждого из 10 токенов в каждом члене последовательности партии. Это обычно делается для тегирования частей речи, тегирования именованных сущностей, по сути, если у вас есть метка, которую нужно применить ко всем токенам в предложении.
Ответ или решение
При работе с LSTM-сетями в Keras важно правильно структурировать ваши данные, чтобы добиться наилучших результатов в задаче, которую вы решаете. Давайте подробнее рассмотрим, как должны выглядеть входные и выходные данные (X и Y) в зависимости от вашей задачи.
Структура данных для LSTM
Предположим, вы имеете 1000 образцов с 40 признаками (фичами), которые будут использованы для построения модели на основе LSTM. Вы хотите создать последовательности с 10 временными шагами для каждой выборки. В этом случае, структура вашего входного массива X будет следующей:
X: (1000, 10, 40)
Здесь:
1000
— это количество образцов (или последовательностей).10
— количество временных шагов, на которые разбивается каждая последовательность.40
— количество признаков, вводимых на каждом временном шаге.
Теперь, что касается целевой переменной Y, её структура будет зависеть от задачи, которую вы решаете.
Формат целевой переменной (Y)
-
Y: (1000, 1)
Если ваша задача заключается в предсказании одного значения для всей последовательности (например, классификация текста или предсказание временных рядов, где на основании 10 временных шагов вы хотите предсказать одно значение), тогда структура целевой переменной будет следующей:Y: (1000, 1)
Это означает, что для каждой 10-этапной последовательности у вас есть одно выходное значение. Примером может быть определение позитивного или негативного настроения предложения.
-
Y: (1000, 10, 1)
Если ваша задача требует предсказания одного значения за каждый временной шаг (например, если вы проводите разметку частей речи или именованных сущностей для каждого токена в предложении), то структура будет следующей:Y: (1000, 10, 1)
В этом примере у вас есть одно выходное значение для каждого из 10 временных шагов, что подразумевает, что вы хотите предсказать по одному значению для каждого момента времени.
Заключение
Как видно, выбор между Y с размерностью (1000, 1) и (1000, 10, 1) зависит от поставленной задачи. Если вы хотите предсказать одну метку на всю последовательность, первый вариант подходит лучше. Если же требуется разметка для каждого шага времени, вам потребуется второй формат.
В итоге, убедитесь, что вы выбираете нужный формат Y в зависимости от специфики своей задачи. Это поможет вашей модели LSTM более эффективно обучаться и делать предсказания.