2017-07-11 35 views
0

請考慮下面的代碼:阿帕奇SystemML標量martix(按元素)乘不工作

#update 
    W1 = W1 - learningRate * dJdW1 
    W2 = W2 - learningRate * dJdW2 

哪裏learningRate是雙和dJdW1/dJdW1二維矩陣。

我得到這個錯誤:

ERROR: Runtime error in program block generated from statement block between lines 58 and 61 -- Error evaluating instruction: CP\xb0-*\xb0W2\xb7MATRIX\xb7DOUBLE\xb01.0E-5\xb7SCALAR\xb7DOUBLE\xb7true\xb0dJdW2\xb7MATRIX\xb7DOUBLE\xb0_mVar117\xb7MATRIX\xb7DOUBLE

編輯17年7月12日:

加上這一個...

ordinal not in range(128)'))

整個DML可以發現here

完整的錯誤可以發現here

整個jupyther筆記本可以發現here

回答

1

的cellwise標量矩陣操作被罰款。看着你的錯誤,它說,你的矩陣/矢量的尺寸是不兼容的:

: Block sizes are not matched for binary cell operations: 3x1 vs 2x3 
org.apache.sysml.runtime.matrix.data.MatrixBlock.binaryOperations(MatrixBlock.java:2872) 
org.apache.sysml.runtime.instructions.cp.PlusMultCPInstruction.processInstruction(PlusMultCPInstruction.java:66) 
org.apache.sysml.runtime.controlprogram.ProgramBlock.executeSingleInstruction(ProgramBlock.java:290) 

在你的筆記本電腦來看,這個來自:

W2 = W2 - learningRate * dJdW2 

W2初始化W2 =蘭特(行= hiddenLayerSize ,cols = outputLayerSize) 作爲3x1矩陣,而dJDW2是2×3矩陣。

+0

必須將返回類型從return(matrix [double] dJdW1,matrix [double] dJdW1){return(matrix [double] dJdW1,matrix [double] dJdW2){ –