用keras框训练猫狗分类并进行验证

本文介绍了使用预训练的VGG16模型进行猫狗分类任务的训练过程,通过数据增强提高模型的可靠性。训练结果显示,VGG16模型相比自建模型在精度上有显著优势,但训练时间较长。详细步骤包括数据集创建、模型构建、数据增强、模型编译、训练及评估。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用keras框训练猫狗分类并进行验证

先看一下训练后的效果

训练分类结果
本次训练猫狗分类用了vgg16用作特征提取的模型,训练效果较自己搭建组合的普通模型要精准很多,当然所耗时长也会长很多(所以,我电脑没有GPU,我为什么要学深度学习,就这么简单的二分类问题,从昨晚11点一直训练到下午四点,简直不像话)
对比一下用自己搭建的普通模型的效果:
在这里插入图片描述
(是不是很瞎QAQ)

让我们来看一下代码

1)首先引入VGG16模型,看这句语言就在.keras文件下的applications里,如果没有的话>> 链接:https://pan.baidu.com/s/1iXqWbzrcBTraQ2JIrL-CkA
提取码:mmre

#将VGG16卷积基实例化
from keras.applications import VGG16
conv_base = VGG16(weights='imagenet', include_top=False, input_shape=(150, 150, 3))

2)创建数据集,猫猫和狗狗的数据集在此>> 链接:https://pan.baidu.com/s/1o4TQSOAfkrzvZLxRIGpR9g
提取码:38da

import os,shutil
oirginal_dataset_dir='C:/Users/45005/.keras/datasets/kaggle_original_data/train'
base_dir='C:/Users/45005/.keras/datasets/kaggle_original_data/test2'
os.mkdir(base_dir)#创建文件夹C:/Users/45005/.keras/datasets/kaggle_original_data/test2

train_dir=os.path.join(base_dir,'train')#分别对应划分后的训练,验证和测试的目录
#os.mkdir(train_dir)
validation_dir=os.path.join(base_dir,'validation')
#os.mkdir(validation_dir)
test_dir=os.path.join(base_dir,'test')
#os.mkdir(test_dir)
#训练目录
train_cats_dir=os.path.join(train_dir,'cats')#猫的训练图像目录
#os.mkdir(train_cats_dir)
train_dogs_dir=os.path.join(train_dir,'dogs')#狗的训练图像目录
#os.mkdir(train_dogs_dir)
#验证目录
validation_cats_dir=os.path.join(validation_dir,'cats')#猫的验证图像目录
#os.mkdir(validation_cats_dir)
validation_dogs_dir=os.path.join(validation_dir,'dogs')#狗的验证图像目录
#os.mkdir(validation_dogs_dir)
#测试目录
test_cats_dir=os.path.join(test_dir,'cats')#猫的测试图像目录
#os.mkdir(test_cats_dir)
test_dogs_dir=os.path.join(test_dir,'dogs')#狗的测试图像目录
#os.mkdir(test_dogs_dir)
#将前1000张的猫的图像复制到train_cats_dir中
fnames=['cat.{}.jpg'.format(i) for i in range(1000)]
for fname in fnames:
   src=os.path.join(oirginal_dataset_dir,fname)
   dst=os.path.join(train_cats_dir,fname)
   shutil.copyfile(src,dst)
   #将接下来500张猫复制到validation_cat目录中
fnames=['cat.{}.jpg'.format(i) for i in range(1000,1500)]
for fname in fnames:
   src=os.path.join(oirginal_dataset_dir,fname)
   dst=os.path.join(validation_cats_dir,fname)
   shutil.copyfile(src,dst)
#将接下来500张猫复制到test_cat中
fnames=['cat.{}.jpg'.format(i) for i in range(1500,2000)]
for fname in fnames:
   src=os.path.j
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值