我使用了“ https://github.com/IsaacChanghau/StockPrediction”中的代码
,由于版本不同,我修改了一些方法调用。 以撒的代码结果显示
“ https://github.com/IsaacChanghau/StockPrediction/blob/master/predict.png”
但是我的预测结果仅显示如下常量
o.d.e.r.s.p.StockPricePrediction - Predict,Actual
o.d.e.r.s.p.StockPricePrediction - 476.98651664221575,720.0900268554688
o.d.e.r.s.p.StockPricePrediction - 452.283359897887,725.27001953125
o.d.e.r.s.p.StockPricePrediction - 452.283359897887,724.1199951171875
o.d.e.r.s.p.StockPricePrediction - 452.283359897887,732.6599731445312
.......
我试图更改learningRate和updater,但显示出类似的反响。
这是我的代码。
public class RecurrentNets {
private static final double learningRate = 0.05;
private static final int iterations = 1;
private static final int seed = 12345;
private static final int lstmLayer1Size = 256;
private static final int lstmLayer2Size = 256;
private static final int denseLayerSize = 32;
private static final double dropoutRatio = 0.2;
private static final int truncatedBPTTLength = 22;
public static MultiLayerNetwork buildLstmNetworks(int nIn, int nOut) {
MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
.seed(seed)
.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)
.weightInit(WeightInit.XAVIER)
.updater(new Adam(learningRate))
.l2(1e-4)
.list()
.layer(0, new GravesLSTM.Builder()
.nIn(nIn)
.nOut(lstmLayer1Size)
.activation(Activation.TANH)
.gateActivationFunction(Activation.HARDSIGMOID)
.dropOut(dropoutRatio)
.build())
.layer(1, new GravesLSTM.Builder()
.nIn(lstmLayer1Size)
.nOut(lstmLayer2Size)
.activation(Activation.TANH)
.gateActivationFunction(Activation.HARDSIGMOID)
.dropOut(dropoutRatio)
.build())
.layer(2, new DenseLayer.Builder()
.nIn(lstmLayer2Size)
.nOut(denseLayerSize)
.activation(Activation.RELU)
.build())
.layer(3, new RnnOutputLayer.Builder()
.nIn(denseLayerSize)
.nOut(nOut)
.activation(Activation.IDENTITY)
.lossFunction(LossFunctions.LossFunction.MSE)
.build())
.backpropType(BackpropType.TruncatedBPTT)
.tBPTTForwardLength(truncatedBPTTLength)
.tBPTTBackwardLength(truncatedBPTTLength)
.build();
MultiLayerNetwork net = new MultiLayerNetwork(conf);
net.init();
net.setListeners(new ScoreIterationListener(100));
return net;
}
}
我需要更改我的LSTM网络才能进行预测。请帮忙。