Во многих (или большинстве) примеров 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.