(keras+VGG16+linux)迁移学习初识——猫狗大战数据集训练预测

该博客介绍了如何使用Keras和VGG16在Linux环境下进行迁移学习,以猫狗识别为例。作者分享了数据集的来源和预处理方法,包括数据集划分、训练集验证集的创建。此外,还详细讨论了训练过程中的参数配置,如ImageDataGenerator、ModelCheckpoint等,并记录了训练过程中遇到的问题及解决方案,包括数据维度错误、GPU使用问题等。

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

本博客代码,划分好的数据集,自己训练的模型:
github:https://github.com/AlannahYYL/keras_vgg16_dogs-vs-cats
数据集:https://download.youkuaiyun.com/download/qq_31681523/16699667
模型:https://download.youkuaiyun.com/download/qq_31681523/16709305

一.数据集

数据集:Cats vs. Dogs
官网下载地址:https://www.kaggle.com/c/dogs-vs-cats
博主只下载了train.zip,包含猫狗各12500张,在数据集预处理文件中将生成数据集。

二.项目环境

keras==2.1.5 tensorflow==1.15 python==3.6 numpy==1.19.2

三.项目内容

部分配置参数详见工程代码文件config.py

1.数据集预处理 data_pre.py

解压train.zip,本文件将猫狗各12500张图片进行数据集划分,猫和狗前11000张分为训练集,后1500张分为验证集。划分后文件结构和代码如下:
文件结构:
在这里插入图片描述

代码

'''
数据预处理,将数据分为训练集、测试集
原train文件中共有猫狗图片各12500,将其中前10000用作训练集,2500用作测试集
'''
from config import *
import os
import shutil
def div_dataset(ori_path,val_path,train_path):
    '''
    划分数据集
    :param ori_path:
    :param test_path:
    :param train_path:
    :return:
    '''
    cat_num=0
    dog_num=0
    train_num=0
    test_num=0
    cat_val_path =os.path.join(val_path,CAT_CATE)
    dog_val_path =os.path.join(val_path,DOG_CATE)
    cat_train_path =os.path.join(train_path,CAT_CATE)
    dog_train_path =os.path.join(train_path,DOG_CATE)
    if not os.path.exists(cat_val_path):
        os.makedirs(cat_val_path)
    if not os.path.exists(dog_val_path):
        os.makedirs(dog_val_path)
    if not os.path.exists(cat_train_path):
        os.makedirs(cat_train_path)
    if not os.path.exists(dog_train_path):
        os.makedirs(dog_train_path)
    for root, dirs, files in os.walk(ori_path):
        for filename in files:
            # print(filename)
            ori_file = os.path.join(ori_path, filename)
            filename_l = filename.split('.')
            cate = filename_l[0]
            if cate==CAT_CATE:
                cat_num+=1
            else:
                dog_num+=1
            nums = filename_l[1]
            if int(nums)<11000:
                train_num+=1
                train_file = os.path.join(train_p
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值