首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从零开始学keras(七)之kaggle猫狗分类器

特 别是在计算机视觉领域,许多预训练的模型(通常都是在 ImageNet 数据集上训练得到的)现在都可以公开下载,并可以用于在数据很少的情况下构建强大的视觉模型。这是下一节的内容。...本例中,虽然你只在不到参赛选手所用的 10% 的数据上训练模型,但结果也和这个精度相当接近。   ...:它生成了 150×150 的 RGB 图像[形状为 (20,150, 150, 3)]与二进制标签[形状为 (20,)]组成的批量。...我们将使用 fit_generator 方法来拟合,它在数据生成器上的效果和 fit 相同。...数据增强是从现有的训练样本中生成更多的训练数据,其方法是利用多种能够生成可信图像的随机变换来增加(augment)样本。其目标是,模型在训练时不会两次查看完全相同的图像。

1.2K10

深度学习实战-CNN猫狗识别

这样做的好处: 增大网络容量 减少特征图的尺寸 需要注意的是:猫狗分类是二分类问题,所以网络的最后一层是使用sigmoid激活的单一单元(大小为1的Dense层) 在网络中特征图的深度在逐渐增大(从32...它包含ImageDataGenerator类,可以快速创建Python生成器,将图形文件处理成张量批量 插播知识点:如何理解python中的生成器?...每个批量包含20个样本(批量的大小)。 生成器会不断地生成这些批量,不断地循环目标文件夹中的图像。 keras模型使用fit_generator方法来拟合生成器的效果。...模型在训练时候不会查看两个完全相同的图像 设置数据增强 In [26]: datagen = ImageDataGenerator( rotation_range=40, # 0-180的角度值...数据增强来训练网络的话,网络不会看到两次相同的输入。

69110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何训练一个神经网络

    150, 150, 3)] #与二进制标签[形状为 (20,)]组成的批量 train_generator = train_datagen.flow_from_directory( train_dir...=20, class_mode='categorical' ) # 利用批量生成器拟合模型 # steps_per_epoch 参数的作用:从生成器中抽取 # steps_per_epoch...,否则可能会报错 ImageDataGenerator类的简单介绍: 通过实时数据增强生成张量图像数据批次,并且可以循环迭代,我们知道在Keras中,当数据量很多的时候我们需要使用model.fit_generator...简单来说就是:ImageDataGenerator()是keras.preprocessing.image模块中的图片生成器,可以每一次给模型“喂”一个batch_size大小的样本数据,同时也可以在每一个批次中对这...总结起来就是两个点: (1)图片生成器,负责生成一个批次一个批次的图片,以生成器的形式给模型训练; (2)对每一个批次的训练图片,适时地进行数据增强处理(data augmentation); 详细的这个类的内容可以查看这篇文章

    46020

    计算机视觉中的深度学习

    generator的数据结果为150x150 RGB批量图片,尺寸为(20,150,150,3),二进制标签形状(20,)。...因为数据不断生成,Keras模型需要知道在声明一个epoch之前从发生器中抽取多少批量;steps_per_epoch参数:从生成器中生成 steps_per_epoch个批量数据;在经过steps_per_epoch...数据增强采用从现有训练样本生成更多训练数据的方法,通过大量随机变换来增加样本,从而产生新的可靠的图像样本。 目标是在训练时,模型将永远不会看到两张完全相同的图片。...,网络将永远不会看到两张相同的输入图片。...微调包括解冻用于特征提取的冻结模型基础的一些顶层,并联合训练模型的新添加部分(在这种情况下,全连接的分类器)和这些顶层。

    2.1K31

    机器学习实战--对亚马逊森林卫星照片进行分类(2)

    模型评估措施 在我们开始建模之前,我们必须选择一个模型的性能指标。 分类准确性通常适用于二进制分类任务,每个类中具有平衡数量的示例。...在这种情况下,我们既不使用二进制或多类分类任务; 相反,它是一个多标签分类任务,标签数量不均衡,有些使用比其他标签更重要。因此,Kaggle比赛组织选择了F-beta指标,特别是F2得分。...在这种情况下,损失学习曲线的曲线图表明,模型对训练数据集过度拟合,可能在epoch 20 / 50左右,尽管过度拟合似乎并没有对模型在测试数据集上的F-beta分数产生负面影响。 ?...在这种情况下,每个VGG块后应用20%的dropout,模型中分类器部分的全连通层后应用更大的dropout率为50%。。...这要求我们为训练和测试数据集提供单独的ImageDataGenerator实例,然后为各个数据生成器创建的列车和测试集的迭代器。

    86820

    Deep learning with Python 学习笔记(2)

    (只使用有效的窗口位置);"same" 表示“填充后输出的宽度和高度与输入相同”。...类,可以快速创建 Python 生成器,能够将硬盘上的图像文件自动转换为预处理好的张量批量 让模型对数据拟合 model.fit_generator(train_generator, steps_per_epoch...,需要指定validation_steps参数,来说明需要从验证生成器中抽取多少个批次用于评估 Keras保存模型 model.save('\*\*\*.h5') 一个使用CNN的猫狗分类Demo 数据集下载...从如上结果可以看出,我们的网络过拟合了,可以使用数据增强的方式来防止过拟合 数据增强是从现有的训练样本中生成更多的训练数据,其方法是利用多种能够生成可信图像的随机变换来增加(augment)样本。...其目标是,模型在训练时不会两次查看完全相同的图像。

    69110

    用AI训练AI:制作一个简单的猫狗识别模型

    ,什么样的是狗,这个事情就得自己动手做了,大模型总不能咔咔给你生成上万张图片出来起初考虑的是直接网上下图片,之前学习的时候是通过插件批量下载的,但考虑到训练猫狗识别模型应该很多人都做过了,那么互联网上应该有别人已经整理过的图片...如果你的图片并没有按照这种方式组织,而是所有的图片都直接放在一个train文件夹中,并且是通过文件名来区分(例如cat001.jpg, dog001.jpg),那么在使用ImageDataGenerator...GPT 的测试脚本随便从 test1 文件夹中照一张图片,运行得到正确的预测结果:最后,在 GPT 的帮助下,我们再来理解一下训练脚本每一步都做了什么事(代码详细注释版)import osimport...模块的一部分,用于实时地生成批量图像数据# 这个类通过在训练过程中对图像进行实时的数据增强来提高模型的泛化能力。...])# 使用 adam 优化器、binary_crossentropy 损失函数(因为这是一个二分类问题)以及准确度评估指标来编译模型model.compile(optimizer='adam',

    1.3K62

    机器学习 | 猫狗大战

    Keras 中有许多数据集,包括用来做二分类的 IMDB 数据集、多分类的路透社数据集、做回归的波士顿房价数据集等,而本文要介绍的是二分类的图片数据集,猫狗数据集,原始数据可以在 Kaggle 官网上进行下载...# 图像处理辅助工具的模块 # ImageDataGenerator 类,可以快速创建 Python 生成器,能够将硬盘上的图像文件自动转换为预处理好的张量批量。...loss=keras.losses.binary_crossentropy, metrics=['acc']) # 二分类所以使用二元交叉熵作为损失函数 利用批量生成器拟合模型 # 得出的结果是训练集和验证集上的损失和精度...过拟合的原因主要是因为训练样本相对较少(猫狗各 2000 个) 结语 我在学习的过程中,发现使用 Keras 自带的样本迭代器来训练时速度很慢,主要原因是:每次训练的时候,时间大部分消耗在 CPU 读取数据上...,而真正训练的时间并不是很长,之后会介绍几种方法,不仅能提升训练精度,也能让训练的时间可能的短,即使你没有 GPU 来加速 在本公众号回复 机器学习 即可获取猫狗大战的程序、数据集、模型、训练数据等!

    1.5K20

    图像数据不足时,你可以试试数据扩充

    但是良好的数据不会从天上掉下来,靠人工收集数据是一个非常费时费力的工作,关键是,在特定的领域,有效的数据很难获取,比如医学影像数据。...具体到图像分类任务中,在保持图像类别不变的前提下,可以对训练集中的每幅图像进行一下变换: 一定程度内的随机旋转、平移、缩放、裁剪、填充、左右翻转等,这些变换对应着同一个目标在不同角度的观察结果。...datagen.fit(train) 数据生成器本身实际上是一个迭代器,在请求时返回批量的图像样本。我们可以通过调用flow()函数来配置批量大小并获取批量图像。...X_batch, y_batch = datagen.flow(train, train, batch_size=32) 最后,我们可以使用数据生成器,必须调用fit_generator()函数并传入数据生成器和每个轮次的样本数以及要训练的轮次总数...,而不是在我们的模型上调用fit()函数。

    2K50

    指南:使用Keras和TensorFlow探索数据增强

    数据扩充是一种用于通过使用裁剪、填充、翻转等技术来增加数据量的策略。 数据扩充使模型对较小的变化更鲁棒,因此可以防止模型过度拟合。...Image Data Generator生成具有实时数据增强功能的批量tensor 图像数据。最好的部分是什么?只需一行代码! 生成器生成的输出图像将具有与输入图像相同的输出维度。...下面是一个辅助脚本,我们将使用它来可视化显示使用Image Data Generator类可以实现的所有功能。...Brightness_range指定用于随机选择一个亮度偏移值的范围。0.0的亮度对应的是绝对没有亮度,而1.0对应的是最大亮度。...这会在图像中产生某种“拉伸”,这在旋转中是无法看到的。 shear_range以度为单位指定倾斜角度。

    1.8K31

    TensorFlow 基础学习 - 4 (重点是调参)

    简而言之:训练集就是用来告诉神经网络模型"这就是马的样子"、"这就是人的样子"等数据。 这里需要注意的是,我们并没有明确地将图像标注为马或人。...我们将使用rmsprop作为优化器,学习率为0.001。在训练过程中,我们将希望监控分类精度。 NOTE.我们将使用学习率为0.001的rmsprop优化器。...在这种情况下,使用RMSprop优化算法比随机梯度下降(SGD)更可取,因为RMSprop可以为我们自动调整学习率。...总共需要两个生成器,有用于产生训练图像,一个用于产生验证图像。生成器将产生一批大小为300x300的图像及其标签(0或1)。...在Keras中,可以通过keras.preprocessing.image.ImageDataGenerator类使用rescale参数来实现归一化。

    73620

    如何使用机器学习来检测手机上的聊天屏幕截图

    因此想用机器学习来完成这项工作 理念 从普通图像中检测聊天屏幕截图的任务可以表述为经典的二进制图像分类问题!可以使用卷积神经网络(CNN)来完成这项工作。...由于这是一个二进制分类问题,因此我在这一层中使用了S形函数,该函数输出介于0到1之间的数字(p),表示输入图像属于“聊天”类别的概率(如果p≤0.5,则聊天否则为“否”聊天”)。...馈送数据 由于数据是以上述特定方式组织的,因此现在可以使用ImageDataGenerator类和Keras的flow_from_directory方法来扩充数据并将其输入模型。...这里需要一个优化器,因为学习无非就是通过更新模型的权重和偏差来优化成本函数。在这种情况下,选择了Adam优化器。成本函数是binary_crossentropy(因为这是二进制分类)。...https://github.com/Suji04/Chat_ScreenShot_Classifier 要使用此模型对手机上某个文件夹的所有图像进行分类, 只需要遍历该文件夹并将一次图像传递给该模型即可

    2.1K10

    关于深度学习系列笔记十二(关于猫狗判断实验)

    从实质上这些模型和前面的模型没有本质区别,唯一的区别是ImageDataGenerator的应用,能够把图片直接转换为浮点数向量。...在利用数据增强生成器训练卷积神经网络后,训练集和验证集的准确率基本是同步的,最高上升到78% 代码示例 import os, shutil def initdata(): #原始数据集解压目录的两个路径...# 它生成了150×150的RGB图像[形状为(20, 150, 150, 3)]与二进制标签[形状为(20, )]组成的批量。...# 因为网络最后一层是单一sigmoid单元,所以我们将使用二元交叉熵作为损失函数 #为模型选择正确的最后一层激活和损失函数 #问题类型 最后一层激活 损失函数 #二分类问题 sigmoid...# 在利用数据增强生成器训练卷积神经网络后,训练集和验证集的准确率基本是同步的,最高上升到78% #150s 2s/step - loss: 0.0340 - acc: 0.9900 - val_loss

    47920

    使用用测试时数据增强(TTA)提高预测结果

    完成本文章后,您将知道: TTA是数据增广技术的应用,通常用于在训练中进行预测。 如何在Keras中从头开始实现测试时增强。 如何使用TTA来提高卷积神经网络模型在标准图像分类任务中的性能。...在图像多类分类的情况下,对每幅图像进行预测,每个预测包含属于每类图像的概率。...CIFAR-10是一个易于理解的数据集,广泛用于机器学习领域的计算机视觉算法的基准测试。 我们还将使用卷积神经网络(CNN)模型,该模型能够在这个问题上获得良好(优于随机)的结果,但不是最先进的结果。...该模型有一个卷积层,包含32个滤波器映射,使用整流线性激活的3×3内核,“相同的”填充,因此输出与输入的大小和权重初始化相同。接下来是批处理规范化层和最大池化层。...如何使用测试时间增强来提高卷积神经网络模型在标准图像分类任务中的性能。

    3.4K20

    轻松使用TensorFlow进行数据增强

    当我们没有大量不同的训练数据时,我们该怎么办?这是在TensorFlow中使用数据增强在模型训练期间执行内存中图像转换以帮助克服此数据障碍的快速介绍。 ?...图像分类的成功至少在很大程度上受到大量可用训练数据的驱动。暂时不考虑过拟合之类的问题,训练的图像数据越多,建立有效模型的机会就越大。 但是,如果我们没有大量的培训数据,我们该怎么办?...如果我们在大量数据上训练模型,则可以优化结果以对少量数据有效。 数据扩充是现有训练数据集的大小和多样性的增加,而无需手动收集任何新数据。...如果您正在使用TensorFlow,则可能已经使用了ImageDataGenerator简单的方法来缩放现有图像,而没有进行任何其他扩充。可能看起来像这样: ?...,如果要创建验证生成器),例如,使用选项,然后使用fit_generator在训练过程中流向您网络的这些增强图像来训练模型。

    86720

    图像训练样本量少时的数据增强技术

    一种方法是利用预训练好的模型,也就是使用另一个在大量样本下获得足够训练的模型,只要这个模型的训练数据集足够大,而且够通用,那么可以理解为其学到的特征空间层次结构能够有效地作为视觉世界的通用模型基础。...当然,在实际操作中,我们需要保留网络除了分类器部分的前置层(卷积基)及其权重不变,只训练我们新的分类器,这也很好理解,毕竟要利用它的基础嘛。...方法是使用一些方法,来随机变换生成一些可信图像,这些通过随机变换生成的图像,要保证从逻辑上不会给模型辨认带来困扰,也就是从分类的角度应该依然属于其原本图像同一类,但是又要与原本的图像有一些区别,这样模型在训练时就不会两次看到完全相同的图像...在循环中这个类会不断地随机组合变换来生成新图像,我们把生成的新图像保存下来,并且设置只生成四张就停,这里比如设置停止条件,否则它会一直生成下去的。...这样样本量就翻了四倍啦,经过实验,在猫狗分类模型上能将精度从72%提升到82%,提升的效果还是非常明显的,所以有这方面困扰的可以试一下。 ----

    1.6K30

    keras实战项目——CIFAR-10 图像分类

    我们可以简单的将深度神经网络的模块,分成以下的三个部分,即深度神经网络上游的基于生成器的 输入模块,深度神经网络本身,以及深度神经网络下游基于批量梯度下降算法的 凸优化模块: 批量输入模块 各种深度学习零件搭建的深度神经网络...我们在第一讲的最后部分提高深度学习模型预测的准确性部分,提了一句 “使用更复杂的深度学习网络,在图片中挖出数以百万计的特征”。这种“更复杂的神经网络”,指的就是卷积神经网络。...事实上,这几年深度学习领域的新进展,就是以这个想法为基础产生的。我们可以使用更复杂的深度学习网络,在图片中挖出数以百万计的特征。 这时候,问题也就来了。机器学习过程中,是需要一个输入文件的。...传统的机器学习方法拿到这个矩阵时,受限于计算机内存大小的限制,通常是无从下手的。也就是说,传统机器学习方法,除了在多数情况下不会自动产生这么多的特征以外,模型的训练也会是一个大问题。...,如何使用基于批量梯度下降算法的凸优化模块,优化模型参数。

    74510

    基于OpenCV的棋盘图像识别

    本期我们将一起学习如何使用计算机视觉技术识别棋子及其在棋盘上的位置 我们利用计算机视觉技术和卷积神经网络(CNN)为这个项目创建分类算法,并确定棋子在棋盘上的位置。...完整的棋盘检测过程 03. 棋盘分类 项目伊始,我们想使用Keras / TensorFlow创建CNN模型并对棋子进行分类。...但是,在创建数据集之后,仅考虑CNN的大小,单靠CNN就无法获得想要的结果。...为了提高数据的有效性,我使用了ImageDataGenerator来扩展原始图像并将模型暴露给不同版本的数据。...任何大于10的数均不会使验证准确性的提高,也不会增加训练与验证准确性之间的差异。总结:转移学习使我们可以充分利用深度学习在图像分类中的优势,而无需大型数据集。 04.

    7.4K20

    keras系列︱图像多分类训练与利用bottleneck features进行微调(三)

    笔者先学的caffe,从使用来看,比caffe简单超级多,非常好用,特别是重新训练一个模型,但是呢,在fine-tuning的时候,遇到了很多问题,对新手比较棘手。...]) # 优化器rmsprop:除学习率可调整外,建议保持优化器的其他默认参数不变 二分类的参数与多分类的参数设置有些区别。.... 4、图像预处理 然后我们开始准备数据,使用.flow_from_directory()来从我们的jpgs图片中直接产生数据和标签。...flow_from_directory(directory): 以文件夹路径为参数,生成经过数据提升/归一化后的数据,在一个无限循环中无限产生batch数据 train_datagen = ImageDataGenerator...三、fine-tuning方式一:使用预训练网络的bottleneck特征 本节主要来源于:面向小数据集构建图像分类模型 当然,keras中文版里面漏洞一大堆… 没有跟着版本更新,导致很多内容都是不对的

    4.4K80
    领券