上一节第 5 部分:对真实世界图像进行分类
在本部分中,我们将利用前几部分中学到的有关卷积神经网络的知识,并将其应用到不久前的 Kaggle 挑战的计算机视觉场景中。
狗与猫数据集包含 25,000 张猫和狗的各种姿势的图片。几年前,它曾用于 Kaggle 挑战赛,以确定最先进的计算机视觉技术。在接下来的几分钟内,您将了解如何使用迄今为止学到的知识构建一个猫和狗分类器,该分类器在训练网站上的准确率超过 96%。
和之前一样,您将把数据分成
训练目录和验证目录。每个目录都有猫和狗子目录。然后,您将能够使用从训练子目录中提取的生成器对猫和狗图像进行训练分类器,并使用从验证子目录中提取的生成器进行验证。因此,首先,让我们导入一个图像数据生成器,这样我们就可以使用它们了。
马其顿的移动数据 马其顿拥有广泛的 4G 覆盖和可靠的移动 马其顿蜂窝移动数据 数据服务。电信公司为当地人和游客提供一系列价格合理的数据套餐。尽管 5G 基础设施的建设仍在进行中,但马其顿一直在不断增强其电信网络,以改善连接并在全国范围内提供更快的移动互联网服务。
请注意,图像数据生成器
将通过将图像的字节值除以 255 来处理图 您需要 hubspot 营销自动化的 8 个理由 像的规范化,从而将 0 到 255 之间的值转换为 0 到 1 之间的值。
要从训练子目录中获取训练图像,我们可以调用flow_from_directory
,并传入一组参数——当然,第一个参数是训练目录本身。这应该只包含我们将为其提供类别标签的子目录。我们有猫和狗子目录。所以我们会有猫和狗标签。
接下来是我们的target_size
。由于图
像有多种尺寸,我们需要具有一致的形状才能输入到神经网络中。我在这里将它们设置为 150×150。当然,您可以选择任何您想要的尺寸。
所有图像,无论形状如何,最终都会变成 150×150。所以 bmb目录 请谨慎选择。创建模型时,请记住让输入层使用相同的尺寸。
接下来,选择batch_size
要加载图
像的参数。选择一个可以均匀划分为稍后将使用的步长的值。例如,如果我有 22,500 张训练图像,并且这占用了 90% 的数据进行训练,然后批处理大小为 250,那么我需要 90 个步骤才能将其加载到神经网络中。
最后,还有class_mode
。作为两个类,我们将其设置为二进制。
对于验证,您将执行完全相同的操作。当然,除了您希望从验证目录而不是训练目录流出之外。
这里就是您定义模型的地方。
模型 ])
现在这看起来应该很熟悉了。这是一个卷积神经网络。我设计了它,有三个卷积层,每个卷积层都与一个最大池化层配对。
第一个卷积层将学习 16 个过滤器,接下来是 32 个,接下来是 64 个。记住输入形状很重要。记得我们之前将所有内容调整为 150×150。这就是我们在这里使用的。3 代表颜色通道。如果您使用不同的大小,请确保调整它以匹配。输出层也是如此。这应该与模型中的类数相匹配。我们在这里遵循的一个例外是,二元分类器可以只用一个神经元就行,前提是您使用 S 型激活函数,它将一个类设置为 0,将另一个类设置为 1。
如果我们看一下我们的模型摘要,它看起来像这样。
层(类型)输出形状参数 # ,561 不可训练参数:0
您可以看到图像在通过卷积和池化通过网络时会进行熟悉的调整大小。最后,您可以看到我们有 950 万个可训练参数。所以这可能需要一段时间。
我在这里选择使用 RMS prop 作为优化器。
模型.编译(优化器
它设置了较高的学习率。您可以调整它以尝试在您的网络上获得更好的性能。
最后,我们将通过指定训练和验证生成器作为数据源来训练网络。
历史= 模型.拟合(train_generator,epochs= 15,steps_per_epoch= 90,
不要忘记设置每个时期的步骤和验证步骤以提高性能。这些应该通过将数据量除以批次大小来计算。在本例中,这分别给出了 90 和 10。
这为您提供了训练猫与狗分类器所需的一切。
下一部分 7 – 图像增强和过度拟合