猫狗分类-简单CNN

文章

      • 1.导入第三方库
      • 2.定义模型
      • 3.训练数据和测试数据生成
      • 4.训练模型

猫狗分类的数据集可以查看图像数据预处理。
代码运行平台为jupyter-notebook,文章中的代码块,也是按照jupyter-notebook中的划分顺序进行书写的,运行文章代码,直接分单元粘入到jupyter-notebook即可。
简单CNN实现猫狗分类代码:

1.导入第三方库

from keras.models import Sequential
from keras.layers import Convolution2D,MaxPooling2D
from keras.layers import Activation,Dropout,Flatten,Dense
from tensorflow.keras.optimizers import Adam
from keras.preprocessing.image import ImageDataGenerator
import os

2.定义模型

# 定义模型
model = Sequential()
model.add(Convolution2D(input_shape=(150,150,3),filters=32,kernel_size=3,strides=1,padding="same",activation="relu"))
model.add(Convolution2D(filters=32,kernel_size=3,strides=1,padding="same",activation="relu"))
model.add(MaxPooling2D(pool_size=2,strides=2,padding="valid"))model.add(Convolution2D(filters=64,kernel_size=3,strides=1,padding="same",activation="relu"))
model.add(Convolution2D(filters=64,kernel_size=3,strides=1,padding="same",activation="relu"))
model.add(MaxPooling2D(pool_size=2,strides=2,padding="valid"))model.add(Convolution2D(filters=128,kernel_size=3,strides=1,padding="same",activation="relu"))
model.add(Convolution2D(filters=128,kernel_size=3,strides=1,padding="same",activation="relu"))
model.add(MaxPooling2D(pool_size=2,strides=2,padding="valid"))model.add(Flatten())
model.add(Dense(64,activation="relu"))
model.add(Dropout(0.5))
model.add(Dense(2,activation="softmax"))# 定义优化器
adam = Adam(lr=1e-4)# 定义优化器,loss_function,训练过程中计算准确率
model.compile(optimizer=adam,loss="categorical_crossentropy",metrics=['accuracy']
)# 查看模型的结构
model.summary()

运行结果:
在这里插入图片描述

3.训练数据和测试数据生成

# 训练集数据生成
train_datagen = ImageDataGenerator(rescale=1./255,# 归一化处理shear_range=0.2,# 随机裁剪zoom_range=0.2,# 图片放大horizontal_flip=True # 水平翻转
)
# 测试集数据处理
test_datagen = ImageDataGenerator(rescale=1./255)

测试集通常不需要做复杂的数据生成,测试集只是未来测试才用,而训练集时为了
做数据生成是为了:

  • 1.增加数据量,使得图片各种各样
  • 2.增加模型的鲁棒性,使其泛化性更好

flow_from_directory:

  • directory:目标文件夹路径,对于每一个类,该文件夹都要包含一个子文件夹.子文件夹中任何JPG、PNG、BNP、PPM的图片都会被生成器使用
  • target_size:整数tuple,默认为(256,256).图像将被resize成该尺寸
  • color_mode:颜色模式,为"grayscale",“rgb"之一,默认为"rgb”.代表这些图片是否会被转换为单通道或三通道的图片.
  • classes:可选参数,为子文件夹的列表,如[‘dogs’,‘cats’]默认为None.若未提供,则该类别列表将从directory下的子文件夹名称/结构自动推断,每一个子文件夹都会被认为是一个新的类。(类别的顺序将按照字母表顺序映射到标签值)。通过属性class_indices可获得文件夹名与类的序号的对应字典。
  • class_mode:“categorical”,“binary”,“sparse"或None之一,默认为"categorical”.该参数决定了返回的标签数组的式,"categorical"会返回2D的one-hot编码标签,"binary"返回1D的二值标签."sparse"返回1D的整数标签,如果为None则不返回任何标签,生成器将仅仅生成batch数据,这种情况在使用model.predict_generator()和model.evaluate_generator()等函数时会用到.
  • batch_size:batch数据的大小,默认为32
  • shuffle:是否打乱数据,默认为True
  • seed:可选参数,打乱数据和进行变换时的随机数种子
