CNN神经网络猫狗分类经典案例

news2024/11/24 2:07:26

因为有猫和狗两类,所有在data/train目录下,再建两个目录data/train/dog和data/train/cat:

同理,其他的data/validation和data/test目录下,再建两个目录:cat和data/,在cat和dog目录下,放置对应的图片。

分类建立完成后,Keras会在ImageDataGenerator迭代过程中,自动的为data/train,data/test,data/validation内部生产训练标签,标签依据就是在data/train,data/test,data/validation下面的分类目录,本例是/dog和/cat目录文件夹作为两分类。

import numpy as np

import matplotlib.pyplot as plt

from keras.preprocessing.image import ImageDataGenerator, image

from keras import layers

from keras import models

from keras.layers import Dropout

from keras import optimizers

from keras.models import load_model

train_dir = ‘./data/train/’

validation_dir = ‘./data/validation/’

model_file_name = ‘cat_dog_model.h5’

def init_model():

model = models.Sequential()

KERNEL_SIZE = (3, 3)

model.add(layers.Conv2D(filters=32, kernel_size=KERNEL_SIZE, activation=‘relu’, input_shape=(150, 150, 3)))

model.add(layers.MaxPooling2D((2, 2)))

model.add(layers.Conv2D(filters=64, kernel_size=KERNEL_SIZE, activation=‘relu’))

model.add(layers.MaxPooling2D((2, 2)))

model.add(layers.Conv2D(filters=128, kernel_size=KERNEL_SIZE, activation=‘relu’))

model.add(layers.MaxPooling2D((2, 2)))

model.add(layers.Conv2D(filters=128, kernel_size=KERNEL_SIZE, activation=‘relu’))

model.add(layers.MaxPooling2D((2, 2)))

model.add(layers.Flatten())

model.add(layers.Dense(512, activation=‘relu’))

model.add(Dropout(0.5))

model.add(layers.Dense(1, activation=‘sigmoid’))

model.compile(loss=‘binary_crossentropy’,

optimizer=optimizers.RMSprop(lr=1e-3),

metrics=[‘accuracy’])

return model

def fig_loss(history):

history_dict = history.history

loss_values = history_dict[‘loss’]

val_loss_values = history_dict[‘val_loss’]

epochs = range(1, len(loss_values) + 1)

plt.plot(epochs, loss_values, ‘b’, label=‘Training loss’)

plt.plot(epochs, val_loss_values, ‘r’, label=‘Validation loss’)

plt.title(‘Training and validation loss’)

plt.xlabel(‘Epochs’)

plt.ylabel(‘Loss’)

plt.legend()

plt.grid()

plt.show()

def fig_acc(history):

history_dict = history.history

acc = history_dict[‘accuracy’]

val_acc = history_dict[‘val_accuracy’]

epochs = range(1, len(acc) + 1)

plt.plot(epochs, acc, ‘g’, label=‘Training acc’)

plt.plot(epochs, val_acc, ‘r’, label=‘Validation acc’)

plt.title(‘Training and validation acc
uracy’)

plt.xlabel(‘Epochs’)

plt.ylabel(‘Accuracy’)

plt.legend()

plt.grid()

plt.show()

def fit(model):

train_datagen = ImageDataGenerator(rescale=1. / 255)

validation_datagen = ImageDataGenerator(rescale=1. / 255)

train_generator = train_datagen.flow_from_directory(

train_dir,

target_size=(150, 150),

batch_size=256,

class_mode=‘binary’)

validation_generator = validation_datagen.flow_from_directory(

validation_dir,

target_size=(150, 150),

batch_size=64,

class_mode=‘binary’)

history = model.fit_generator(

train_generator,

steps_per_epoch=,

epochs=10,

validation_data=validation_generator,

validation_steps=,

)

model.save(model_file_name)

fig_loss(history)

fig_acc(history)

def predict():

model = load_model(model_file_name)

print(model.summary())

img_path = ‘./data/test/cat/cat.4021.jpg’

img = image.load_img(img_path, target_size=(150, 150))

img_tensor = image.img_to_array(img)

img_tensor = img_tensor / 255

img_tensor = np.expand_dims(img_tensor, axis=0)

其形状为 (1, 150, 150, 3)

plt.imshow(img_tensor[0])

plt.show()

result = model.predict(img_tensor)

print(result)

画出count个预测结果和图像

def fig_predict_result(model, count):

