【问题标题】:Using PCA outputs to train corner features by Neural Network使用 PCA 输出通过神经网络训练角点特征
【发布时间】:2013-11-18 08:35:43
【问题描述】:

我正在开展一个车辆分类项目,其中我有 N 辆特定汽车的图像,每张图像的 40 个角/边缘都已被检测并存储在一个矩阵说MAT[40x2] .
所以我创建了一个Nx(40x2) 矩阵说 NMAT

现在我不知道如何使用这个 3D 矩阵作为 pca(mat)princomp(mat) 函数的输入。

但是我知道 pca 是什么以及它是如何进行计算的,但我不知道如何使用它。

谁能给我一个快速的演练

在使用 matlab pca 函数以及其他一些数据后,PCA 还会返回 Eigen_Values、Eigen_Vectors 和 Principal Components。

但由于神经网络只接受 vector 而不是 ma​​trix 作为输入,那么在使用 pca 函数检索到一些数据后应该将什么馈送到 NN? (我不知道如何使用那些主成分来创建一维特征向量)

【问题讨论】:

    标签: matlab opencv neural-network classification pca


    【解决方案1】:

    您需要将reshape 转换为具有N 行和 80 列的 2D 矩阵,以便将每个图像建模为 80 维空间中要降低其维数的点。从 ANN 的角度来看,输入是否具有“自然”二维布局并不重要。该信息不由 ANN 处理,因此可以“销毁”。

    至于您问题的第二部分,ANN 确实需要一个向量输入,但它需要其中几个进行训练,因此训练函数很可能需要一个输入矩阵。该矩阵是您的数据矩阵与您根据相应特征值从pca 中选择的主成分之间的乘积。

    这是一个快速、高级的演练......

    【讨论】:

    • 所以通过重塑你的意思是我需要将坐标的二维数组说 A=[2,3;4,6;5,9;7,1] 转换为新的一维数组 Narr=[2,3,4,6,5,9,7,1]?
    • 是的。那将是与一张图像相关联的特征向量。 reshape 是执行此操作的 Matlab 函数的名称。
    • 所以我到目前为止的理解是,通过这种方式我得到了一个矩阵 imageMat[Nx80] 所以它是我的数据矩阵,我使用 matlab pca 函数或不管怎样,把它们放在一个矩阵中说 compMat[] 然后乘以imageMat*compMat 来创建一个新的矩阵 trainMat[] 然后使用这个 trainMat 作为 NN 的输入跨度>
    • 是的。 imageMat*compMat 部分是数据在主成分子空间上的投影。请注意,您需要从 compMat 中删除一些列,以仅保留与最高特征值相关联的列,以便投影数据位于比原始数据更低维度的空间中。否则,计算 pca 没有意义;它只是数据空间坐标的变化。
    • 是的,我知道我应该只使用具有最大方差的前 k 个主成分,那么有什么方法可以找到 K 或其命中和试验类型方法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 2011-04-07
    • 1970-01-01
    • 2014-03-26
    • 2012-04-02
    • 2018-08-19
    • 2010-11-20
    相关资源
    最近更新 更多