Java Rnn神经网络预测预期收益

Java Rnn神经网络预测预期收益,java,deep-learning,rnn,deeplearning4j,Java,Deep Learning,Rnn,Deeplearning4j,我正在尝试配置一个RNN神经网络,以便预测5种不同类型的文本实体。我正在使用下一个配置: MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder() .seed(seed) .iterations(100) .updater(Updater.ADAM) //To configure: .updater(Adam.builder().beta

我正在尝试配置一个RNN神经网络,以便预测5种不同类型的文本实体。我正在使用下一个配置:

    MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
            .seed(seed)
            .iterations(100)
            .updater(Updater.ADAM)  //To configure: .updater(Adam.builder().beta1(0.9).beta2(0.999).build())
            .regularization(true).l2(1e-5)
            .weightInit(WeightInit.XAVIER)
            .gradientNormalization(GradientNormalization.ClipElementWiseAbsoluteValue).gradientNormalizationThreshold(1.0)
            .learningRate(2e-2)
            .trainingWorkspaceMode(WorkspaceMode.SEPARATE).inferenceWorkspaceMode(WorkspaceMode.SEPARATE)   //https://deeplearning4j.org/workspaces
            .list()
            .layer(0, new GravesLSTM.Builder().nIn(500).nOut(3)
                    .activation(Activation.TANH).build())
            .layer(1, new RnnOutputLayer.Builder(LossFunctions.LossFunction.MCXENT).activation(Activation.SOFTMAX)        //MCXENT + softmax for classification
                    .nIn(3).nOut(5).build())
            .pretrain(false).backprop(true).build();
  MultiLayerNetwork net = new MultiLayerNetwork(conf);
  net.init();
我训练它,然后评估它。它起作用了。然而,当我使用:

 int[] prediction = net.predict(features);
有时它会重复和意外的预测。它返回正确的预测值为1,2…5,但有时返回数字为9,14,12。。。该数字与公认的预测/标签不对应


为什么此配置返回意外输出?

不要使用net.predict。将net.output与Nd4j.argMax(outputfneuralnet,-1)一起使用;Net.predict不应使用(它主要与2d一起使用)

这里有一个例子,你能和大家分享一下初始化功能的代码吗?我使用官方的Word2Vector例子。唯一的变化是可能输出的数量。我使用这个示例:更改输入并添加一些输出。请添加一个解决方案示例。这两个函数不类似。Net.predict输出是一个INDArray,Net.predict输出是一个带有预测类的int数组。你能举例说明如何使用它吗?Nd4j.argMax会为你输出索引。可以像使用任何int数组一样使用INDArray。dl4j示例已经在一些地方介绍了这一点。例如:-将1改为-1-1表示“在最后一个维度上运行,无论它是什么”。这遵循numpy惯例。为了纠正你:是的,这两个函数是相似的。我的答案只是一个更一般的版本