batch_size = 32
# 生成训练数据
train_generator = train_datagen.flow_from_directory("../input/cat-and-dog-classify/train/train",# 训练数据路径target_size=(150,150),# 设置图片大小batch_size=batch_size # 批次大小
)
# 测试数据
test_generator = test_datagen.flow_from_directory("../input/cat-and-dog-classify/test/test",# 训练数据路径target_size=(150,150),# 设置图片大小batch_size=batch_size # 批次大小
)
# 统计文件个数
totalFileCount_train = sum([len(files) for root,dirs,files in os.walk("../input/cat-and-dog-classify/train/train")])
totalFileCount_test = sum([len(files) for root,dirs,files in os.walk("../input/cat-and-dog-classify/test/test")])

4.训练模型

model.fit_generator(train_generator,steps_per_epoch=totalFileCount_train/batch_size,epochs=50,validation_data=test_generator,validation_steps=totalFileCount_train/batch_size
)# 保存模型
model.save("CNN1.h5")

这里面有一个steps_per_epoch=totalFileCount_train/batch_size这个是计算每批次的总步数,一批次的总步数等于数据量除以batch_size。
运行结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/43252.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于卷积神经网络VGG的猫狗识别

!有需要本项目的实验源码的可以私信博主! 摘要:随着大数据时代的到来,深度学习、数据挖掘、图像处理等已经成为了一个热门研究方向。深度学习是一个复杂的机器学习算法,在语音和图像识别方面取得的效果,远远…

宠物交易平台的设计

国内宠物行业的快速发展,人们为了能够更加方便地管理宠物交易,宠物交易平台被人们开发出来从而更好地方便管理宠物交易,一个完美的宠物交易平台已经成为各个宠物店的追求目标。 本系统利用SSM技术进行开发宠物交易平台是未来的趋势。该系统使…

深度学习实现猫狗分类

本文使用vgg网络实现对猫狗分类。 可以当做图像分类的一个baseline。 一、前期工作 数据:直接到kaggle上下载相应的数据集即可。 1.导入模块 # 数据import torchfrom torchvision.datasets import ImageFolderimport torch.utils.data as Datafrom torchvision impo…

深度学习--猫狗图像分类

1、环境介绍 python3.6,tensorflow1.4版本,pycharm编译器 2、函数库导入 import cv2 import matplotlib.pyplot as plt import os, PIL, pathlib import numpy as np from tensorflow.keras.layers import Conv2D,MaxPooling2D,Dropout,Dense,Flatten,A…

Kaggle-猫狗图像分类全流程实践(支持迁移学习和其他分类任务迁移)

1、insatll environment|安装环境 !pip install torchtoolbox !pip install torchsummary2、import package|导入三方库 # 基础库 import os import time import random import shutil import pandas as pd import csv from math import exp from PIL import Image import nu…

神经网络实战--使用迁移学习完成猫狗分类

前言: Hello大家好,我是Dream。 今天来学习一下如何使用基于tensorflow和keras的迁移学习完成猫狗分类,欢迎大家一起前来探讨学习~ 本文目录: 一、加载数据集1.调用库函数2.加载数据集3.数据集管理 二、猫狗数据集介绍1.猫狗数据集…

基于Pytorch的猫狗分类

无偿分享~ 猫狗二分类文件下载地址 在下一章说 猫狗分类这个真是困扰我好几天,找了好多资料都是以TensorFlow的猫狗分类,但我们要求的是以pytorch的猫狗分类。刚开始我找到了也运行成功了觉得可以了,最后看了一眼实践要求傻眼了,…

猫舍 靶场

目标url:http://117.41.229.122:8003/?id1 第一步,判断是否存在sql注入漏洞 构造 ?id1 and 11 ,回车 页面返回正常 构造 ?id1 and 12 ,回车 页面不正常,初步判断这里 可能 存在一个注入漏洞 第二步:判断字段数 构造 ?id1 and 11 order…

Olaparib 有望治疗 UBQLN4 过表达型肿瘤

基因组的不稳定性是人类遗传病和癌症的一大特点。在这篇文章当中,研究人员在常染色体隐性遗传病家族中发现了有害的 UBQLN4 突变。蛋白酶体穿梭因子UBQLN4 被 ATM 磷酸化并与泛素化的 MRE11 相互作用,从而介导早期的同源重组修复 (HRR)。在体外和体内实验…

神经内分泌肿瘤治疗新进展,神经内分泌肿瘤进展

