public List<String> variables(boolean copy) { if (copy) return variables(); return variables; }
/** * Setup the initial search state * @param pair */ @Override public void setupSearchState(Pair<Gradient, Double> pair) { INDArray gradient = pair.getFirst().gradient(conf.variables()); INDArray params = model.params().dup(); //Need dup here: params returns an array that isn't a copy (hence changes to this are problematic for line search methods) searchState.put(GRADIENT_KEY, gradient); searchState.put(SCORE_KEY, pair.getSecond()); searchState.put(PARAMS_KEY, params); }
@Override public org.deeplearning4j.nn.api.Layer instantiate(NeuralNetConfiguration conf, Collection<IterationListener> iterationListeners, int layerIndex, INDArray layerParamsView, boolean initializeParams) { //Need to be able to instantiate a layer, from a config - for JSON -> net type situations org.deeplearning4j.nn.api.Layer underlying = layer.instantiate(getInnerConf(conf), iterationListeners, layerIndex, layerParamsView, initializeParams); NeuralNetConfiguration nncUnderlying = underlying.conf(); if (nncUnderlying.variables() != null) { List<String> vars = nncUnderlying.variables(true); nncUnderlying.clearVariables(); conf.clearVariables(); for (String s : vars) { conf.variables(false).add(s); conf.getL1ByParam().put(s, 0.0); conf.getL2ByParam().put(s, 0.0); conf.getLearningRateByParam().put(s, 0.0); nncUnderlying.variables(false).add(s); nncUnderlying.getL1ByParam().put(s, 0.0); nncUnderlying.getL2ByParam().put(s, 0.0); nncUnderlying.getLearningRateByParam().put(s, 0.0); } } return new org.deeplearning4j.nn.layers.FrozenLayer(underlying); }
@Override public void setParams(INDArray params) { if (params == paramsFlattened) return; //No op //SetParams has two different uses: during pretrain vs. backprop. //pretrain = 3 sets of params (inc. visible bias); backprop = 2 List<String> parameterList = conf.variables(); int paramLength = 0; for (String s : parameterList) { int len = getParam(s).length(); paramLength += len; } if (params.length() != paramLength) { throw new IllegalArgumentException("Unable to set parameters: must be of length " + paramLength + ", got params of length " + params.length() + " " + layerId()); } // Set for backprop and only W & hb paramsFlattened.assign(params); }
List<Layer> tempLayerList = new ArrayList<>(); defaultConfiguration.clearVariables(); List<String> variables = defaultConfiguration.variables(false); for (Map.Entry<String, org.deeplearning4j.nn.conf.graph.GraphVertex> nodeEntry : configVertexMap.entrySet()) { org.deeplearning4j.nn.conf.graph.GraphVertex n = nodeEntry.getValue(); Layer l = gv.getLayer(); tempLayerList.add(l); List<String> layerVariables = l.conf().variables(); if (layerVariables != null) { for (String s : layerVariables) {
List<String> vars = origNNC.variables(true); origNNC.clearVariables(); layerNNC.clearVariables(); for (String s : vars) { origNNC.variables(false).add(s); origNNC.getL1ByParam().put(s, 0.0); origNNC.getL2ByParam().put(s, 0.0); origNNC.getLearningRateByParam().put(s, 0.0); layerNNC.variables(false).add(s); layerNNC.getL1ByParam().put(s, 0.0); layerNNC.getL2ByParam().put(s, 0.0);
protected void setParams(INDArray params, char order) { List<String> parameterList = conf.variables(); int length = 0; for (String s : parameterList) length += getParam(s).length(); if (params.length() != length) throw new IllegalArgumentException("Unable to set parameters: must be of length " + length + ", got params of length " + params.length() + " - " + layerId()); int idx = 0; Set<String> paramKeySet = this.params.keySet(); for (String s : paramKeySet) { INDArray param = getParam(s); INDArray get = params.get(NDArrayIndex.point(0), NDArrayIndex.interval(idx, idx + param.length())); if (param.length() != get.length()) throw new IllegalStateException("Parameter " + s + " should have been of length " + param.length() + " but was " + get.length() + " - " + layerId()); param.assign(get.reshape(order, param.shape())); //Use assign due to backprop params being a view of a larger array idx += param.length(); } }