public Map<String, INDArray> init(NeuralNetConfiguration conf, INDArray paramsView, boolean initializeParams) { Map<String, INDArray> params = super.init(conf, paramsView, initializeParams); FeedForwardLayer layerConf = (FeedForwardLayer) conf.getLayer(); int nIn = layerConf.getNIn(); int nOut = layerConf.getNOut(); int nWeightParams = nIn * nOut; int nUserWeightParams = numUsers * nOut; INDArray userWeightView = paramsView.get(NDArrayIndex.point(0), NDArrayIndex.interval(nWeightParams + nOut, nWeightParams + nOut + nUserWeightParams)); params.put(USER_WEIGHT_KEY, this.createUserWeightMatrix(conf, userWeightView, initializeParams)); conf.addVariable(USER_WEIGHT_KEY); return params; }
@Override public Map<String, INDArray> init(NeuralNetConfiguration conf, INDArray paramsView, boolean initializeParams) { Map<String, INDArray> params = Collections.synchronizedMap(new LinkedHashMap<String, INDArray>()); org.deeplearning4j.nn.conf.layers.CenterLossOutputLayer layerConf = (org.deeplearning4j.nn.conf.layers.CenterLossOutputLayer) conf.getLayer(); int nIn = layerConf.getNIn(); int nOut = layerConf.getNOut(); // also equal to numClasses int wEndOffset = nIn * nOut; int bEndOffset = wEndOffset + nOut; int cEndOffset = bEndOffset + nIn * nOut; INDArray weightView = paramsView.get(NDArrayIndex.point(0), NDArrayIndex.interval(0, wEndOffset)); INDArray biasView = paramsView.get(NDArrayIndex.point(0), NDArrayIndex.interval(wEndOffset, bEndOffset)); INDArray centerLossView = paramsView.get(NDArrayIndex.point(0), NDArrayIndex.interval(bEndOffset, cEndOffset)) .reshape('c', nOut, nIn); params.put(WEIGHT_KEY, createWeightMatrix(conf, weightView, initializeParams)); params.put(BIAS_KEY, createBias(conf, biasView, initializeParams)); params.put(CENTER_KEY, createCenterLossMatrix(conf, centerLossView, initializeParams)); conf.addVariable(WEIGHT_KEY); conf.addVariable(BIAS_KEY); conf.addVariable(CENTER_KEY); return params; }
@Override public Map<String, INDArray> init(NeuralNetConfiguration conf, INDArray paramsView, boolean initializeParams) { if (!(conf.getLayer() instanceof org.deeplearning4j.nn.conf.layers.FeedForwardLayer)) throw new IllegalArgumentException("unsupported layer type: " + conf.getLayer().getClass().getName()); Map<String, INDArray> params = Collections.synchronizedMap(new LinkedHashMap<String, INDArray>()); int length = numParams(conf); if (paramsView.length() != length) throw new IllegalStateException( "Expected params view of length " + length + ", got length " + paramsView.length()); org.deeplearning4j.nn.conf.layers.FeedForwardLayer layerConf = (org.deeplearning4j.nn.conf.layers.FeedForwardLayer) conf.getLayer(); int nIn = layerConf.getNIn(); int nOut = layerConf.getNOut(); int nWeightParams = nIn * nOut; INDArray weightView = paramsView.get(NDArrayIndex.point(0), NDArrayIndex.interval(0, nWeightParams)); INDArray biasView = paramsView.get(NDArrayIndex.point(0), NDArrayIndex.interval(nWeightParams, nWeightParams + nOut)); params.put(WEIGHT_KEY, createWeightMatrix(conf, weightView, initializeParams)); params.put(BIAS_KEY, createBias(conf, biasView, initializeParams)); conf.addVariable(WEIGHT_KEY); conf.addVariable(BIAS_KEY); return params; }
@Override public Map<String, INDArray> init(NeuralNetConfiguration conf, INDArray paramsView, boolean initializeParams) { if (((org.deeplearning4j.nn.conf.layers.ConvolutionLayer) conf.getLayer()).getKernelSize().length != 2) throw new IllegalArgumentException("Filter size must be == 2"); Map<String, INDArray> params = Collections.synchronizedMap(new LinkedHashMap<String, INDArray>()); org.deeplearning4j.nn.conf.layers.ConvolutionLayer layerConf = (org.deeplearning4j.nn.conf.layers.ConvolutionLayer) conf.getLayer(); int[] kernel = layerConf.getKernelSize(); int nIn = layerConf.getNIn(); int nOut = layerConf.getNOut(); INDArray biasView = paramsView.get(NDArrayIndex.point(0), NDArrayIndex.interval(0, nOut)); INDArray weightView = paramsView.get(NDArrayIndex.point(0), NDArrayIndex.interval(nOut, numParams(conf))); params.put(BIAS_KEY, createBias(conf, biasView, initializeParams)); params.put(WEIGHT_KEY, createWeightMatrix(conf, weightView, initializeParams)); conf.addVariable(WEIGHT_KEY); conf.addVariable(BIAS_KEY); return params; }
@Override public Map<String, INDArray> init(NeuralNetConfiguration conf, INDArray paramView, boolean initializeParams) { Map<String, INDArray> params = Collections.synchronizedMap(new LinkedHashMap<String, INDArray>()); // TODO setup for RNN BatchNormalization layer = (BatchNormalization) conf.getLayer(); int nOut = layer.getNOut(); int meanOffset = 0; if (!layer.isLockGammaBeta()) { //No gamma/beta parameters when gamma/beta are locked INDArray gammaView = paramView.get(NDArrayIndex.point(0), NDArrayIndex.interval(0, nOut)); INDArray betaView = paramView.get(NDArrayIndex.point(0), NDArrayIndex.interval(nOut, 2 * nOut)); params.put(GAMMA, createGamma(conf, gammaView, initializeParams)); conf.addVariable(GAMMA); params.put(BETA, createBeta(conf, betaView, initializeParams)); conf.addVariable(BETA); meanOffset = 2 * nOut; } INDArray globalMeanView = paramView.get(NDArrayIndex.point(0), NDArrayIndex.interval(meanOffset, meanOffset + nOut)); INDArray globalVarView = paramView.get(NDArrayIndex.point(0), NDArrayIndex.interval(meanOffset + nOut, meanOffset + 2 * nOut)); if (initializeParams) { globalMeanView.assign(0); globalVarView.assign(1); } params.put(GLOBAL_MEAN, globalMeanView); conf.addVariable(GLOBAL_MEAN); params.put(GLOBAL_VAR, globalVarView); conf.addVariable(GLOBAL_VAR); return params; }
@Override public Map<String, INDArray> init(NeuralNetConfiguration conf, INDArray paramsView, boolean initializeParams) { Map<String, INDArray> params = super.init(conf, paramsView, initializeParams); org.deeplearning4j.nn.conf.layers.BasePretrainNetwork layerConf = (org.deeplearning4j.nn.conf.layers.BasePretrainNetwork) conf.getLayer(); int nIn = layerConf.getNIn(); int nOut = layerConf.getNOut(); int nWeightParams = nIn * nOut; INDArray visibleBiasView = paramsView.get(NDArrayIndex.point(0), NDArrayIndex.interval(nWeightParams + nOut, nWeightParams + nOut + nIn)); params.put(VISIBLE_BIAS_KEY, createVisibleBias(conf, visibleBiasView, initializeParams)); conf.addVariable(VISIBLE_BIAS_KEY); return params; }
int nLast = layerConf.getNIn(); //i.e., n neurons in previous layer conf.addVariable(INPUT_WEIGHT_KEY); conf.addVariable(RECURRENT_WEIGHT_KEY); conf.addVariable(BIAS_KEY);
int nLast = layerConf.getNIn(); //i.e., n neurons in previous layer conf.addVariable(INPUT_WEIGHT_KEY); conf.addVariable(RECURRENT_WEIGHT_KEY); conf.addVariable(BIAS_KEY);
int nLast = layerConf.getNIn(); //i.e., n neurons in previous layer conf.addVariable(INPUT_WEIGHT_KEY_FORWARDS); conf.addVariable(RECURRENT_WEIGHT_KEY_FORWARDS); conf.addVariable(BIAS_KEY_FORWARDS); conf.addVariable(INPUT_WEIGHT_KEY_BACKWARDS); conf.addVariable(RECURRENT_WEIGHT_KEY_BACKWARDS); conf.addVariable(BIAS_KEY_BACKWARDS);
ret.put(sB, layerBiases); conf.addVariable(sW); conf.addVariable(sB); conf.addVariable(PZX_MEAN_W); conf.addVariable(PZX_MEAN_B); conf.addVariable(PZX_LOGSTD2_W); conf.addVariable(PZX_LOGSTD2_B); ret.put(sW, layerWeights); ret.put(sB, layerBiases); conf.addVariable(sW); conf.addVariable(sB); conf.addVariable(PXZ_W); conf.addVariable(PXZ_B);