脑肿瘤复发 。 颅内及椎管内肿瘤【概述】1.原发性肿瘤:起源于头颅、椎管内各种组织结构,如颅骨、脑膜、脑组织、颅神经、脑血管、脑垂体、松果体、脉络丛、颅内结缔组织、胚胎残余组织、脊膜、脊神经、脊髓、脊髓血管及脂肪组织等&#xff…

Nature Cancer | 发现非肿瘤药物的抗癌潜力

今天给大家介绍美国Broad Institute of MIT and Harvard的 Todd R. Golub团队发表在Nature cancer上的一篇文章:“Discovering the anticancer potential of nononcology drugs by systematic viability profiling“。在这个研究中,作者试图创建一个公共…

文献分享:定义的肿瘤抗原特异性T细胞增强了个性化的TCR-T细胞治疗和免疫治疗反应的预测

《Defifined tumor antigen-specifific T cells potentiate personalized TCR-T cell therapy and prediction of immunotherapy response》 简介 从患者体内自然发生的肿瘤抗原特异性T(Tas)细胞中提取的T细胞受体(TCRs)设计的T细胞将靶向其肿瘤中的个人TSAs。为了建立这种个性…

Irinotecan和vandetanib在治疗胰腺癌患者时产生协同效应(Irinotecan and vandetanib create synergies for t)

1. 摘要 背景:在胰腺癌(PAAD)中最常突变的基因对是KRAS和TP53,文章的目标是阐明KRAS/TP53突变的多组学和分子动力学图景,并为KRAS和TP53突变的PAAD患者获得有前景的新药物。此外,文章根据多组学数据尝试发现KRAS与TP53之间可能的联系。    …

癌症/肿瘤免疫治疗最新研究进展(2022年4月)

近年来,免疫治疗一直都是国内外肿瘤治疗研究领域的火爆热点,可以称之为革命性的突破。 除了大家熟知的PD-1/PD-L1已经先后斩获了包括肺癌、胃肠道肿瘤、乳腺癌、泌尿系统肿瘤、皮肤癌、淋巴瘤等在内的近20大实体肿瘤,成为免疫治疗的第一张王牌…

MCE | 癌症诊断和靶向治疗的“遍地开花”

据研究报道,很多癌细胞分泌的外泌体 (Exosome) 比正常细胞分泌的多 10 倍以上。外泌体参与了癌症的发生、进展、转移和耐药性,并通过转运蛋白和核酸,建立与肿瘤微环境的联系。例如,外泌体可导致免疫逃逸,癌细胞的免疫逃…

泛癌分析·找出各个癌症的预后相关基因

泛癌分析找出各个癌症的预后相关基因 ` 其他相关文章: 万物皆可pan分析高分文章登山梯for循环的熟练操作 前言 pan分析的第二篇我想写一下如何在TCGA整个基因集内实现COX单因素分析,将所有的预后相关基因筛选出来,同时得到这些基因的基本参数、统计量等信息。这样的分析的…

饮食干预减轻癌症治疗相关症状和毒性

现代化疗,放射疗法在摧毁癌细胞的同时,对健康细胞也造成了伤害,引发相关毒性,反应例如便秘,腹泻,疲劳,恶心,呕吐等。 癌症患者的营养状况可能是癌症治疗相关毒性的核心决定因素&…

边缘计算,是在炒概念吗?

导读:边缘计算概念刚出来的时候,很多人的第一反应是“这是哪个行业组织或者公司为了拉动市场需求而创造出来的新词汇吧?” 边缘计算究竟是什么?为什么会有边缘计算?它是一个全新的概念吗?谁在担任边缘计算的…

移动边缘计算笔记

该篇文章是阅读《移动边缘计算综述》所整理的笔记和心得,仅供参考,欢迎指正。 移动边缘计算(MEC),mobile edgecomputing,后来慢慢过渡为“多接入边缘计算”(multi-access edge computing&#x…

关于边缘计算和边云协同,看这一篇就够了~

几年前,大多数人都期望将物联网部署至云端,这的确可以给个人用户带来便捷的使用体验,但构建企业级的物联网解决方案,仍然需要采用云计算和边缘计算的结合方案。与纯粹的云端解决方案相比,包含边缘侧的混合方案可以减少…