Romeo Kienzer created SYSTEMML-1759: ---------------------------------------
Summary: make UDFs callable from expressions Key: SYSTEMML-1759 URL: https://issues.apache.org/jira/browse/SYSTEMML-1759 Project: SystemML Issue Type: Improvement Components: Parser Affects Versions: SystemML 1.0 Environment: IBM DataScience Experience Reporter: Romeo Kienzer Priority: Minor SystemML Parser stops with exeption: only builtin functions allowed as part of expression But the following re-write could be automated during parsing delta3 = -(Y-yHat) * sigmoidPrime(z3) => smp = sigmoidPrime(z3) delta3 = -(Y-yHat) * smp Please consider the following code: script = """ # sigmoid = function(matrix[double] z) return (matrix[double] z) { z = 1/(1+exp(-z)) } sigmoidPrime = function(matrix[double] z) return (matrix[double] z) { #Gradient of sigmoid z = exp(-z)/(1+exp(-z)) } X=matrix("3 5 5 1 10 2", rows=3, cols=2) inputLayerSize = 2 outputLayerSize = 1 hiddenLayerSize = 3 W1 = rand(rows=inputLayerSize,cols=hiddenLayerSize) W2 = rand(rows=hiddenLayerSize,cols=outputLayerSize) feedForward = function (matrix[double] X, matrix[double] W1, matrix[double] W2) return (matrix[double] z2,matrix[double] z3,matrix[double] Y) { z2 = X %*% W1 a2 = sigmoid(z2) z3 = (a2 %*% W2) Y = sigmoid(z3) } gradient = function(matrix[double] X, matrix[double] W1, matrix[double] W2, matrix[double] Y) return (matrix[double] dJdW1,matrix[double] dJdW1) { #Compute derivative with respect to W and W2 for a given X and y: [z2,z3,Yhat] = feedForward(X,W1,W2) delta3 = -(Y-yHat) * sigmoidPrime(z3) dJdW2 = t(a2) %*% delta3 delta2 = (delta3 %*% t(W2))*sigmoidPrime(z2) dJdW1 = t(X) %*% delta2 } [z2,z3,Yhat]=feedForward(X,W1,W2) nrx = nrow(X) ncx = ncol(X) nrw1 = nrow(W1) ncw1 = ncol(W1) """ I'm getting a parser exeption saying that Caused by: org.apache.sysml.parser.ParseException: -------------------------------------------------------------- The following 2 parse issues were encountered: 1 [line 39:25] [Validation error] -> delta3 = -(Y-yHat) * sigmoidPrime(z3) only builtin functions allowed as part of expression 2 [line 42:32] [Validation error] -> delta2 = (delta3 %*% > t(W2))*sigmoidPrime(z2) only builtin functions allowed as part of expression -- This message was sent by Atlassian JIRA (v6.4.14#64029)