MLP理论推导与pytorch实现
时间:2023-11-13 08:37:02
说明
该部分介绍MLP并基于四种形式pytorch实现解神经网络奠定基础
文章目录
- 一个单样本输出
-
- 1.1理论
- 1.2实操
-
- 1.2.1使用已建模型
- 1.2.2自己建模
- 2.一个输出多样本
-
- 2.1理论
- 2.2实操
-
- 2.2.1使用已建模型
- 2.2.2自己建模
- 3.单样本多输出
-
- 3.1理论
- 3.2实操
-
- 3.2.1使用已建立的模型
- 3.2.2自己建模
- 4.多样本多输出
-
- 4.1理论
- 4.2实操
-
- 4.2.1使用已建立的模型
- 4.2.2自己建模
一个单样本输出
1.1理论
约定向量均为列向量
假设样本有 d d d一个属性,一个输出,然后将输入样本写成列向量 x = [ x 1 x 2 ? x d ] x=\begin{bmatrix} x_1\\ x_2\\ \vdots\\ x_d \end{bmatrix} x=?
?x1x2/span>⋮xd⎦
⎤
权重也写成列向量写成列向量 w = [ w 1 w 2 ⋮ w d ] w=\begin{bmatrix} w_1\\ w_2\\ \vdots\\ w_d \end{bmatrix} w=⎣
⎡w1w2⋮wd⎦
⎤
将MLP理解为没有使用激活函数的神经网络,或者激活函数就是 f ( x ) = x f(x)=x f(x)=x, d d d个属性也就意味着输入有 d d d个神经元,1个输出,意味着输出是1个神经元,其结构如下图
那么输出 y = w 1 x 1 + w 2 x 2 + ⋯ + w d x d + b = w 1 x 1 + w 2 x 2 + ⋯ + w d x d + b = ∑ i = 1 d x i w i + b = x T w + b = w T x + b (1) y=w_1x_1+w_2x_2+\dots+w_dx_d+b=w_1x_1+w_2x_2+\dots+w_dx_d+b\\=\sum_{i=1}^dx_iw_i+b=x^Tw+b=w^Tx+b\tag{1} y=w1x1+w2x2+⋯+wdxd+b=w1x1+w2x2+⋯+wdxd+b=i=1∑dxiwi+b=xTw+b=wTx+b(1)
设 b = w 0 x 0 b=w_0x_0 b=w0x0,且 w 0 = b , x 0 = 1 w_0=b,x_0=1 w0=b,x0=1
那么(1)式可进一步写成
y = w 1 x 1 + w 2 x 2 + ⋯ + w d x d + w 0 x 0 = ∑ i = 0 d w i x i = x ^ T w ^ = w ^ T x ^ (2) y=w_1x_1+w_2x_2+\dots+w_dx_d+w_0x_0=\sum_{i=0}^dw_ix_i=\hat{x}^T\hat{w}=\hat{w}^T\hat{x}\tag{2} y=w1x1+w2x2+⋯+wdxd+w0x0=i=0∑dwixi=x^Tw^=w^Tx^(2)
其中 x ^ = [ x 0 x 1 x 2 ⋮ x d ] \hat{x}=\begin{bmatrix} x_0\\ x_1\\ x_2\\ \vdots\\ x_d \end{bmatrix} x^=⎣
⎡x0x1x2⋮xd⎦
⎤
w ^ = [ w 0 w 1 w 2 ⋮ w d ] \hat{w}=\begin{bmatrix} w_0\\ w_1\\ w_2\\ \vdots\\ w_d \end{bmatrix} w^=⎣
⎡w0w1w2⋮wd⎦
⎤
为便于书写,当然将 x ^ \hat{x} x^写成 x x x,将 w ^ \hat{w} w^写成 w w w,所以 y = w 1 x 1 + w 2 x 2 + ⋯ + w d x d + w 0 x 0 = ∑ i = 0 d w i x i = x ^ T w ^ = w ^ T x ^ = x T w = w T x (3) y=w_1x_1+w_2x_2+\dots+w_dx_d+w_0x_0=\sum_{i=0}^dw_ix_i=\hat{x}^T\hat{w}=\hat{w}^T\hat{x}=x^Tw=w^Tx\tag{3} y=w1x1+w2x2元器件数据手册、IC替代型号,打造电子元器件IC百科大全!