[keras]猫狗大战的总结

本文通过实践介绍如何利用预训练的VGG-16模型进行图像分类任务,重点讲解数据处理、模型构建、权重加载及微调等关键步骤。

      这篇博客主要参考的是keras官方文档中的“面向小数据集构建图像分类模型”。本文记录了学习这篇文章遇到的问题和自己探索的一些方法。官方文档的大致思路是:首先利用去掉全连接层的VGG-16网络,得到数据集的bottleneck feature,然后自己设计几层全连接层,对其进行训练,最后再微调最后面的几层卷积层。

实现一个模型的流程大致如下:1.数据的读取和预处理部分(包括对训练数据的提升和扩充、生成batch等)2.网络的构建3.对模型的编译(挂载上目标函数、优化函数及相关的一些学习率等超参数)4.模型的训练。下面我逐条说明实现的过程中遇到的一些问题和我自己的浅薄思考:

一、数据读取和处理部分

1.官方文档采用的读取数据的方式是ImageDataGenerator.flow_from_directory():从文件夹中读取数据,并对数据进行预处理和提升,生成batch数据。文件路径下要有cat和dog两个子文件夹,表示两个类别。类别的标签是按照字母顺序生成的,cat是0,dog是1。需要注意的是该路径下必须要有一个文件夹,当我用该函数读取测试集数据时,直接将所有图片放在了路径下,发生了报错。

2.从kaggle上下载的train文件中只有一个文件夹,猫和狗混合在了一块,应该将其分到两个文件夹中。利用os.listdir(‘dirname’)语句,返回指定目录下所有文件的目录名。


import os

import shutil

TRAIN_DIR=''

cat_target_file=''

dog_target_file=''

 

train_dogs_name=[i for i in os.listdir(TRAIN_DIR)if 'dog' in i]

train_cats_name=[i for i in os.listdir(TRAIN_DIR)if 'dog' in i]

for i in train_dogs_name:

src=TRAIN_DIR+i

dst=dog_target_file+i

shutil.copyfile(src,dst)

for i in train_cats_name:

src=TRAIN_DIR+i

dst=cat_target_file+i

shutil.copyfile(src,dst)

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值