On 11/6/13 6:38 PM, Romain Francois wrote:
This very much depends on the code but there is a good chance that RcppArmadillo will generate code making less data copies, etc ...

Hard to say without seeing the code.

Romain

Most of the code (or at least the slow, highly repeated parts) look like:

    A <- t(c + t(W) %*% X)
    E <- (exp(A) * (1 - 1 / A) + 1 / A) / (exp(A) - 1)
    E[abs(A) < sqrt(.Machine$double.eps) * 2 ] <- 0.5

    B <- t(b + W %*% t(E))
    X2 <- 1 / (1 + exp(-B))

    A2 <- t(c + t(W) %*% X2)
    E2 <- (exp(A2) * (1 - 1 / A2) + 1 / A2) / (exp(A2) - 1)
    E2[abs(A2) < sqrt(.Machine$double.eps) * 2 ] <- 0.5

    delta <- (t(X) %*% E - t(X2) %*% E2)
    W <- W + delta

Where b and c are vectors, W and X matrices. All this is encapsulated in a function, that is called a few thousand times in a for loop, with some sanity checks. (But it didn't appear to have much impact on the speed... if I remove the matrix operations so it does nothing, it executes nearly instantly). I understand from Dirk and Douglas that it probably isn't going to make a huge difference, though (not by orders).

Thanks,
Xavier

--
Xavier Robin, PhD
Cellular Signal Integration Group (C-SIG) - http://www.lindinglab.org
Center for Biological Sequence Analysis (CBS) - http://www.cbs.dtu.dk
Department of Systems Biology - Technical University of Denmark (DTU)
Anker Engelundsvej, Building 301, DK-2800 Lyngby, DENMARK.

_______________________________________________
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Reply via email to