DL4J中文文件/模型/多層網路
阿新 • • 發佈:2018-11-19
為什麼用多層網路?
MultiLayerNetwork類是Eclipse DL4J中可用的最簡單的網路配置API。該類對於不需要複雜和分支的網路圖的初學者或使用者很有用。
如果你正在建立複雜的損失函式、使用圖頂點或執行類似如三重網路的高階訓練,則不希望使用MultiLayerNetwork配置。這包括流行的複雜網路,如InceptionV4。
用法
下面的例子展示瞭如何使用DenseLayer(
一個基本的多感知器層)來構建一個簡單的線性分類器。
MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder() .seed(seed) .iterations(1) .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT) .learningRate(learningRate) .updater(Updater.NESTEROVS).momentum(0.9) .list() .layer(0, new DenseLayer.Builder().nIn(numInputs).nOut(numHiddenNodes) .weightInit(WeightInit.XAVIER) .activation("relu") .build()) .layer(1, new OutputLayer.Builder(LossFunction.NEGATIVELOGLIKELIHOOD) .weightInit(WeightInit.XAVIER) .activation("softmax").weightInit(WeightInit.XAVIER) .nIn(numHiddenNodes).nOut(numOutputs).build()) .pretrain(false).backprop(true).build();
還可以建立卷積配置:
MultiLayerConfiguration.Builder builder = new NeuralNetConfiguration.Builder() .seed(seed) .iterations(iterations) .regularization(true).l2(0.0005) .learningRate(0.01)//.biasLearningRate(0.02) //.learningRateDecayPolicy(LearningRatePolicy.Inverse).lrPolicyDecayRate(0.001).lrPolicyPower(0.75) .weightInit(WeightInit.XAVIER) .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT) .updater(Updater.NESTEROVS).momentum(0.9) .list() .layer(0, new ConvolutionLayer.Builder(5, 5) //nIn 與 nOut 指定深度。這裡是nChannels和nOut是要應用的過濾器的數量。 .nIn(nChannels) .stride(1, 1) .nOut(20) .activation("identity") .build()) .layer(1, new SubsamplingLayer.Builder(SubsamplingLayer.PoolingType.MAX) .kernelSize(2,2) .stride(2,2) .build()) .layer(2, new ConvolutionLayer.Builder(5, 5) //注意,在稍後的層中不需要指定nIn。 .stride(1, 1) .nOut(50) .activation("identity") .build()) .layer(3, new SubsamplingLayer.Builder(SubsamplingLayer.PoolingType.MAX) .kernelSize(2,2) .stride(2,2) .build()) .layer(4, new DenseLayer.Builder().activation("relu") .nOut(500).build()) .layer(5, new OutputLayer.Builder(LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD) .nOut(outputNum) .activation("softmax") .build()) .backprop(true).pretrain(false);