Logistic回归是一种二分类方法。在这个完整的教程中对猫和狗的图像进行训练之后,然后给出一张它以前从未见过的猫(y=0)或狗(y=1)的图片,我们将发现机器是否能够预测正确的类型。正如我们将看到的,即使是像Logistic回归这样的简单算法也能令人惊讶地很好地完成这项任务。
我们想创建一个可以接受任意数量的输入并将输出限制在0到1之间的模型。您可能会问,我们将如何做到这一点?答案很简单–一个神经元,具有乙状结肠激活功能。使用一个神经元,有一种方法可以衡量我们的预测输出与真实标签相比有多好。
这意味着我们计划建立一个具有神经网络思维方式的Logistic回归模型。
在本教程中,我将逐步指导您如何做到这一点,因此我还将磨练您对深度学习的直觉。
在本教程中,我们将使用优化算法(梯度下降)构建学习算法的一般体系结构,包括参数初始化、代价函数及其梯度计算。之后,我们将按照正确的顺序将上述三个函数集合到主模型函数中。总而言之,我们不会在您的代码中使用循环(For/While),除非这是最大化代码性能所必需的。
首先,导入此任务期间需要的所有包:
在本教程中,我将使用免费的狗与猫Kaggle数据集。你可以在这里下载:链接。我不会使用所有的图像,因为对于我们的模型来说,这是一个太大的数据集。在我的示例中,我将使用3000只猫和3000只狗作为训练模型。为了测试这个模型,我将使用500只猫和500只狗的图像。您可以从这里下载我的数据集:链接。LINK LINK
首先,我们应该定义我们的图像大小。因为我们数据集中的图像具有不同的大小,所以我们需要将它们的大小调整到某个特定的大小。我选择64px作为我的教程。然后我定义我的训练和测试图像位置。在最后一步中,我从训练和测试数据集中读取所有图像位置,并将它们作为列表放置:
接下来,我们需要创建一个简单的函数,我们将使用该函数从文件路径中读取每个图像,调整其大小并将其返回以供将来使用:
现在,我们将创建一个函数来准备数据以供进一步使用。在下面的函数中,我们将分离数据,因此,如果我们的图像带有一只狗,我们将给出索引1,如果将有一只猫,我们将给出索引0:
现在,让我们调用我们创建的函数来读取文件夹中的所有测试和训练图像:
现在,我们应该在形状的NumPy数组中重塑形状(行、列、通道)的图像(行、列、通道)(Rows∗Cools∗Channels,1)。在此之后,我们的训练(和测试)数据集将表示平面化图像:
让我们打印我们的数据形状:
打印完我们的形状后,我们应该会看到它们:
要表示彩色图像,必须为每个像素指定红色、绿色和蓝色通道(RGB),因此像素值实际上是从0到255的三个数字的向量。
机器学习中一个常见的预处理步骤是将我们的数据集居中并标准化,这意味着我们从每个示例中减去整个NumPy数组的平均值,然后将每个示例除以整个NumPy数组的标准差。但对于图片数据集,将数据集的每一行除以255(像素通道的最大值)会更简单、更方便,并且几乎同样有效:
完整教程代码:
现在我们知道了如何准备图像数据集。在下一个教程中,我们将创建学习算法的通用体系结构,并开始构建其功能。
最初发表于https://pylessons.com/Logistic-Regression-part4https://pylessons.com/Logistic-Regression-part4
原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/17/%e7%94%a8%e7%a5%9e%e7%bb%8f%e7%bd%91%e7%bb%9c%e6%80%9d%e7%bb%b4%e5%87%86%e5%a4%87logistic%e5%9b%9e%e5%bd%92%e6%95%b0%e6%8d%ae/