建议阅读时长 8 分钟
前言
对于机器学习来说,数据的重要性无可厚非,大部分处理机器学习的问题都是在处理数据,包括数据的清洗,归一化等,好的数据质量能大大提高模型的预测性能
但是对与初学者来说,数据变得不那么重要,因为学习机器学习主要学习算法思想以及如何实现,要善于站在前人的肩膀上对于计算机视觉领域,前辈们已经创建许多非常强大的图片数据集,如 Image-net: 『http://www.image-net.org/ 』 Google 图片数据库 『https://storage.googleapis.com/openimages/web/index.html 』可以帮助我们加速开发模型
下面要介绍的一个框架是 Keras 对于新手非常友好,本人之前使用过一阶段的 Tensorflow 感觉比较抽象,对于想快速入门机器学习的同学, Keras 是一款不错的选择
以下是三个框架这几年的流行程度,从中我们能看出一点趋势
Keras 中有许多数据集,包括用来做二分类的 IMDB 数据集、多分类的路透社数据集、做回归的波士顿房价数据集等,而本文要介绍的是二分类的图片数据集,猫狗数据集,原始数据可以在 Kaggle 官网上进行下载 『https://www.kaggle.com/c/dogs-vs-cats/data』 如果你没有 Kaggle 帐号,我将在文后附上我已经下载的数据集供你们使用
数据格式如下:
其中训练集 1000 张,验证集 500 张,测试集 500 张,总共 4000 张。
猫狗大战开始
机器学习的一般步骤是:准备数据
数据预处理(检查数据、数据归一化、将数据转换成张量等)
建立模型
查看精度和损失
预测
保存模型# 导入包
import os, shutil
import keras
from keras.layers import Conv2D, MaxPooling2D, Dense, Flatten # 卷积神经网络
from keras.models import Sequential
import matplotlib.pyplot as plt # 绘图包
from keras.preprocessing import image # 数据处理
查看数据
检查数据是数据处理过程中一项基本步骤,可以预防数数据路径、数据集数量、数据集格式等出现错误# 对创建的文件夹进行检查
dst_path='./img_data/small_datasets/'
train_cats_dir = os.path.join(dst_path, 'train/cats')
train_dogs_dir = os.path.join(dst_path, 'train/dogs')
test_cats_dir = os.path.join(dst_path, 'test/cats')
test_dogs_dir = os.path.join(dst_path, 'test/dogs')
validation_cats_dir = os.path.join(dst_path, 'validation/cats')
validation_dogs_dir = os.path.join(dst_path, 'validation/dogs')
print('total training cat images:', len(os.listdir(train_cats_dir)))
print('total training dog images:', len(os.listdir(train_dogs_dir)))
print('total validation cat images:', len(os.listdir(validation_cats_dir)))
print('total validation dog images:', len(os.listdir(validation_dogs_dir)))
print('total test cat images:', len(os.listdir(test_cats_dir)))
print('total test dog images:', len(os.listdir(test_dogs_dir)))# 运行结果
totaltraining cat images: 1000
totaltrai