1.数据集介绍:(需要数据集可以在下面留言)

数据集一共有猫图片:6000张,有狗图片:6000张。图片已经被命名为:0.1.jpg-0.6000.jpg(猫);1.0.jpg-1.6000.jpg(狗)

照片读取代码如下:

import numpy as np
import tensorflow as tf#定义图片读取函数:把图片读取为64*64*3
def load_and_preprocess_from_path_label(path):image = tf.io.read_file(path)image = tf.image.decode_jpeg(image)image = tf.image.resize(image, [64, 64])image /= 255.0return image
#循环读取猫类图片(从img文件夹读取)并生成[6000,150,150,3]数组
x1=[]
for i in range(1,6001):img_path ='./img' + '\\0.%s.jpeg'%(i)img=load_and_preprocess_from_path_label(img_path)x1.append(img)
x1=np.array(x1)
#循环读取狗类图片并生成[6000,150,150,3]数组
x2=[]
for i in range(1,6001):   img_path ='./img' + '\\1.%s.jpeg'%(i)img=load_and_preprocess_from_path_label(img_path)x2.append(img)
x2=np.array(x2)
x_total=np.append(x1,x2,axis=0)

2.标签生成程序如下:

#生成标签代码,并转化为独热码形式
from keras.utils import np_utils
counter=0
data_y_list=[]
for i in range(2):label = np.ones((6000,)) * counterdata_y = tf.expand_dims(label, axis=-1)data_y_list.append(data_y)counter+=1
data_y_array = np.concatenate(data_y_list, axis=0)
y_total=np_utils.to_categorical(data_y_array,2)

3.同时打乱图片数据集和标签数据集

#打乱数据集
np.random.seed(116)
np.random.shuffle(x_total)
np.random.seed(116)
np.random.shuffle(y_total)
np.random.seed(116)
tf.random.set_seed(116)#分割训练样本集和测试样本集
x_train=x_total[0:5000,]
y_train=y_total[0:5000,]
x_test=x_total[5000:6000,]
y_test=y_total[5000:6000,]

4.搭建卷积神经网络(models.Sequential()结构)

from keras import layers
from keras import modelsmodel = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu',input_shape=(64,64, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(2, activation='sigmoid'))

5.定义优化器,学习率,损失函数(model.compile()结构)

from keras import optimizers
model.compile(loss='binary_crossentropy',optimizer=optimizers.RMSprop(lr=1e-4),metrics=['acc'])

6.定义epoch大小,batch大小

history=model.fit(x_train,y_train,epochs=100,batch_size=64,validation_data=(x_test,y_test),validation_freq=1)

7.如果要调用轻量级网络MobileNetV2、MobileNet、SqueezeNet、Xception等已经被嵌入到keras.applications文件里面的,代码如下

model = models.Sequential()
mobile = tf.keras.applications.MobileNet(include_top=False, weights='imagenet', input_shape=(150, 150, 3))
#Xception= tf.keras.applications.Xception(include_top=False, weights='imagenet', #input_shape=(150, 150, 3))
mobile.trainable = False
model = tf.keras.Sequential([mobile,tf.keras.layers.Dropout(0.5),tf.keras.layers.GlobalAveragePooling2D(),tf.keras.layers.Dense(512, activation='relu'),tf.keras.layers.Dense(64, activation='relu'),tf.keras.layers.Dense(2, activation='sigmoid')
])

