Machine learning Tensorflow.js/Keras LTSM是否具有多个序列?

Machine learning Tensorflow.js/Keras LTSM是否具有多个序列?,machine-learning,keras,lstm,rnn,tensorflow.js,Machine Learning,Keras,Lstm,Rnn,Tensorflow.js,我正在尝试使用构建在Keras上的Layers API,使用Tensorflow.js来训练lstm模型。我很难得到正确的预测。我试图为模型提供一系列NBA球员每个赛季的职业生涯成绩(例如:[20,30,40,55,60,55,33,23])。我想用下个赛季的生产分数作为y来为它提供一系列球员 var data = tf.tensor([ [[100], [86], [105], [122], [118], [96], [107], [118], [100], [85]], [[30],

我正在尝试使用构建在Keras上的Layers API,使用Tensorflow.js来训练lstm模型。我很难得到正确的预测。我试图为模型提供一系列NBA球员每个赛季的职业生涯成绩(例如:[20,30,40,55,60,55,33,23])。我想用下个赛季的生产分数作为y来为它提供一系列球员

var data = tf.tensor([
  [[100], [86], [105], [122], [118], [96], [107], [118], [100], [85]],
  [[30], [53], [74], [85], [96], [87], [98], [99], [110], [101]],
  [[30], [53], [74], [85], [96], [87], [98], [99], [110], [101]],
  [[30], [53], [74], [85], [96], [87], [98], [99], [110], [101]],
  [[30], [53], [74], [85], [96], [87], [98], [99], [110], [101]],
  [[30], [53], [74], [85], [96], [87], [98], [99], [110], [101]],
  [[30], [53], [74], [85], [96], [87], [98], [99], [110], [101]],
  [[30], [53], [74], [85], [96], [87], [98], [99], [110], [101]]
]);

var y = tf.tensor([[100], [90], [90], [90], [90], [90], [90], [90]]);

const model = tf.sequential();
model.add(
  tf.layers.lstm({
    units: 1,
    inputShape: [10, 1]
  })
);

model.compile({ loss: "meanSquaredError", optimizer: "adam" });

model.fit(data, y, { epochs: 1000 }).then(() => {
  // Use the model to do inference on a data point the model hasnt 
  // seen before:
  model
    .predict(
      tf.tensor([
        [[30], [53], [74], [85], [96], [87], [98], [99], [110], [101]]
      ])
    )
    .print();
});
它预测的是这样的情况:[[0],]

当我期待这样的事情时:[[90]]

迈克。 您应该规范化(转换)每个输入数据。 神经网络可以理解被标准化为其激活函数范围的数字。 例如,我将使用“sigmoid”:

函数normalize(num,min,max)//将值转换为值0到1之间的范围;
{
返回值(num-min)*(1/(max-min));
}
函数反规范化(num,min,max)//将值从0到1之间的范围重新转换为最小到最大的范围;
{
返回值(num/(1/(max-min))+min;
}
常数MIN=0;
常数MAX=150//如果需要,你可以用更大的。
风险值数据=[
[100, 86, 105, 122, 118, 96, 107, 118, 100, 85],
[30, 53, 74, 85, 96, 87, 98, 99, 110, 101],
[30, 53, 74, 85, 96, 87, 98, 99, 110, 101],
[30, 53, 74, 85, 96, 87, 98, 99, 110, 101],
[30, 53, 74, 85, 96, 87, 98, 99, 110, 101],
[30, 53, 74, 85, 96, 87, 98, 99, 110, 101],
[30, 53, 74, 85, 96, 87, 98, 99, 110, 101],
[30, 53, 74, 85, 96, 87, 98, 99, 110, 101]
];
变量y=[100,90,90,90,90,90,90,90,90];
var trainingData=[];
for(设x=0;x=平均光泽)
打破
}
如果(cb的类型==‘函数’)
cb();
}
异步功能激活(输入)
{
var output=await model.predict(input.dataSync();
返回输出;
}
console.log('5秒后开始训练…');
setTimeout(函数()
{
console.log(“培训已开始”);
控制台。时间(“培训”);
列车(500,0.00000001,异步功能()
{
控制台。时间结束(“培训”);
console.log(“培训完成”);
log('您的培训数据测试:');
对于(设i=0;i

Tensorflow.js/Keras LTSM是否具有多个序列?
打开控制台查看培训过程。

嗨,迈克,你能正常运行吗?我正在尝试做类似的事情。我用你的代码做了一些尝试,得到了不同的结果。已尝试使用模型拟合上的等待添加到异步函数。它有时起作用。我得到一个张量[[0.7587256],]的响应。这听起来很可笑。。。。但在培训期间,当我将焦点从浏览器切换到代码编辑器时,它似乎起到了作用。下面是对结果的捕获>