@Override public INDArray activate(boolean training) { INDArray z = preOutput(training); //INDArray ret = Nd4j.getExecutioner().execAndReturn(Nd4j.getOpFactory().createTransform( // conf.getLayer().getActivationFunction(), z, conf.getExtraArgs() )); INDArray ret = layerConf().getActivationFn().getActivation(z, training); if (maskArray != null) { applyMask(ret); } return ret; }
afn = ((BaseLayer) layer.conf().getLayer()).getActivationFn().toString(); } else { afn = "n/a";
afn = ((BaseLayer) layer.conf().getLayer()).getActivationFn().toString(); } else { afn = "n/a";
@Override public Pair<Gradient, INDArray> backpropGradient(INDArray epsilon) { //If this layer is layer L, then epsilon is (w^(L+1)*(d^(L+1))^T) (or equivalent) INDArray z = preOutput(true); //Note: using preOutput(INDArray) can't be used as this does a setInput(input) and resets the 'appliedDropout' flag //INDArray activationDerivative = Nd4j.getExecutioner().execAndReturn(Nd4j.getOpFactory().createTransform(conf().getLayer().getActivationFunction(), z).derivative()); // INDArray activationDerivative = conf().getLayer().getActivationFn().getGradient(z); // INDArray delta = epsilon.muli(activationDerivative); INDArray delta = layerConf().getActivationFn().backprop(z, epsilon).getFirst(); //TODO handle activation function params if (maskArray != null) { applyMask(delta); } Gradient ret = new DefaultGradient(); INDArray weightGrad = gradientViews.get(DefaultParamInitializer.WEIGHT_KEY); //f order Nd4j.gemm(input, delta, weightGrad, true, false, 1.0, 0.0); INDArray biasGrad = gradientViews.get(DefaultParamInitializer.BIAS_KEY); delta.sum(biasGrad, 0); //biasGrad is initialized/zeroed first ret.gradientForVariable().put(DefaultParamInitializer.WEIGHT_KEY, weightGrad); ret.gradientForVariable().put(DefaultParamInitializer.BIAS_KEY, biasGrad); INDArray epsilonNext = params.get(DefaultParamInitializer.WEIGHT_KEY).mmul(delta.transpose()).transpose(); return new Pair<>(ret, epsilonNext); }
private static void configureSoftmaxClippingIfPresent(IOutputLayer outputLayer){ ILossFunction lfn = null; IActivation afn = null; if(outputLayer instanceof BaseOutputLayer){ BaseOutputLayer o = (BaseOutputLayer)outputLayer; lfn = ((org.deeplearning4j.nn.conf.layers.BaseOutputLayer)o.layerConf()).getLossFn(); afn = o.layerConf().getActivationFn(); } else if(outputLayer instanceof LossLayer){ LossLayer o = (LossLayer) outputLayer; lfn = o.layerConf().getLossFn(); afn = o.layerConf().getActivationFn(); } if (lfn instanceof LossMCXENT && afn instanceof ActivationSoftmax && ((LossMCXENT) lfn).getSoftmaxClipEps() != 0) { log.info("Setting softmax clipping epsilon to 0.0 for " + lfn.getClass() + " loss function to avoid spurious gradient check failures"); ((LossMCXENT) lfn).setSoftmaxClipEps(0.0); } }
activationFn = bl.getActivationFn().toString(); int nParams = layer.initializer().numParams(nnc); layerInfoRows.add(new String[] {i18N.getMessage("train.model.layerinfotable.layerNParams"),
activationFn = bl.getActivationFn().toString(); int nParams = layer.initializer().numParams(nnc); layerInfoRows.add(new String[] {i18N.getMessage("train.model.layerinfotable.layerNParams"),
activationFn = bl.getActivationFn().toString(); int nParams = layer.initializer().numParams(nnc); layerInfoRows.add(new String[] {i18N.getMessage("train.model.layerinfotable.layerNParams"),
IActivation activation = bl.getActivationFn(); if (activation != null) { if (!VALID_ACTIVATION_FUNCTIONS.contains(activation.getClass())) {
IActivation activation = bl.getActivationFn(); if (activation != null) { if (!VALID_ACTIVATION_FUNCTIONS.contains(activation.getClass())) {
if (Double.isNaN(bLayer.getL2())) bLayer.setL2(l2); if (bLayer.getActivationFn() == null) bLayer.setActivationFn(activationFn); if (bLayer.getWeightInit() == null)
Layer layer = lv.getLayerConf().getLayer(); if (layer instanceof BaseLayer && ((BaseLayer) layer).getActivationFn() == null) { String layerName = layer.getLayerName();
if ((l instanceof BaseLayer) && ((BaseLayer) l).getActivationFn() == null) { try { JsonNode jsonNode = mapper.readTree(json);
IActivation afn = ((org.deeplearning4j.nn.conf.layers.BaseLayer) conf.getLayer()).getActivationFn();
IActivation afn = layer.layerConf().getActivationFn(); INDArray outputActivations = null; .notifyScopeLeft(); layer.layerConf().getActivationFn().getActivation(inputActivations, training); if (forBackprop) toReturn.ia[time] = inputActivations;