10 神经网络的基本结构
在前一篇教程中,我们探讨了torch.autograd
如何实现自动求导,这是构建深度学习模型所必不可少的工具。今天,我们将继续深入学习神经网络的基础知识,特别是神经网络的基本结构
。
神经网络的基本组成
一个神经网络的基本结构通常由以下几个主要部分组成:
- 输入层(Input Layer):接收原始数据。
- 隐藏层(Hidden Layer):进行特征转换,可以有一个或多个隐藏层。
- 输出层(Output Layer):输出最终结果。
- 权重和偏置(Weights and Biases):每个连接都有一个权重,而每个神经元有一个偏置。
神经元的基本计算
一个单独的神经元的计算可以被表示为以下公式:
$$
y = f(w \cdot x + b)
$$
其中:
- $y$ 是神经元的输出。
- $f$ 是激活函数,常用的有
ReLU
、Sigmoid
、Tanh
等。 - $w$ 是权重向量。
- $x$ 是输入向量。
- $b$ 是偏置。
这个计算通过对输入进行线性变换,然后应用激活函数,将非线性引入模型中。
激活函数
激活函数的选择对神经网络的性能有很大影响。以下是几种常用的激活函数:
- ReLU(Rectified Linear Unit):$f(x) = \max(0, x)$。适用于深度神经网络,因为它能够解决梯度消失问题。
- Sigmoid:$f(x) = \frac{1}{1 + e^{-x}}$。常用于二分类任务,但在深层网络中可能导致梯度消失。
- Tanh:$f(x) = \tanh(x)$。输出范围在$[-1, 1]$之间,也能解决部分梯度消失问题。
网络结构示例
假设我们想要构建一个简单的全连接神经网络(Feedforward Neural Network),其结构可以用如下方式理解:
1 | 输入层(数据) → 隐藏层(特征提取) → 输出层(预测结果) |
例如,一个简单的结构包括:
- 输入层:有10个神经元(假设每个神经元对应一个特征)。
- 隐藏层:有5个神经元,可以使用
ReLU
激活函数。 - 输出层:有1个神经元,用于二分类任务,可以使用
Sigmoid
激活函数。
代码示例
下面是如何用PyTorch
定义一个简单的神经网络结构的示例代码:
1 | import torch |
在这个示例中,我们定义了一个名为SimpleNN
的神经网络,它包含1个输入层,1个隐藏层和1个输出层。forward
方法是网络的前向传播过程,它定义了输入数据如何通过网络进行传递。
总结
在本篇中,我们讲解了神经网络的基本结构,包括输入层、隐藏层、输出层及其对应的计算公式。我们还探讨了激活函数的选择及其作用,并通过一个简单的PyTorch
代码示例展示了如何实现一个基本的神经网络。
接下来,我们将会学习如何定义模型的具体细节,这会帮助我们更深入地理解如何构建和训练神经网络。
10 神经网络的基本结构