1

我尝试使用 LSTM 层来预测股票价格。

这是代码:

var options = {
     task: "regression",
     debug: true,
     inputs: ["date", "timevalue"],
     outputs: ["price", "timevalue"],
     layers: [
          {
               type: 'lstm',
               units: 1,
               inputShape: [10048, 2],
               activation: 'tanh',
               useBias: true,
               return_sequences: true,
          },
          {
               type: 'dense',
               units: 1,
               inputShape: [1],
               activation: 'tanh',
               useBias: true,
          },
     ],
};
     

var nn = ml5.neuralNetwork(options);
setData();

async function getData(){
     var data = await fetch("apple_stock.json");
     data = await data.json();
     var cleaned = await data.map( (entry, i) => { 
          var date = entry.Date.split("-");
          date = new Date(date[0],date[1],date[2]).getTime();
          var result = {
               "date": date,
               "price": entry.High,
               "tval": i,
          };
          return result;
     }).filter( result => (result.date != "" || result.date != undefined) && (result.price != "" || result.price != undefined) );
     return cleaned;
}

async function setData() {
     var obj = await getData();
     var tval = 1;
     obj.forEach(item => {
          var input = { "date": parseInt(item.date), "timevalue": ++item.tval };
          var output = { "price": parseInt(item.price), "timevalue": item.tval };
          nn.addData(input, output);
     });
     console.log(obj);
     nn.normalizeData();
     
     train();
}

function train() {
     var trainingOptions = {
          epochs: 256,
          batchSize: 1024,
     };
     
     nn.train(trainingOptions, predict);
     console.log(nn.data);
}

function predict(){
     /* nn.predict([ parseInt(new Date(2020,10,17).getTime()) ]).then((result) => {
          console.log(result);
     }); */
     
     //nn.save();
     console.log("end");
}

我希望它开始模型训练,但它什么也没做。我在控制台上没有得到任何错误输出,来自 json 的数据也被正确加载。有人可以帮忙吗?

我试图玩弄不同的值,inputShape但没有帮助。我确定所有代码都从头到尾运行。

4

0 回答 0