#machine-learning #deep-learning #time-series #forecasting #tensorflow.js
Вопрос:
Я новичок в машинном обучении и сейчас работаю над проектом по прогнозированию временных рядов.Я запутался, почему прогнозируемые данные после обучения модели не похожи на фактические данные.
Я использую tensorflow.js с помощью reactjs кто-нибудь может мне помочь,что не так с созданной моделью? Ниже приведен код этой модели..
Любой, кто мне поможет, будет признателен..
...
let x = tf.tensor2d(labels,[labels.length,1]);
let y = tf.tensor2d(inputs,[inputs.length,1]);
let inputSteps = inputs.length / 3;
let labelSteps = labels.length / 3;
let xs = x.reshape([3,inputSteps,1]);
let ys = y.reshape([3,labelSteps,1]);
const epochs = 30;
const window_size = 10;
const batchSize = 3;
const shuffle = true;
const input_layer_neurons = [inputSteps,1];
const rnn_input_shape = input_layer_neurons;
model.add(tf.layers.dense({ inputShape: input_layer_neurons,units:512 }));
let lstm_cells = [];
for(let i=0; i < hiddenLayers; i ){
lstm_cells.push(tf.layers.lstmCell({ units:20 }));
}
model.add(tf.layers.lstm({
cell: lstm_cells,
units: 50,
activation: 'relu',
inputShape: rnn_input_shape,
returnSequences: true
}))
model.add(tf.layers.dense({ units:1,returnSequences:true }));
model.compile({
optimizer: tf.train.adam(0.0005),
loss: tf.losses.meanSquaredError,
metrics:['mse'],
});
const lossError = [],quantityEpochs = [];
await model.fit(xs, ys, {shuffle,batchSize,epochs,callbacks: {
onEpochEnd: async (epoch,log) => {
console.log('loss : ' log.loss);
lossError.push(log.loss);
quantityEpochs.push(epoch);
}
}});
const outps = model.predict(ys);
...
Комментарии:
1. Я ничего об этом не знаю
tensorflow.js
, но идея в глубоком обучении та же самая. Я имею в виду, что ваша модель, по крайней мере, дает некоторые результаты, так что я не думаю, что с ней есть какие-либо проблемы. Таким образом, добавление большего количества данных, большего количества слоев и усложнение модели будут работать.
Ответ №1:
Я не вижу здесь ничего плохого.
Ваша модель работает просто отлично. Прогнозируемые значения никогда не будут совпадать с фактическими, если вы, черт возьми, не переосмыслите свою модель (и тогда она не будет обобщаться). В любом случае, ваш график показывает, что модель обучается.
Вот что вы можете сделать, чтобы получить лучшие результаты —
- Немного больше тренировок можно провести с большим количеством эпох, чтобы еще больше снизить потери.
- Если потеря не идет дальше, параметры могут быть добавлены несколькими слоями, тогда модель нуждается в большей сложности, чтобы лучше учиться. Это означает, что вам нужно больше обучаемых параметров (больше слоев, большие слои и т. Д.)