.layer(0, new DenseLayer.Builder().nIn(numInputs).nOut(numHiddenNodes) .weightInit(WEIGHT_INIT) .activation("relu").learningRateDecayPolicy(learningRatePolicy) .build()) .layer(1,new BatchNormalization.Builder().nOut( (numHiddenNodes)) .build()) .layer(2, new DenseLayer.Builder().nIn(numHiddenNodes).nOut((int) (numHiddenNodes * reduction)) .weightInit(WEIGHT_INIT) .activation("relu").learningRateDecayPolicy(learningRatePolicy) .build()) .layer(3,new BatchNormalization.Builder().nOut((int) (numHiddenNodes * reduction)) .build()) .layer(4, new DenseLayer.Builder().nIn((int) (numHiddenNodes * reduction)).nOut((int) (numHiddenNodes * Math.pow(reduction, 2))) .weightInit(WEIGHT_INIT).learningRateDecayPolicy(learningRatePolicy)
@ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) @Builder public class BatchNormalization extends FeedForwardLayer {
new ConvolutionLayer.Builder(new int[] {7, 7}, new int[] {2, 2}, new int[] {3, 3}).nIn(inputShape[0]).nOut(64) .cudnnAlgoMode(ConvolutionLayer.AlgoMode.NO_WORKSPACE) .build(), "input1") .addLayer("stem-batch1", new BatchNormalization.Builder(false).nIn(64).nOut(64).build(), "stem-cnn1") .addLayer("stem-activation1", new ActivationLayer.Builder().activation(Activation.RELU).build(), new ConvolutionLayer.Builder(new int[] {1, 1}).nIn(64).nOut(64) .cudnnAlgoMode(ConvolutionLayer.AlgoMode.NO_WORKSPACE).build(), "stem-lrn1") .addLayer("inception-2-batch1", new BatchNormalization.Builder(false).nIn(64).nOut(64).build(), "inception-2-cnn1") .addLayer("inception-2-activation1", "inception-2-batch1") .addLayer("inception-2-cnn2", new ConvolutionLayer.Builder(new int[] {3, 3}, new int[] {1, 1}, new int[] {1, 1}).nIn(64).nOut(192) .cudnnAlgoMode(ConvolutionLayer.AlgoMode.NO_WORKSPACE) "inception-2-activation1") .addLayer("inception-2-batch2", new BatchNormalization.Builder(false).nIn(192).nOut(192).build(), "inception-2-cnn2") .addLayer("inception-2-activation2",
new ConvolutionLayer.Builder(new int[] {3, 3}, new int[] {2, 2}) .nIn(inputShape[0]).nOut(32) .cudnnAlgoMode(ConvolutionLayer.AlgoMode.NO_WORKSPACE).build(), input) .addLayer("stem-batch1", new BatchNormalization.Builder(false).decay(0.995).eps(0.001).nIn(32).nOut(32) .build(), "stem-cnn1") .addLayer("stem-cnn2", new ConvolutionLayer.Builder(new int[] {3, 3}).nIn(32).nOut(32) .cudnnAlgoMode(ConvolutionLayer.AlgoMode.NO_WORKSPACE).build(), "stem-batch1") .addLayer("stem-batch2", new BatchNormalization.Builder(false).decay(0.995).eps(0.001).nIn(32).nOut(32) .build(), "stem-cnn2") .addLayer("stem-cnn3", new ConvolutionLayer.Builder(new int[] {3, 3}) .convolutionMode(ConvolutionMode.Same).nIn(32).nOut(64) .cudnnAlgoMode(ConvolutionLayer.AlgoMode.NO_WORKSPACE).build(), "stem-batch2") .addLayer("stem-batch3", new BatchNormalization.Builder(false).decay(0.995).eps(0.001).nIn(64) .nOut(64).build(), "stem-cnn3") new ConvolutionLayer.Builder(new int[] {1, 1}).nIn(64).nOut(80) .cudnnAlgoMode(ConvolutionLayer.AlgoMode.NO_WORKSPACE).build(), "stem-pool4") .addLayer("stem-batch5", new BatchNormalization.Builder(false).decay(0.995).eps(0.001).nIn(80).nOut(80)
previousBlock) .addLayer(nameLayer(blockName, "batch1", i), new BatchNormalization.Builder(false).decay(0.995).eps(0.001).nIn(32) .nOut(32).build(), nameLayer(blockName, "cnn1", i)) previousBlock) .addLayer(nameLayer(blockName, "batch2", i), new BatchNormalization.Builder(false).decay(0.995).eps(0.001).nIn(32) .nOut(32).build(), nameLayer(blockName, "cnn2", i)) .addLayer(nameLayer(blockName, "cnn3", i), nameLayer(blockName, "batch2", i)) .addLayer(nameLayer(blockName, "batch3", i), new BatchNormalization.Builder(false).decay(0.995).eps(0.001).nIn(32) .nOut(32).build(), nameLayer(blockName, "cnn3", i)) previousBlock) .addLayer(nameLayer(blockName, "batch4", i), new BatchNormalization.Builder(false).decay(0.995).eps(0.001).nIn(32) .nOut(32).build(), nameLayer(blockName, "cnn4", i)) .addLayer(nameLayer(blockName, "cnn5", i), nameLayer(blockName, "batch4", i)) .addLayer(nameLayer(blockName, "batch5", i), new BatchNormalization.Builder(false).decay(0.995).eps(0.001).nIn(32)
previousBlock) .addLayer(nameLayer(blockName, "batch1", i), new BatchNormalization.Builder(false).decay(0.995).eps(0.001).nIn(128) .nOut(128).build(), nameLayer(blockName, "cnn1", i)) previousBlock) .addLayer(nameLayer(blockName, "batch2", i), new BatchNormalization.Builder(false).decay(0.995).eps(0.001).nIn(128) .nOut(128).build(), nameLayer(blockName, "cnn2", i)) .addLayer(nameLayer(blockName, "cnn3", i), nameLayer(blockName, "batch2", i)) .addLayer(nameLayer(blockName, "batch3", i), new BatchNormalization.Builder(false).decay(0.995).eps(0.001).nIn(128) .nOut(128).build(), nameLayer(blockName, "cnn3", i)) .addLayer(nameLayer(blockName, "cnn4", i), nameLayer(blockName, "batch3", i)) .addLayer(nameLayer(blockName, "batch4", i), new BatchNormalization.Builder(false).decay(0.995).eps(0.001).nIn(128) .nOut(128).build(), nameLayer(blockName, "cnn4", i)) nameLayer(blockName, "merge1", i)) .addLayer(nameLayer(blockName, "batch5", i), new BatchNormalization.Builder(false).decay(0.995).eps(0.001).nIn(576)
previousBlock) .addLayer(nameLayer(blockName, "batch1", i), new BatchNormalization.Builder(false).decay(0.995).eps(0.001).nIn(192) .nOut(192).build(), nameLayer(blockName, "cnn1", i)) previousBlock) .addLayer(nameLayer(blockName, "batch2", i), new BatchNormalization.Builder(false).decay(0.995).eps(0.001).nIn(192) .nOut(192).build(), nameLayer(blockName, "cnn2", i)) .addLayer(nameLayer(blockName, "cnn3", i), nameLayer(blockName, "batch2", i)) .addLayer(nameLayer(blockName, "batch3", i), new BatchNormalization.Builder(false).decay(0.995).eps(0.001).nIn(192) .nOut(192).build(), nameLayer(blockName, "cnn3", i)) .addLayer(nameLayer(blockName, "cnn4", i), nameLayer(blockName, "batch3", i)) .addLayer(nameLayer(blockName, "batch4", i), new BatchNormalization.Builder(false).decay(0.995).eps(0.001) .activation(Activation.TANH).nIn(192).nOut(192).build(), nameLayer(blockName, "cnn4", i)) nameLayer(blockName, "merge1", i)) .addLayer(nameLayer(blockName, "batch5", i), new BatchNormalization.Builder(false).decay(0.995).eps(0.001)
.layer(0, new ConvolutionLayer.Builder(new int[] {7, 7}).name("image_array") .nIn(inputShape[0]).nOut(16).build()) .layer(1, new BatchNormalization.Builder().build()) .layer(2, new ConvolutionLayer.Builder(new int[] {7, 7}).nIn(16).nOut(16) .build()) .layer(3, new BatchNormalization.Builder().build()) .layer(4, new ActivationLayer.Builder().activation(Activation.RELU).build()) .layer(5, new SubsamplingLayer.Builder(SubsamplingLayer.PoolingType.AVG, .layer(7, new ConvolutionLayer.Builder(new int[] {5, 5}).nOut(32).build()) .layer(8, new BatchNormalization.Builder().build()) .layer(9, new ConvolutionLayer.Builder(new int[] {5, 5}).nOut(32).build()) .layer(10, new BatchNormalization.Builder().build()) .layer(11, new ActivationLayer.Builder().activation(Activation.RELU).build()) .layer(12, new SubsamplingLayer.Builder(SubsamplingLayer.PoolingType.AVG, .layer(14, new ConvolutionLayer.Builder(new int[] {3, 3}).nOut(64).build()) .layer(15, new BatchNormalization.Builder().build()) .layer(16, new ConvolutionLayer.Builder(new int[] {3, 3}).nOut(64).build()) .layer(17, new BatchNormalization.Builder().build()) .layer(18, new ActivationLayer.Builder().activation(Activation.RELU).build()) .layer(19, new SubsamplingLayer.Builder(SubsamplingLayer.PoolingType.AVG, .layer(21, new ConvolutionLayer.Builder(new int[] {3, 3}).nOut(128).build()) .layer(22, new BatchNormalization.Builder().build()) .layer(23, new ConvolutionLayer.Builder(new int[] {3, 3}).nOut(128).build()) .layer(24, new BatchNormalization.Builder().build()) .layer(25, new ActivationLayer.Builder().activation(Activation.RELU).build()) .layer(26, new SubsamplingLayer.Builder(SubsamplingLayer.PoolingType.AVG,
/** * 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 KerasBatchNormalization(Map<String, Object> layerConfig, boolean enforceTrainingConfig) throws InvalidKerasConfigurationException, UnsupportedKerasConfigurationException { super(layerConfig, enforceTrainingConfig); getGammaRegularizerFromConfig(layerConfig, enforceTrainingConfig); getBetaRegularizerFromConfig(layerConfig, enforceTrainingConfig); int batchNormMode = getBatchNormMode(layerConfig, enforceTrainingConfig); int batchNormAxis = getBatchNormAxis(layerConfig, enforceTrainingConfig); this.layer = new BatchNormalization.Builder().name(this.layerName).dropOut(this.dropout).minibatch(true) .lockGammaBeta(false).eps(getEpsFromConfig(layerConfig)) .momentum(getMomentumFromConfig(layerConfig)).build(); }
protected void setLayerOptionsBuilder(BatchNormalization.Builder builder, double[] values) { super.setLayerOptionsBuilder(builder, values); if (decay != null) builder.decay(decay.getValue(values)); if (eps != null) builder.eps(eps.getValue(values)); if (isMinibatch != null) builder.minibatch(isMinibatch.getValue(values)); if (lockGammaBeta != null) builder.lockGammaBeta(lockGammaBeta.getValue(values)); if (gamma != null) builder.gamma(gamma.getValue(values)); if (beta != null) builder.beta(beta.getValue(values)); }
public static BatchNormalization batchNorm(int in, int out) { return new BatchNormalization.Builder(false).nIn(in).nOut(out).build(); }
@Override public BatchNormalization getValue(double[] parameterValues) { BatchNormalization.Builder b = new BatchNormalization.Builder(); setLayerOptionsBuilder(b, parameterValues); return b.build(); }