List of usage examples for com.google.common.util.concurrent AtomicDouble doubleValue
public double doubleValue()
From source file:org.deeplearning4j.models.rntn.RNTN.java
public INDArray getValueGradient(final List<Tree> trainingBatch) { // We use TreeMap for each of these so that they stay in a // canonical sorted order // TODO: factor out the initialization routines // binaryTD stands for Transform Derivatives final MultiDimensionalMap<String, String, INDArray> binaryTD = MultiDimensionalMap.newTreeBackedMap(); // the derivatives of the INd4j for the binary nodes final MultiDimensionalMap<String, String, INDArray> binaryINDArrayTD = MultiDimensionalMap .newTreeBackedMap();//from www .jav a 2 s . com // binaryCD stands for Classification Derivatives final MultiDimensionalMap<String, String, INDArray> binaryCD = MultiDimensionalMap.newTreeBackedMap(); // unaryCD stands for Classification Derivatives final Map<String, INDArray> unaryCD = new TreeMap<>(); // word vector derivatives final Map<String, INDArray> wordVectorD = new TreeMap<>(); for (MultiDimensionalMap.Entry<String, String, INDArray> entry : binaryTransform.entrySet()) { int numRows = entry.getValue().rows(); int numCols = entry.getValue().columns(); binaryTD.put(entry.getFirstKey(), entry.getSecondKey(), Nd4j.create(numRows, numCols)); } if (!combineClassification) { for (MultiDimensionalMap.Entry<String, String, INDArray> entry : binaryClassification.entrySet()) { int numRows = entry.getValue().rows(); int numCols = entry.getValue().columns(); binaryCD.put(entry.getFirstKey(), entry.getSecondKey(), Nd4j.create(numRows, numCols)); } } if (useDoubleTensors) { for (MultiDimensionalMap.Entry<String, String, INDArray> entry : binaryTensors.entrySet()) { int numRows = entry.getValue().size(1); int numCols = entry.getValue().size(2); int numSlices = entry.getValue().slices(); binaryINDArrayTD.put(entry.getFirstKey(), entry.getSecondKey(), Nd4j.create(numRows, numCols, numSlices)); } } for (Map.Entry<String, INDArray> entry : unaryClassification.entrySet()) { int numRows = entry.getValue().rows(); int numCols = entry.getValue().columns(); unaryCD.put(entry.getKey(), Nd4j.create(numRows, numCols)); } for (String s : vocabCache.words()) { INDArray vector = featureVectors.vector(s); int numRows = vector.rows(); int numCols = vector.columns(); wordVectorD.put(s, Nd4j.create(numRows, numCols)); } final List<Tree> forwardPropTrees = new CopyOnWriteArrayList<>(); //if(!forwardPropTrees.isEmpty()) Parallelization.iterateInParallel(trainingBatch, new Parallelization.RunnableWithParams<Tree>() { public void run(Tree currentItem, Object[] args) { Tree trainingTree = new Tree(currentItem); trainingTree.connect(new ArrayList<>(currentItem.children())); // this will attach the error vectors and the node vectors // to each node in the tree forwardPropagateTree(trainingTree); forwardPropTrees.add(trainingTree); } }, rnTnActorSystem); // TODO: we may find a big speedup by separating the derivatives and then summing final AtomicDouble error = new AtomicDouble(0); if (!forwardPropTrees.isEmpty()) Parallelization.iterateInParallel(forwardPropTrees, new Parallelization.RunnableWithParams<Tree>() { public void run(Tree currentItem, Object[] args) { backpropDerivativesAndError(currentItem, binaryTD, binaryCD, binaryINDArrayTD, unaryCD, wordVectorD); error.addAndGet(currentItem.errorSum()); } }, new Parallelization.RunnableWithParams<Tree>() { public void run(Tree currentItem, Object[] args) { } }, rnTnActorSystem, new Object[] { binaryTD, binaryCD, binaryINDArrayTD, unaryCD, wordVectorD }); // scale the error by the number of sentences so that the // regularization isn't drowned out for large training batchs double scale = trainingBatch == null || trainingBatch.isEmpty() ? 1.0f : (1.0f / trainingBatch.size()); value = error.doubleValue() * scale; value += scaleAndRegularize(binaryTD, binaryTransform, scale, regTransformMatrix); value += scaleAndRegularize(binaryCD, binaryClassification, scale, regClassification); value += scaleAndRegularizeINDArray(binaryINDArrayTD, binaryTensors, scale, regTransformINDArray); value += scaleAndRegularize(unaryCD, unaryClassification, scale, regClassification); value += scaleAndRegularize(wordVectorD, featureVectors, scale, regWordVector); INDArray derivative = Nd4j.toFlattened(getNumParameters(), binaryTD.values().iterator(), binaryCD.values().iterator(), binaryINDArrayTD.values().iterator(), unaryCD.values().iterator(), wordVectorD.values().iterator()); if (derivative.length() != numParameters) throw new IllegalStateException("Gradient has wrong number of parameters " + derivative.length() + " should have been " + numParameters); if (paramAdaGrad == null) paramAdaGrad = new AdaGrad(1, derivative.columns()); derivative = paramAdaGrad.getGradient(derivative, 0); return derivative; }
From source file:com.court.controller.CollectionSheetFxmlController.java
private void performSearch(ComboBox<String> search_typ_combo, TextField search_txt) { if (search_txt.getText() != null && !search_txt.getText().isEmpty()) { ImageView progressIndicator = new ImageView(); progressIndicator.setImage(new Image(FileHandler.LOADING_DEFAULT_GIF)); VBox v = new VBox(progressIndicator); v.setAlignment(Pos.CENTER);//from ww w . j a va 2s .co m table_bpane.setCenter(v); Task<List<Member>> mTask = new Task<List<Member>>() { { setOnSucceeded(d -> { AtomicDouble ins_total = new AtomicDouble(0.0); AtomicDouble sub_total = new AtomicDouble(0.0); List<Member> mList = getValue(); mList.stream().forEach(m -> { List<MemberLoan> instOnly = m.getMemberLoans().stream() .sorted(Comparator.comparing(MemberLoan::getChildId).reversed()) .filter(p -> !p.isIsComplete()) .filter(FxUtilsHandler.checkIfNotYetPaid(p -> p.getPaidUntil())) .filter(p -> p.isStatus()) .filter(p -> (p.getLastInstall() < p.getLoanDuration())) .filter(FxUtilsHandler.distinctByKey(p -> p.getMemberLoanCode())) .collect(Collectors.toList()); //===================installments finished, but kotaonly loans================ List<MemberLoan> kotaOnly = m.getMemberLoans().stream() .sorted(Comparator.comparing(MemberLoan::getChildId).reversed()) .filter(p -> !p.isIsComplete()) .filter(FxUtilsHandler.checkIfNotYetPaid(p -> p.getPaidUntil())) .filter(p -> p.isStatus()) .filter(p -> (p.getLastInstall() >= p.getLoanDuration())) .filter(FxUtilsHandler.distinctByKey(p -> p.getMemberLoanCode())) .collect(Collectors.toList()); double sum = instOnly.stream().mapToDouble(p -> p.getLoanInstallment()).sum() + kotaOnly.stream().mapToDouble(p -> p.getKotaLeft()).sum(); ins_total.addAndGet(sum); List<MemberSubscriptions> mbrSubs = new ArrayList<>(m.getMemberSubscriptions()); boolean flag = FxUtilsHandler.hasPreviousSubscriptions(m.getId()); if (flag) { sub_total.addAndGet(mbrSubs.stream().mapToDouble(a -> a.getAmount()).sum()); } else { sub_total.addAndGet( mbrSubs.stream().filter(s -> !s.getRepaymentType().equalsIgnoreCase("Once")) .mapToDouble(a -> a.getAmount()).sum()); } }); total = ins_total.doubleValue() + sub_total.doubleValue(); chk_amt_txt.setText(TextFormatHandler.CURRENCY_DECIMAL_FORMAT.format(total)); Pagination paginationTable = initCollectionTable(mList); table_bpane.getChildren().remove(0); table_bpane.setCenter(paginationTable); }); setOnFailed(workerStateEvent -> getException().printStackTrace()); } @Override protected List<Member> call() throws Exception { return memberList(); } }; Thread mThread = new Thread(mTask, "m-task"); mThread.setDaemon(true); mThread.start(); } }