float scaleAndRegularizeFloatTensor( MultiDimensionalMap<String, String, FloatTensor> derivatives, MultiDimensionalMap<String, String, FloatTensor> currentMatrices, float scale, float regCost) { float cost = 0.0f; // the regularization cost for (MultiDimensionalMap.Entry<String, String, FloatTensor> entry : currentMatrices.entrySet()) { FloatTensor D = derivatives.get(entry.getFirstKey(), entry.getSecondKey()); D = D.scale(scale).add(entry.getValue().scale(regCost)); derivatives.put(entry.getFirstKey(), entry.getSecondKey(), D); cost += entry.getValue().mul(entry.getValue()).sum() * regCost / 2.0; } return cost; }
FloatTensor randomBinaryFloatTensor() { float range = 1.0f / (4.0f * numHidden); FloatTensor floatTensor = FloatTensor.rand(numHidden * 2, numHidden * 2, numHidden, -range, range, rng); return floatTensor.scale(scalingForInit); }