Press "Enter" to skip to content

深度神经网络最终预测模型

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

深度神经网络在图像分类中的应用

 

本教程将使用我们在前几部分中实现的函数来构建深度神经网络,并将其应用于猫与狗的分类。希望与之前的Logistic回归实现相比,我们将看到精确度有所提高。在这一部分之后,我们将仅使用NumPy库构建深度神经网络并将其应用于监督学习。

 

让我们首先导入在这一部分中需要的所有包。我们将使用与Logistic回归中相同的“猫与狗”数据集作为神经网络教程。我们建立的模型在猫和狗的图像分类上有60%的测试准确率。希望我们的新机型能表现得更好! Logistic Regression as a Neural Network

 

我将导入我们已经从“逻辑回归”系列教程中编写的代码: “Logistic Regression”

 

L层深度神经网络:

 

很难用图形来表示深度神经网络。但是,以下是简化的网络表示法:

该模型可概括为:[线性->RELU]×(L-1)->线性->S型。上图详细架构:

输入是被展平到大小为(12288,1)的向量的(64,64,3)图像;
对应的向量:

然后乘以权重矩阵W[1],然后添加截距b[1]。其结果称为线性单位;
接下来,取线性单位的reu。根据模型体系结构,此过程可以针对每个(W[l],b[l])重复多次;
最后,取最后一个线性单位的Sigmoid。如果大于0.5,则将其归类为猫。

一般方法:

 

像往常一样,我们将遵循深度学习方法来构建模型:

 

1.初始化参数/定义超参数2.num_iterations的循环:

正向传播;
计算成本函数;
后向传播;
更新参数(使用Backprop中的参数和梯度)。

3.使用训练好的参数对标签进行预测。

 

L层神经网络:

 

我们将使用前面实现的辅助函数来构建具有以下结构的L层神经网络:[LINEAR->RELU]×(L-1)->LINEAR->S型。

 

参数:

 

X-data,NumPy形状数组(示例数,行*列*通道);Y-true“label”向量(如果是猫,则包含0;如果是狗,则包含1),形状(1,示例数);layer_dims-包含输入大小和每个层大小的列表,长度为(层数+1);Learning_rate-渐变下降更新规则的学习率;num_iterations-优化循环的迭代次数;print_ost-如果为True,则每100步打印成本

 

返回:

 

参数-模型学习的参数。然后可以用它们来预测。

 

预测功能:

 

在训练我们的模型之前,我们需要编写一个预测函数,该函数将用于预测L层神经网络的结果:

 

参数:

 

X-要标记的示例数据集。参数-训练模型的参数。

 

返回:

 

给定数据集X的P-预测。

 

我们现在已经准备好训练我们的深度神经网络模型。所以我们可以运行下面的单元来训练我们的模型。每次迭代都应该降低成本。在我的例子中,有6,000张图像,在我的cpu上运行10000次迭代可能需要一天多的时间。以下是代码:

 

我更新的猫对狗训练结果:

 

这是培训成本图:

从我们的测试精确度可以看出,在猫和狗的分类上几乎没有更好的结果。这是因为简单的神经网络不能很好地做到这一点。我们需要使用卷积神经网络来获得更好的结果(在以后的教程中使用它们)。

 

我们将使用以下代码测试我们的深度神经网络代码。因此有两个功能:创建数据,我们将使用它来训练我们的模型。另一个函数将用于在我们的绘图中绘制决策边界,这是由我们的神经网络预测的;如果不深入了解这些函数,则如下所示:

 

让我们用以下行来可视化我们的培训数据:

 

让我们绘制我们的训练数据:

首先,我们将尝试使用具有一个隐藏层的神经网络,其中输入为2,4个隐藏层,输出等于1:

 

在15000次迭代和0.2%的学习率下,我们得到了61%的准确率:

 

这是分类图:

它看起来不是很好,所以让我们尝试同样的15000次迭代和0.2%的学习率,有10个隐藏层:

 

现在我们收到了73%的准确率。很好;让我们画出我们的结果:

现在,让我们测试一下我们所做的努力,并尝试使用Layers_dims=[2,128,4,1]进行更深层次的网络。

 

现在我们收到了74%的准确率。这很好,但正如你所见,要取得更好的结果越来越难了。让我们画出我们的结果:

恭喜你!在相同的数据集上,我们的深度神经网络似乎比我们的两层神经网络(73%)有更好的性能(74%)。对于这项任务来说,这是一个相当好的表现。干得好!

 

这是一个相当长的教程。现在,当我们知道如何构建深度神经网络时,我们就可以学习如何优化它们。在接下来的教程中,我们将学习如何通过系统地搜索更好的超参数(Learning_rate、layer_dims、num_iterations等)来获得更高的精度。在下一个教程中见。

 

完整的教程代码和猫与狗的图像数据集可以在我的GitHub页面上找到。 GitHub

 

最初发表于https://pylessons.com/Deep-neural-networks-part5 https://pylessons.com/Deep-neural-networks-part5

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注