Apache SystemML scalar-martix(elementwise)乘法不起作用

时间:2017-07-11 20:50:36

标签: apache-spark machine-learning neural-network systemml

请考虑以下代码:

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

其中learningRate是double和dJdW1 / dJdW1 2d矩阵。

我收到此错误:

  

错误:从第58行和第61行之间的语句块生成的程序块中的运行时错误 - 错误评估指令:CP \ xb0 - * \ xb0W2 \ xb7MATRIX \ xb7DOUBLE \ xb01.0E-5 \ xb7SCALAR \ xb7DOUBLE \ xb7true \ xb0dJdW2 \ xb7MATRIX \ xb7DOUBLE \ xb0_mVar117 \ xb7MATRIX \ xb7DOUBLE

编辑12.7.17:

加上这个...

  

序数不在范围内(128)'))

可以找到整个DML here

可以找到完整的错误here

可以找到整个jupyther笔记本here

1 个答案:

答案 0 :(得分:1)

单元标量矩阵操作很好。查看您的错误,它表示您的矩阵/矢量尺寸不兼容:

 : 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 = rand(rows = hiddenLayerSize,cols = outputLayerSize) 作为3x1矩阵,而dJDW2是2x3矩阵。