深度学习-对花的品种进行分类
这里会展示如何对花的图像进行分类 。它使用keras创建一个图像分类器 。顺序模型,并使用预处理.加载数据 。
主要的流程就是加载数据集 。识别过拟合并应用技术来减轻它,包括数据扩充和 。
基本的机器学习流程:
检查和理解数据
构建输入管道
构建模型
训练模型
测试模型
改进模型并重复此过程
导入和其他库
import matplotlib.pyplot as pltimport numpy as npimport osimport PILimport tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras import layersfrom tensorflow.keras.models import Sequential
下载数据
下载并浏览数据集
本教程使用了大约3700张鲜花照片的数据集 。数据集包含5个子目录,每个类一个:
import pathlibdataset_url = "https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz"data_dir = tf.keras.utils.get_file('flower_photos', origin=dataset_url, untar=True)data_dir = pathlib.Path(data_dir)
下载之后,您现在应该有一个可用的数据集副本 。总共有3670张图片:
image_count = len(list(data_dir.glob('*/*.jpg')))print(image_count)
如果执行上面的程序后,就会得到3670
接下来我们可以看下我们下载的数据里面有什么图片,我们任意选几张来看下 。
roses = list(data_dir.glob('roses/*'))PIL.Image.open(str(roses[0]))
PIL.Image.open(str(roses[1]))
tulips = list(data_dir.glob('tulips/*'))PIL.Image.open(str(tulips[0]))
PIL.Image.open(str(tulips[1]))
负载使用keras.
使用有用的实用程序将这些图像从磁盘上加载下来 。这将把从磁盘上的图像目录到一个tf.data.只需几行代码 。如果愿意,还可以通过访问加载图像教程从头编写自己的数据加载代码 。
创建一个数据集
为加载器定义一些参数:
batch_size = 32img_height = 180img_width = 180
在开发模型时使用验证分割是一个很好的实践 。我们使用80%的图像进行训练,20%进行验证 。
train_ds = tf.keras.preprocessing.image_dataset_from_directory(data_dir,validation_split=0.2,subset="training",seed=123,image_size=(img_height, img_width),batch_size=batch_size)
你可以看到跑出这样子的结果
文章插图
val_ds = tf.keras.preprocessing.image_dataset_from_directory(data_dir,validation_split=0.2,subset="validation",seed=123,image_size=(img_height, img_width),batch_size=batch_size)
Found 3670 filesto 5 .
Using 734 files for .
可以在这些数据集中的属性中找到类名 。这些按字母顺序对应目录名 。
class_names = train_ds.class_namesprint(class_names)
可视化数据
以下是来自训练数据集的前9张图片 。
import matplotlib.pyplot as pltplt.figure(figsize=(10, 10))for images, labels in train_ds.take(1):for i in range(9):ax = plt.subplot(3, 3, i + 1)plt.imshow(images[i].numpy().astype("uint8"))plt.title(class_names[labels[i]])plt.axis("off")
- Koa学习1:初始化项目
- 消息中间件学习-摘抄
- 十三 每天学习一个设计模式:行为型之责任链模式
- 学习3d建模达到什么水平能找到工作?次世代游戏建模需要学多久
- 【前端学习笔记day48】7.1
- 干货!吴恩达亲自为这份深度学习专项课程精炼图笔记点了赞!
- 2 Flink源码学习笔记 基于Yarn的自动伸缩容实现
- 不确定理论1
- 斯巴达 Kail学习笔记-kali信息搜集工具之Sparta
- 【C/C++ 数据结构 】广义表深度解析:从原理到C/C++实现