apache-spark-mllib – 如何使用Spark Mlib多层感知器重量阵列

我有一个要求,我需要找到ANN实现中使用的属性的相对重要性.我使用spark MLib库MultiLayerPerceptron来实现.该模型给了我一个矢量,它是一个权重数组.我知道有一些算法可以从权重中推导出相对重要性,但是MLib实现给出了一个大的单维数组,并没有说明与每个输入相对应的权重.任何人都知道如何获得与每个输入节点相对应的权重? 最佳答案 model使用Breeze操作使权重矩阵变平:toDenseVector. (注意这一行:val brzWeights:BV [Double] = weightsOld.asBreeze.toDenseVector)

这种操纵acts like numpy‘s flatten().
因此,要检索权重矩阵,您必须做两件事:

>根据您的图层将权重向量拆分为零件.你必须对每个非最终层采取(layerSize 1)* nextLayerSize权重(1因为偏差).
>对于每个展平的权重矩阵,应用numpy的reshape参数(layerSize 1,nextLayerSize).

当您从权重中推导出相对重要性时,请注意在pyspark implementation中,偏差表示为最后一个要素:《apache-spark-mllib – 如何使用Spark Mlib多层感知器重量阵列》.

因此,每个权重矩阵中的最后一行表示偏差值.

点赞