神经网络 neural network
神经网络由多个神经元互相连接组成,每个神经元是一个计算单元,位于同一层级的多个神经元组成一个网络层。一般的神经网络一般由三种网络层组成:输入层,隐藏层和输出层。
神经网络的组成
-
激活函数 Activatioin Functioin
神经元的输入经过激活函数得到输出,激活函数的输出值定义了神经元是否被激活。激活函数有几种不同的形式,它的选取取决于期望的神经元输出。
-
Binary 输入为正数时神经元输出1,输入为负数时神经元输出0
$$ f(x)= \small\begin{cases} 0, & \text{if } x < 0 \newline 1, & \text{if } x\geq 0 \end{cases} $$
-
Sigmod 由输入值得到0和1之间的连续输出值
$$ f(x) = {\large \frac{1}{1+e^{-x}}} $$
-
Tanh 由输入值得到-1和1之间的连续输出值
$$ f(x) = {\large \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}}} $$
-
ReLU 当输入为负数时输出为0,输入为正数时保持输入值
$$ f(x)= \small \begin{cases} 0, & \text{if } x < 0\newline x, & \text{if } x\geq 0 \end{cases} $$
-
-
权重 Weights
由前一神经元输出到下一神经元输入的加权
-
偏置 Bias
$$ output=activation function(\sum{(weights * inputs) + bias}) $$
在PyTorch中建立神经网络
torch.nn
提供了建立神经网络需要的组件,在PyTorch中神经网络是一个module,一个神经网络由多个同样是module的网络层组成。所有的神经网络模型都是nn.Module
的子类。
|
|
通过向模型传递输入数据,模型会自动调用forward(),并返回模型输出。
|
|
nn.Linear
nn.Linear
随机初始化每层的权重和偏置,并储存在tensors中
nn.Flatten
nn.Flatten
将28x28的图片转换为一个784维的输入向量
nn.Sequential
nn.Sequential
是一个module的容器,数据经过nn.Sequential
后,会按照定义时的顺序,依次进行运算。
|
|
nn.ReLU
激活函数ReLU
模型参数
神经网络的参数包括每一个网络层的weight和bais,通过模型的parameters()
或named_parameters()
可以获取模型中的所有参数
|
|