# Python和NumPy简易深度学习训练螺旋数据

{% tabs %}
{% tab title="关键词" %}
Python | NumPy | 深度学习 | Matplotlib | 蝶旋数据 | 正则化器 | 损失函数 | 优化器自动微分
{% endtab %}

{% tab title="梗概" %}
通常，深度学习计算库（如 TensorFlow 和 PyTorch）由下图所示的组件组成。

#### 运算符

它们即是任何神经网络的基本构建块，也可以与层互换使用。 运算符是转换数据的向量值函数。 一些常用的算子是线性、卷积和池化等层，以及 ReLU 和 Sigmoid 等激活函数。

#### 优化器

它们是任何深度学习库的支柱。它们提供了使用与优化目标相关的梯度来更新模型参数的必要方法。一些著名的优化器是 SGD、RMSProp 和 Adam。

#### 损失函数

它们是封闭形式的可微数学表达式，用作手头问题优化目标的替代。 例如，交叉熵损失和铰链损失是分类任务常用的损失函数。

#### 初始化程序

它们在训练开始时为模型参数提供初始值。 初始化在训练深度神经网络中起着重要作用，因为参数初始化不当会导致收敛缓慢或不收敛。 有很多方法可以初始化网络权重，比如从正态分布中抽取小的随机权重。 你可以看看获取完整列表。

#### 正则化器

它们提供了必要的控制机制，以避免过拟合和促进泛化。 可以通过显式或隐式措施来调节过度拟合。 显式方法对权重施加结构约束，例如，它们的 L1-Norm 和 L2-Norm 的最小化，分别使权重更稀疏和均匀。 隐式度量是专门的操作符，它们通过显式规范化（例如 BatchNorm）或通过更改网络连接（例如 DropOut 和 DropConnect）进行中间表示的转换。

> 上述组件基本属于库的前端部分。 通过前端，我的意思是向用户公开的组件，以便他们有效地设计神经网络架构。 在后端，这些库支持自动计算模型中各种参数的损失函数梯度。 这种技术通常称为自动微分 (AD)。

#### 自动微分（AD）

每个深度学习库都提供了一种 AD 风格，以便用户可以专注于定义模型结构（计算图）并将梯度计算的任务委托给 AD 模块。 让我们通过一个例子来看看它是如何工作的。 假设我们要计算以下函数关于其输入变量 X₁ 和 X₂ 的偏导数：

您在上图中看到的是反向模式自动微分 (AD) 的味道。 众所周知的反向传播算法是上述算法的一个特例，其中顶部的函数是损失函数。 AD利用这样一个事实，即每个复合函数都由初等算术运算和初等函数组成，因此可以通过将链式规则递归地应用于这些运算来计算导数。

### 实现

#### 训练

#### 训练我们的第一个模型

### 本文完整代码
{% endtab %}
{% endtabs %}

{% content-ref url="../zhi-dian-mi-jin-brief" %}
[zhi-dian-mi-jin-brief](../zhi-dian-mi-jin-brief)
{% endcontent-ref %}
