我有一个要求,我需要找到ANN实现中使用的属性的相对重要性。我使用spark MLib库MultiLayerPerceptron来实现。该模型给了我一个矢量,它是一个权重数组。我知道有一些算法可以从权重中推导出相对重要性,但是MLib实现给出了一个大的单维数组,并没有说明与每个输入相对应的权重。任何人都知道如何获得与每个输入节点相对应的权重吗?
答案 0 :(得分:1)
model使用Breeze
操作来展平权重矩阵:toDenseVector
。 (注意这一行:val brzWeights: BV[Double] = weightsOld.asBreeze.toDenseVector
)
这种操纵acts like numpy
's flatten()
。
因此,要检索权重矩阵,您必须做两件事:
(layerSize + 1) * nextLayerSize
采用+1
个权重。numpy
的{{1}}参数reshape
。当您从权重中推导出相对重要性时,请注意在pyspark implementation中,偏差表示为最后一个要素:。
因此,每个权重矩阵中的最后一行代表偏差值。