python 猫狗二分类简单实现相关推荐

  1. pytorch 猫狗二分类 resnet

    深度学习(猫狗二分类) 题目要求 数据获取与预处理 网络模型 模型原理 Resnet背景 Resnet原理 代码实现 模型构建 训练过程 批验证过程 单一验证APP 运行结果 训练结果 批验证结果 A ...

  2. 猫狗二分类与四种天气多分类

    提示:文章用于学习记录 文章目录 前言 一.猫狗图像分类 1.1 数据预处理 1.2 构建神经网络 二.四种天气图片数据分类(pytorch) 总结 前言 常见分类网络结构可以分为两部分,一部分是特征 ...

  3. 猫狗二分类实战(PyTorch)

    PyTorch实战指南 文章目录 PyTorch实战指南 比赛介绍 文件组织架构 关于`__init__.py` 数据加载 模型定义 工具函数 配置文件 main.py 训练 验证 测试 帮助函数 使 ...

  4. 体验AI乐趣:基于AI Gallery的二分类猫狗图片分类小数据集自动学习

    摘要:直接使用AI Gallery里面现有的数据集进行自动学习训练,很简单和方便,节约时间,不用自己去训练了,AI Gallery 里面有很多类似的有趣数据集,也非常好玩,大家一起试试吧. 本文分享自 ...

  5. python猫狗识别课程设计_pytorch实现kaggle猫狗识别

    # 创建模型 class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d( ...

  6. PyTorch搭建预训练AlexNet、DenseNet、ResNet、VGG实现猫狗图片分类

    目录 前言 AlexNet DensNet ResNet VGG 前言 在之前的文章中,利用一个简单的三层CNN猫狗图片分类,正确率不高,详见: CNN简单实战:PyTorch搭建CNN对猫狗图片进行 ...

  7. 【五一创作】使用Resnet残差网络对图像进行分类(猫十二分类,模型定义、训练、保存、预测)(二)

    使用Resnet残差网络对图像进行分类 (猫十二分类,模型定义.训练.保存.预测)(二) 目录 (6).数据集划分 (7).训练集增强 (8).装载数据集 (9).初始化模型 (10).模型训练 (1 ...

  8. Pytorch采用AlexNet实现猫狗数据集分类(训练与预测)

    Pytorch采用AlexNet实现猫狗数据集分类(训练与预测) 介绍 AlexNet网络模型 猫狗数据集 AlexNet网络训练 训练全代码 预测 预测图片 介绍 AlexNet模型是CNN网络中经 ...

  9. 【五一创作】使用Resnet残差网络对图像进行分类(猫十二分类,模型定义、训练、保存、预测)(一)

    使用Resnet残差网络对图像进行分类 (猫十二分类,模型定义.训练.保存.预测)(一) 目录 一.项目简介 二.环境说明 1.安装库 2.导入需要的库 三.分类过程 (1).解压数据集 (2).相关 ...

最新文章

  1. ARCGIS中某字段递增赋值
  2. 牛逼!大神用漫画带你了解 Linux 内核到底长啥样
  3. AndroidStudio Gradle自定义属性xmlns无法识别
  4. java开发者工具开源版_JArchitect对Java开源贡献者免费
  5. Win32ASM学习[2]:运算符
  6. pycharm插件之SonarLint
  7. 快速上手,使用 Kotlin 把支付宝小程序装进自己的 App
  8. 信息学奥赛C++语言: 素数回文数的个数
  9. Elasticsearch教程(六) elasticsearch Client创建
  10. ASP.NET MVC 3—一切的开始MvcHandler、MvcHttpHandler
  11. 关于brvah的setEmptyView功能无法显示问题
  12. 【比特率和波特率】bit rate VS baud rate
  13. Android截屏工具类的使用
  14. 【pyecharts库与pandas库】利用pyecharts库根据表格中的GDP数据绘制2021年中国各省GDP热力图和GDP较低的五个省的人均GDP与人口的柱状图
  15. android平板和ipad区别,为什么说买平板必须买ipad?那么安卓平板和iPad到底有什么区别?...
  16. 杀死一只知更鸟的方法教会了我如何成为一名混乱大师
  17. php添加数据数据库乱码,php添加数据数据库乱码
  18. Python3 三元条件判断表达式(if else/and or)
  19. 货拉拉 Android 动态资源管理系统原理与实践(上)
  20. 2020.10.13--PS--像素化滤镜、扭曲类滤镜、波浪和水波

热门文章

  1. OpenCV图像锐化(梯度算子Sobel)
  2. 制定项目计划,确保团队协同效率
  3. 0904 朋友圈点赞功能
  4. httpclient海康ISAPI透传
  5. 理财通app的设计与实现(五)
  6. 江苏计算机专升本试题,江苏省普通高校“专转本”统一考试计算机基础试卷 三...
  7. 企业级Nginx负载均衡与keepalived高可用实战课-老男孩-专题视频课程
  8. JavaScript语言发展史
  9. codeforces144——D. Missile Silos(最短路+枚举)
  10. vue中使用antv/g6 绘制关系图、结构图_高级图标绘制设计软件最新版 | MyDraw 4.1.2...