【发布时间】:2018-08-19 20:45:15
【问题描述】:
编辑: 这个答案很有帮助,但是,我真的很想要一些实际的张量流 javascript 代码来展示如何实现它。 How to train a RNN with LSTM cells for time series prediction
我发现的其他问题不包括标准化或我对未来 1 点之后的预测的具体目标,其中记住局部性,即如果在 T+1 预测 1,那么 T+2 更有可能是0.
总数据样本(实际有132个样本)
const Data = [
[0,45,0,0],
[1,40,0,0],
[0,10,3,0],
[0,0,0,0],
[2,30,0,1],
[2,20,3,1]
];
数组表示[X1,X2,X3,Y]
*注意 X2 需要归一化 --- 如果我们需要将 X2 预测为未来值以便在单个网络中执行所有这些操作时预测 Y,则不确定如何处理此问题
终极目标
使用此数据(包含更多样本)以尽可能最准确的方式预测接下来的 5 个 Y 值,同时权衡之前的模式,就像在时间序列预测中一样,过去的样本可能是之后的 25 个样本。
当前进度
通过在 25 个 [X1,X2,X3] 数组上训练预测了 25 个值,结果发现输入位置 1([X1,X2,X3] 数组 1)可能会影响除位置 2 之外的所有接下来的 25 个 Y 值( [X1,X2,X3] 数组 2) 只能影响集合的 2-25 以此类推 --- 位置 25 只能影响 25 个预测值的最后一个值 --- 所以我可能不会就网络而言,甚至可以真正预测接下来的 25 个。
当前方法
期望的预测将是训练后的下一个 3 Y 值(例如)
输入:
[
[0,45,0],
[1,40,0],
[0,10,3]
]
输出
[
[0],
[1],
[1]
]
目前尝试的模型
var model = tf.sequential();
model.add(tf.layers.batchNormalization({
inputShape:[null,6],
axis: 2,
units:10,
//returnSequences: true,
//kernelInitializer: 'VarianceScaling'
}));
model.add(tf.layers.lstm({
//inputShape:[null,7],
units: 10,
activation: 'relu',
returnSequences: true,
//kernelInitializer: 'VarianceScaling'
}));
model.add(tf.layers.lstm({
//inputShape:[null,7],
units: 6,
activation: 'relu',
returnSequences: true,
//kernelInitializer: 'VarianceScaling'
}));
//modelHelper(model);
const optimizer = tf.train.adam (.05);
//optimizer: 'sgd', loss: 'binaryCrossentropy', lr: 0.1
model.compile({
loss:tf.losses.meanSquaredError,
optimizer:optimizer
});
在每个时间位置(X1、X2、X3)使用多个值时,预测时间序列的下一个 4 或 5 或 25 个单个 (Y) 值的最佳方法是什么,而不仅仅是下一个值?
*浏览 5 年后创建了一个帐户,所以失去了这个。
【问题讨论】:
标签: javascript tensorflow neural-network lstm tensorflow.js