new int[] {7, 7}) // TODO: fix input and put stride back to 2,2 .name("maxpool3").build()) .layer(8, new DenseLayer.Builder().name("ffn1").nIn(256).nOut(4096) .dist(new GaussianDistribution(0, 0.005)).biasInit(nonZeroBias).dropOut(dropOut) .build()) .layer(9, new DenseLayer.Builder().name("ffn2").nOut(4096) .dist(new GaussianDistribution(0, 0.005)).biasInit(nonZeroBias).dropOut(dropOut) .build())
public void buildModel() { //Create the network int numInput = 2; int numOutputs = 1; int nHidden = 10; mNetwork = new MultiLayerNetwork(new NeuralNetConfiguration.Builder() .seed(mSeed) .iterations(ITERATIONS) .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT) .learningRate(LEARNING_RATE) .weightInit(WeightInit.XAVIER) .updater(Updater.NESTEROVS) .list() .layer(0, new DenseLayer.Builder().nIn(numInput).nOut(nHidden) .activation(Activation.TANH) .name("input") .build()) .layer(1, new OutputLayer.Builder(LossFunctions.LossFunction.MSE) .activation(Activation.IDENTITY) .name("output") .nIn(nHidden).nOut(numOutputs).build()) .pretrain(false) .backprop(true) .build() ); mNetwork.init(); mNetwork.setListeners(mIterationListener); }
public MultiLayerConfiguration conf() { MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder().trainingWorkspaceMode(workspaceMode) .inferenceWorkspaceMode(workspaceMode).seed(seed).iterations(iterations) .activation(Activation.IDENTITY).weightInit(WeightInit.XAVIER) .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT).updater(new AdaDelta()) .regularization(false).convolutionMode(ConvolutionMode.Same).list() // block 1 .layer(0, new ConvolutionLayer.Builder(new int[] {5, 5}, new int[] {1, 1}).name("cnn1") .nIn(inputShape[0]).nOut(20).activation(Activation.RELU).build()) .layer(1, new SubsamplingLayer.Builder(SubsamplingLayer.PoolingType.MAX, new int[] {2, 2}, new int[] {2, 2}).name("maxpool1").build()) // block 2 .layer(2, new ConvolutionLayer.Builder(new int[] {5, 5}, new int[] {1, 1}).name("cnn2").nOut(50) .activation(Activation.RELU).build()) .layer(3, new SubsamplingLayer.Builder(SubsamplingLayer.PoolingType.MAX, new int[] {2, 2}, new int[] {2, 2}).name("maxpool2").build()) // fully connected .layer(4, new DenseLayer.Builder().name("ffn1").activation(Activation.RELU).nOut(500).build()) // output .layer(5, new OutputLayer.Builder(LossFunctions.LossFunction.MCXENT).name("output") .nOut(numLabels).activation(Activation.SOFTMAX) // radial basis function required .build()) .setInputType(InputType.convolutionalFlat(inputShape[2], inputShape[1], inputShape[0])) .backprop(true).pretrain(false).build(); return conf; }
/** * Constructor from parsed Keras layer configuration dictionary. * * @param layerConfig dictionary containing Keras layer configuration * @param enforceTrainingConfig whether to enforce training-related configuration options * @throws InvalidKerasConfigurationException * @throws UnsupportedKerasConfigurationException */ public KerasDense(Map<String, Object> layerConfig, boolean enforceTrainingConfig) throws InvalidKerasConfigurationException, UnsupportedKerasConfigurationException { super(layerConfig, enforceTrainingConfig); this.layer = new DenseLayer.Builder().name(this.layerName).nOut(getNOutFromConfig(layerConfig)) .dropOut(this.dropout).activation(getActivationFromConfig(layerConfig)) .weightInit(getWeightInitFromConfig(layerConfig, enforceTrainingConfig)).biasInit(0.0) .l1(this.weightL1Regularization).l2(this.weightL2Regularization).build(); }
private static DenseLayer fullyConnected(String name, int out, double bias, double dropOut, Distribution dist) { return new DenseLayer.Builder().name(name).nOut(out).biasInit(bias).dropOut(dropOut).dist(dist).build(); }