【问题标题】:How to use the Spark Mlib Multilayer Perceptron Weights Array如何使用 Spark Mllib 多层感知器权重数组
【发布时间】:2017-10-18 20:27:22
【问题描述】:

我有一个要求,我需要找到在 ANN 实现中使用的属性的相对重要性。我使用 spark MLib 库 MultiLayerPerceptron 来实现。该模型给了我一个向量,它是一个权重数组。我知道有一些算法可以从 weights 中推导出相对重要性,但是 MLib 实现给出了一个大的一维数组,并没有说明与每个输入对应的权重。有人知道如何获取每个输入节点对应的权重吗?

【问题讨论】:

  • 对此有什么答案吗?我一直想知道权重向量的语义

标签: apache-spark-mllib apache-spark-ml


【解决方案1】:

model 使用Breeze 操作使权重矩阵变平:toDenseVector。 (注意这一行:val brzWeights: BV[Double] = weightsOld.asBreeze.toDenseVector

这个操作acts like numpy's flatten()。 因此,要检索权重矩阵,您必须做两件事:

  1. 根据您的层将权重向量拆分为多个部分。您必须为每个非最终层采用(layerSize + 1) * nextLayerSize 权重(+1 因为存在偏差)。
  2. 对于每个展平的权重矩阵,应用numpyreshape 和参数(layerSize + 1, nextLayerSize)

当您从权重导出相对重要性时,请注意在pyspark implementation 中,偏差表示为最后一个特征:

因此每个权重矩阵的最后一行代表偏差值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-02
    • 2015-08-14
    • 2017-10-07
    • 2019-03-05
    • 2023-03-03
    • 2015-06-23
    • 2013-04-20
    • 1970-01-01
    相关资源
    最近更新 更多