Как я могу преобразовать пакеты данных временных рядов для слоя LSTM в Tensorflow JS, используя tf.data.csv и model.fitDataset? - PullRequest
0 голосов
/ 07 февраля 2020

Я посмотрел несколько примеров моделей 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 (для временных шагов) с futureValY для каждой строки в пакете временных шагов.

По сути, я хочу, чтобы данные представляли следующую форму:

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 ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...