训练模型后预测数据与实际数据不相似

Predicted data not similar with actual data after training model

我是机器学习的新手,现在正在做一个关于时间序列的项目forecasting.I很困惑为什么训练模型后的预测数据与实际数据不相似。

see the data here

我正在使用 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. 可以用更多的 epoch 进行更多的训练,以进一步减少损失。
  2. 如果损失没有进一步下降,可以添加几层参数,那么模型需要更多的复杂性才能更好地学习。这意味着您需要更多可训练参数(更多层、更大层等)