从0.9.1升级到alpha-1.0.0后,deeplearning4j结果有所不同

时间:2019-04-06 10:59:33

标签: deep-learning deeplearning4j dl4j

我需要将dl4j环境至少升级到alpha-1.0.0,以获得对CUDA 9(RTX 2080所需)的支持。

将依赖关系切换为alpha-1.0.0后,我的网络不再真正学习了。

我已按照dl4j发行说明上的升级指南升级了代码。

使用任何更高版本时,行为都不会更改。 当回到0.9.1时,新代码仍会产生预期的结果

我不使用预训练,所以fit()的行为变化在这里不应该成为问题吗!!

使用0.9.1进行培训: imgur.com/51645Lr.png

使用1.0.0-alpha进行培训: imgur.com/Nkirn7i.png

//Network setup
        MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
                .trainingWorkspaceMode(WorkspaceMode.SEPARATE)
                .inferenceWorkspaceMode(WorkspaceMode.SEPARATE)
                .seed(seed)
                .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)
                .weightInit(WeightInit.XAVIER)
                .updater(new RmsProp.Builder().rmsDecay(0.95).learningRate(learningRate).build())
                .l2(1e-4)
                .list()
                .layer(0, new LSTM.Builder()
                        .name("LSTM 1")
                        .nIn(nIn)
                        .nOut(lstmLayer1Size)
                        .activation(Activation.TANH)
                        .gateActivationFunction(Activation.HARDSIGMOID)
                        .dropOut(dropoutRatio)
                        .build())
                .layer(1, new LSTM.Builder()
                        .name("LSTM 2")
                        .nIn(lstmLayer1Size)
                        .nOut(lstmLayer2Size)
                        .activation(Activation.TANH)
                        .gateActivationFunction(Activation.HARDSIGMOID)
                        .dropOut(dropoutRatio)
                        .build())
                .layer(2, new DenseLayer.Builder()
                        .name("Dense")
                        .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);




//training loop

        log.info("Training...");
        for (int i = 0; i < epochs; i++) {
            while (iterator.hasNext()){ net.fit(iterator.next()); 
            }
            iterator.reset(); // reset iterator
            net.rnnClearPreviousState(); // clear previous state
        }


0 个答案:

没有答案