Deeplearning4j重复方法调用

时间:2018-05-14 21:08:21

标签: deeplearning4j

在许多(或大多数)Deeplearning4j示例中,我看到,在构建配置方法时,调用似乎被添加到方法调用中。 。

例如:

 MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
            .seed(rngSeed) //include a random seed for reproducibility
            // use stochastic gradient descent as an optimization algorithm
            .updater(new Nesterovs(0.006, 0.9))
            .l2(1e-4)
            .list()
            .layer(0, new DenseLayer.Builder() //create the first, input layer with xavier initialization
                    .nIn(numRows * numColumns)
                    .nOut(1000)
                    .activation(Activation.RELU)
                    .weightInit(WeightInit.XAVIER)
                    .build())
            .layer(1, new OutputLayer.Builder(LossFunction.NEGATIVELOGLIKELIHOOD) //create hidden layer
                    .nIn(1000)
                    .nOut(outputNum)
                    .activation(Activation.SOFTMAX)
                    .weightInit(WeightInit.XAVIER)
                    .build())
            .pretrain(false).backprop(true) //use backpropagation to adjust weights

.build();

偶尔我会看到在一个语句中创建conf变量的示例,然后在单独的语句中创建其他每个操作。 第一种方式是否有任何好处?当特定方法调用返回不同类型的对象时,它确实会混淆。此外,似乎第二种方法更适合与Jshell合作。

1 个答案:

答案 0 :(得分:0)

这取决于你。对于一些人来说,构建器语法(它是java人,记住在评论之前) - 是冗长的并且包装它使它更容易。 如果您可以使用特定于用例的假设,那么方法更有意义。