深度神经网络的实现17 Mar 2025 | 4 分钟阅读 了解反向传播的过程后,让我们开始看看如何使用 PyTorch 实现深度神经网络。实现深度神经网络的过程类似于感知器模型的实现。在实现过程中,我们需要执行以下步骤。 步骤 1 第一步,我们将导入所有需要的库,例如 torch、numpy、datasets 和 matplotlib.pyplot。 步骤 2 第二步,我们定义数据点的数量,然后使用 make_blobs() 函数创建一个数据集,该函数将创建一个数据点集群。 步骤 3 现在,我们将创建我们的数据集,并将我们的数据点存储到变量 x 中,同时将值存储到变量 y 中,我们将稍微使用一下我们的标签。 步骤 4 现在,我们将 make_blobs() 更改为 make_cicrcle(),因为我们想要一个圆形的数据集。我们在 make_circle() 函数中传递适当的参数。第一个参数表示样本点的数量,第二个参数是随机状态,第三个参数是噪声,它将引用高斯噪声的标准偏差,第四个参数是因子,它将引用较小的内部圆形区域相对于较大区域的相对大小。 步骤 4 现在,在根据需要自定义数据集后,我们可以使用 plt.scatter() 函数绘制它并将其可视化。我们定义每个标签数据集的 x 和 y 坐标。让我们从标签为 0 的数据集开始。它绘制了我们数据的顶部区域。标记为 0 的数据集的散点函数定义为 ![]() 步骤 5 现在,我们绘制数据下部区域中的点。一个标记数据集的散点函数 () 定义为 ![]() 一条线不能对上述数据集进行分类。为了对该数据集进行分类,将需要一个更深的神经网络。 我们将 plt.scatter(x[y==0,0],x[y==0,1]) 和 plt.scatter(x[y==1,0],x[y==1,1]) 放入一个函数中,以便进一步使用,如下所示 步骤 6 在这一步中,我们将创建我们的模型类,就像我们在线性回归和感知器模型中实现的那样。不同之处在于,这里我们也在输入层和输出层之间使用隐藏层。在 init() 方法中,我们将传递一个额外的参数 h1 作为隐藏层,并且我们的输入层与隐藏层相连,然后隐藏层与输出层相连。所以 现在,我们必须在我们的前向函数中添加这个额外的隐藏层,以便任何输入都必须通过神经网络的整个深度才能进行预测。所以 我们的初始化已经完成,现在,我们准备好使用它了。请记住训练一个模型 x,x 和 y 坐标都应该是 numpy 数组。因此,我们将我们的 x 和 y 值更改为张量,如下所示 步骤 7 我们将使用 Deep_neural_network() 构造函数初始化一个新的线性模型,并将 input_size、output_size 和 hidden_size 作为参数传递。现在,我们打印分配给它的随机权重和偏差值,如下所示 在此之前,为了确保我们随机结果的一致性,我们可以使用 torch manual seed 来播种我们的随机数生成器,并且我们可以将种子设置为 2,如下所示 步骤 8 我们将使用的模型误差计算标准被称为交叉熵。我们的损失函数将基于二元交叉熵损失 (BCELoss) 来衡量,因为我们只处理两个类。它从 nn 模块导入。 现在,我们的下一步是使用优化器更新参数。因此,我们定义了用于梯度下降算法的优化器。在这里,我们将使用 Adam 优化器。Adam 优化器是许多优化算法之一。Adam 优化算法是随机梯度下降的两个其他扩展(例如 Adagrad 和 RMSprop)的组合。学习率在优化中起着重要作用。 如果我们选择最小学习率,会导致收敛到最小值非常缓慢,如果选择非常大的学习率会阻碍收敛。Adam 优化器算法最终会计算每个参数的自适应学习率。 步骤 9 现在,我们将像在线性模型和感知器模型中所做的那样,训练我们的模型以进行指定的 epoch 次数。因此,该代码将类似于感知器模型,如下所示 ![]() 下一个主题在 PyTorch 中测试深度神经网络 |
我们请求您订阅我们的新闻通讯以获取最新更新。