Как я могу преобразовать пакеты данных временных рядов для уровня LSTM в Tensorflow JS с помощью tf.data.csv и model.fitDataset?
Я просмотрел несколько примеров моделей LSTM, но не могу понять, как использовать их вместе с данными csv. В частности, я не могу получить правильную форму вывода данных с помощью tf.data.csv.
Я специально хочу многомерную модель LSTM временного ряда со следующими параметрами:
1) Временной шаг = 50
2) Входные характеристики (xs) = 4
3) Выходные характеристики (ys) = 1
Вот модель, которую я использую:
// [timesteps,features]
const lstmInputShape = [50,4];
// Define a machine learning model for linear regression
this.model = tf.sequential();
// Create two hidden lstm layers
this.model.add(tf.layers.lstm({units:12, returnSequences:true, inputShape: lstmInputShape}));
this.model.add(tf.layers.lstm({units:12, stateful:false}));
// Final dense layer has only 1 output but takes the input shape of the previous layer output
this.model.add(tf.layers.dense({units: 1}));
// Compile the model using added layers
this.model.compile({
optimizer: tf.train.adam(learningRate),
loss: lossFunction
});
Итак, теперь я хочу обучить эту модель с данными CSV из файла. Я использую следующее:
const trainingData = tf.data.csv("file://" + filePath, {columnConfigs: {futureValYs: {isLabel: true}}});
Я использовал это с функцией карты для преобразования данных, однако карта проходит только по загруженным данным csv построчно, но мне нужно выполнить сквозную проверку. Это означает, что мне нужно связать строки по 50 (для временных шагов) с futureValYs для каждой строки в пакете временных шагов.
По сути, я хочу, чтобы данные представляли следующую форму:
dataXs = [[1,2,3,4],[2,3,4,5],[3,4,5,6]...47 more examples]; // 1 complete time-series sequence of 50
dataYs = [[5],[6],[7],[8]...47 more examples]; // 1 complete time-series sequence of 50
Затем загрузите это в model.fitDataset();