test_datagen = ImageDataGenerator(rescale=1. / 255)

test_generator = test_datagen.flow_from_directory(

‘./data/test/’,

target_size=(150, 150),

batch_size=256,

class_mode=‘binary’)

text_labels = []

plt.figure(figsize=(30, 20))

迭代器可以迭代很多条数据,但我这里只取第一个结果看看

for batch, label in test_generator:

pred = model.predict(batch)

for i in range(count):

true_reuslt = label[i]

print(true_reuslt)

if pred[i] > 0.5:

最后

小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

资料⬅专栏获取

最后

小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

[外链图片转存中…(img-uWdSHaJ6-1719050756344)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

资料⬅专栏获取

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue82-组件内路由守卫

一、组件内路由守卫的定义 在一个组件里面去写路由守卫&#xff0c;而不是在路由配置文件index.js中去写。 此时&#xff0c;该路由守卫是改组件所独有的&#xff01; 只有通过路由规则进入的方式&#xff0c;才会调这两个函数&#xff0c;否则&#xff0c;若是只是用<Ab…

腰背肌筋膜炎怎么治疗最有效

腰背肌筋膜炎的治疗方法主要包括以下几种&#xff1a; 1、休息和物理治疗&#xff1a; 确保充足的休息&#xff0c;避免过度劳累&#xff0c;减少腰背部肌肉的负担。 物理治疗&#xff0c;如热敷或冷敷&#xff0c;可以缓解疼痛和肌肉紧张。热敷可以使用热水袋、热毛巾或电热垫…

读《文明之光》第2册总结

《文明之光》系列大致按照从地球诞生到近现代的顺序讲述了人类文明进程的各个阶段&#xff0c;每个章节相对独立&#xff0c;全景式地展现了人类文明发展历程中的多样性。《文明之光》系列第二册讲述了从近代科学兴起&#xff0c;到工业革命时代&#xff0c;以及原子能应用这一…

深入源码设计!Vue3.js核心API——Computed实现原理

如果您觉得这篇文章有帮助的话&#xff01;给个点赞和评论支持下吧&#xff0c;感谢~ 作者&#xff1a;前端小王hs 阿里云社区博客专家/清华大学出版社签约作者/csdn百万访问前端博主/B站千粉前端up主 此篇文章是博主于2022年学习《Vue.js设计与实现》时的笔记整理而来 书籍&a…

linux普通: rocketmq的安装测试与可视化界面安装,git的 (linux) 安装

全文目录,一步到位 1.前言简介1.1 专栏传送门(rabbitmq) 2. rocketmq使用及安装2.0 开放端口2.1 rocketmq版本说明2.2 具体操作2.2.1 修改文件2.2.2 具体启动指令ps: 查看日志 2.3.3 jps查看java进程2.3.4 测试运行情况> 步骤一: 临时指定nameserver注册中心位置> 步骤二…

Nginx 搭建域名访问环境

1.Nginx配置文件 server {listen 80;server_name www.gulimall.com;#charset koi8-r;#access_log /var/log/nginx/log/host.access.log main;location / {proxy_pass http://192.168.232.1:10001;}#error_page 404 /404.html;# redirect server error p…

学习redis根本不愁,简单明了

一、redis是什么&#xff1f; 在认识redis之前&#xff0c;我们先说一下什么是NoSQL&#xff1f; 1. NoSQL NoSQL&#xff0c;顾名思义就是不仅仅是SQL&#xff0c;泛指非关系数据库。 2. NoSQL的四大分类 &#xff08;1&#xff09;键值&#xff08;key-value&#xff09;存储…

程序猿成长之路之数据挖掘篇——决策树分类算法(1)——信息熵和信息增益

决策树不仅在人工智能领域发挥着他的作用&#xff0c;而且在数据挖掘中也在分类领域中独占鳌头。了解决策树的思想是学习数据挖掘中的分类算法的关键&#xff0c;也是学习分类算法的基础。 什么是决策树 用术语来说&#xff0c;决策树&#xff08;Decision Tree&#xff09;是…

写代码必用字体

下载链接 字体下载链接 使用情况/截图 软件&#xff1a;DEV-CPP 系统&#xff1a;Win10专业版 自带判等、大于、小于等符号的专属字体

微信小程序开发---自定义底部tabBar

自定义tabBar注意事项&#xff1a; 在自定义 tabBar 模式下 &#xff0c;为了保证低版本兼容以及区分哪些页面是 tab 页&#xff0c;app.json文件中 tabBar 的相关配置项需完整声明&#xff0c;但这些字段不会作用于自定义 tabBar 的渲染。所有 tabBar 的样式都由该自定义组件…

java:JWT的简单例子

【pom.xml】 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.3.12.RELEASE</version> </dependency> <dependency><groupId>org.springf…

Hadoop 2.0 大家族(三)

目录 五、Hive&#xff08;一&#xff09;Hive简介&#xff08;二&#xff09;Hive入门 六、Oozie&#xff08;一&#xff09;Oozie简介&#xff08;二&#xff09;Oozie入门 五、Hive Hive是一个构建在Hadoop上的数据仓库框架&#xff0c;它起源于Facebook内部信息处理平台。H…

java基于ssm+jsp快递管理系统源码(适合新手)

在管理信息系统的生命周期中&#xff0c;仅过了需求分析、系统设计等阶段之后&#xff0c;便开始了系统实施阶段。在系统分析和设计阶段&#xff0c;系统开发工作主要是集中在逻辑、功能和技术设计上&#xff0c;系统实施阶段要继承此前面各个阶段的工作成果&#xff0c;将技术…

钡铼BL110在智慧气象站实现Modbus转MQTT无线接入主流云

随着物联网&#xff08;IoT&#xff09;技术的发展&#xff0c;各行各业都在积极探索将智能设备与云平台相结合&#xff0c;以提升系统的智能化和自动化水平。智慧气象站作为其中重要的一环&#xff0c;通过实时监测环境数据&#xff0c;为农业、交通、航空等行业提供精准的气象…

FPGA 690T 高速存储设计

高速存储设计会有各种需求的考虑&#xff0c;那么对应的方案也不完全相同&#xff0c;这篇文章出一期纯FPGA实现的高速存储方案。用纯fpga实现高速存储板卡有易国产化&#xff0c;功耗低和体积小等特点&#xff0c;缺点就是灵活性不是很强&#xff0c;实现标准ext4和nfs文件系统…

AI大模型日报#0622:Claude 3.5 Sonnet超越GPT-4o、盘古大模型跳级发布、松鼠AI多模态教育大模型

导读&#xff1a;AI大模型日报&#xff0c;爬虫LLM自动生成&#xff0c;一文览尽每日AI大模型要点资讯&#xff01;目前采用“文心一言”&#xff08;ERNIE-4.0-8K-latest&#xff09;生成了今日要点以及每条资讯的摘要。欢迎阅读&#xff01;《AI大模型日报》今日要点&#xf…

不同版本的 Rocky Linux 快速更换阿里镜像源

环境&#xff1a;兼容 Rocky Linux 任意版本。 搞服务器系统从 CentOS 折腾到 Rocky Linux&#xff0c;然后又折腾到 Alma Linux&#xff1b;最近因为 RKE2 没有做 Alma Linux 的兼容性&#xff0c;又折腾到了 Rocky Linux &#xff0c;真的是一把鼻涕一把泪呀。但是实在是不理…

关于jupyter notebook的使用经验

jupyter notebook 第一点&#xff0c;调整每次打开jupyter notebook的时候的位置第二点&#xff0c;如何设置jupyter notebook可以使用本地anaconda创建的虚拟环境呢&#xff1f;第三点&#xff0c;使用jupyter notebook的技巧 以下三点都是独立的&#xff0c;可以根据自己的需…

Web项目部署后浏览器刷新返回Nginx的404错误对应解决方案

data: 2024/6/22 16:05:34 周六 limou3434 叠甲&#xff1a;以下文章主要是依靠我的实际编码学习中总结出来的经验之谈&#xff0c;求逻辑自洽&#xff0c;不能百分百保证正确&#xff0c;有错误、未定义、不合适的内容请尽情指出&#xff01; 文章目录 1.源头2.排错3.原因4.解…

政务大厅引导系统:AR、VR技术革新引领政务服务体验升级

一、传统政务大厅面临的普遍痛点 随着城市的发展和政务服务需求的增长&#xff0c;传统的政务大厅面临着诸多挑战和痛点&#xff1a; 信息不对称&#xff1a;政务大厅内各部门信息分散&#xff0c;群众难以快速获取全面准确的服务信息&#xff0c;导致办事效率低下。 办事流…