我有一个要求,我需要找到 ANN 实现中使用的属性的相对重要性。我使用 spark MLib 库 MultiLayerPerceptron 来实现。该模型给了我一个向量,它是一个权重数组。我知道有一些算法可以从 weights 中得出相对重要性,但是 MLib 实现给出了一个大的一维数组,并且没有说明与每个输入对应的权重。任何人都知道如何获得与每个输入节点对应的权重?
问问题
932 次
1 回答
1
该模型通过以下操作使权重矩阵变平Breeze
:toDenseVector
。(注意行val brzWeights: BV[Double] = weightsOld.asBreeze.toDenseVector
:)
这种操作就像numpy
'sflatten()
一样。因此,要检索权重矩阵,您必须做两件事:
- 根据您的图层,将权重向量拆分为多个部分。您必须为
(layerSize + 1) * nextLayerSize
每个非最终层加权(+1
因为存在偏差)。 - 对于每个展平的权重矩阵,应用带有参数
numpy
的。reshape
(layerSize + 1, nextLayerSize)
当您从权重中得出相对重要性时,请注意在pyspark 实现中,偏差表示为最后一个特征:
因此,每个权重矩阵的最后一行代表偏差值。
于 2017-10-18T12:27:22.170 回答