Matconvnet笔记
详解Matconvnet中的卷积神经网络的细节,每一层的具体计算过程
卷积层 vl__nnconv
作用的是进行卷积操作,具体的用法为y=vl_nnconv(x,f,b)
.该函数通常进行4维矩阵,也就是张量运算,最大接受的矩阵唯独为4,但也可以进行低维度矩阵运算.
最大4
即\( x \in \mathbb{R}^{H \times W \times D}, \)
效果图
这次使用PCA对MNIST数据集中数字0和1进行降维分类,分别使用Matlab和Python来实验,结果如下:
特征值与特征向量定义
特征向量的定义为:\[A \vec{v} = \lambda \vec{v} \] 其中\(\vec{v}\)就是\(A\)就是特征向量,而对应的\(\lambda\)就是特征值
在Matlab里使用eig
函数来求,使用方法为:
1
2
3
4
5
6
7
8
9
10clear all
close all
clc
mat = rand(3,3);
[V D] = eig(mat); % V 为特征向量,列向量,D为特征值
mat*V(:, 1) - D(1, 1)*V(:, 1)
mat*V(:, 2) - D(2, 2)*V(:, 2)
mat*V(:, 3) - D(3, 3)*V(:, 3)
特征向量定义与特征分解公式
再回到之前的特征向量定义: \[A \vec{V} = \lambda \vec{v} \] 然后是矩阵特征值分解的公式: \[A = P \Lambda P^{-1} \] 其中的\(\Lambda\)就是矩阵A的特征值,而\(P^{-1}\)的列向量就是矩阵的特征向量。
特征向量的定义如何推导出特征值分解公式。 假设\(A\)为对角矩阵,那么他肯定是一个可对角化矩阵。 那么他的特征向量两两正交。现在假设它有\(m\)个不同的特征值为\(\lambda_i \),对应的 特征向量为\(x_i\)则有: \[ Ax_1 = \lambda_1 x_1 \\ Ax_2 = \lambda_2 x_2 \\ \cdots \\ Ax_m = \lambda_m x_m \] 进而得到: \[AU = U\Lambda \] 其中 \[ U = [x_1 x_2 \cdots x_m] \quad \quad \Lambda = \begin{pmatrix} \lambda_1 & \cdots & 0 \\ \vdots & \ddots & \vdots \\ 0 & \cdots & \lambda_m \\ \end{pmatrix} \] 最后也就是推出了: \[ A = U\Lambda U^{-1} = U\Lambda U^{T} \] 其中,由于特征向量两两正交,所以\(U\)为正交阵, 正交矩阵的逆等于转置。Matlab的验证程序如下: