【问题标题】:Predicted data not similar with actual data after training model训练模型后的预测数据与实际数据不相似
【发布时间】:2021-10-16 07:47:17
【问题描述】:

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

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

【问题讨论】:

  • 我对@9​​87654323@一无所知,但深度学习中的想法是一样的。我的意思是,您的模型至少给出了一些结果,所以我认为它没有任何问题。因此,添加更多数据、更多层并使模型变得复杂是可行的。

标签: machine-learning deep-learning time-series forecasting tensorflow.js


【解决方案1】:

我没有发现任何问题。

您的模型运行良好。预测值永远不会与实际值相同,除非您过度拟合模型(然后它不会泛化)。无论如何,您的图表显示模型正在学习。

您可以采取以下措施来获得更好的结果 -

  1. 可以使用更多的 epoch 进行更多的训练,以进一步减少损失。
  2. 如果损失没有进一步下降,可以通过几层添加参数,那么模型需要更高的复杂性才能更好地学习。这意味着您需要更多可训练的参数(更多层、更大的层等)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 2018-04-15
    相关资源
    最近更新 更多