花朵分类(一)

简介: 本次教程的目的是带领大家学会基本的花朵图像分类首先我们来介绍下数据集,该数据集有5种花,一共有3670张图片,分别是daisy、dandelion、roses、sunflowers、tulips,数据存放结构如下所示

本次教程的目的是带领大家学会基本的花朵图像分类

首先我们来介绍下数据集,该数据集有5种花,一共有3670张图片,分别是daisy、dandelion、roses、sunflowers、tulips,数据存放结构如下所示

我们可以展示下roses的几张图片

接下来我们需要加载数据集,然后对数据集进行划分,最后形成训练集、验证集、测试集,注意此处的验证集是从训练集切分出来的,比例是8:2

对数据进行探索的时候,我们发现原始的像素值是0-255,为了模型训练更稳定以及更容易收敛,我们需要标准化数据集,一般来说就是把像素值缩放到0-1,可以用下面的layer来实现

normalization_layer = tf.keras.layers.experimental.preprocessing.Rescaling(1./255)

为了使训练的时候I/O不成为瓶颈,我们可以进行如下设置

AUTOTUNE = tf.data.AUTOTUNE

train_ds = train_ds.cache().prefetch(buffer_size=AUTOTUNE)
val_ds = val_ds.cache().prefetch(buffer_size=AUTOTUNE)

下一步就是模型搭建,然后对模型进行训练

num_classes = 5

model = tf.keras.Sequential([
  tf.keras.layers.experimental.preprocessing.Rescaling(1./255),
  tf.keras.layers.Conv2D(32, 3, activation='relu'),
  tf.keras.layers.MaxPooling2D(),
  tf.keras.layers.Conv2D(32, 3, activation='relu'),
  tf.keras.layers.MaxPooling2D(),
  tf.keras.layers.Conv2D(32, 3, activation='relu'),
  tf.keras.layers.MaxPooling2D(),
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dense(num_classes)
])

model.compile(
  optimizer='adam',
  loss=tf.losses.SparseCategoricalCrossentropy(from_logits=True),
  metrics=['accuracy'])

model.fit(
  train_ds,
  validation_data=val_ds,
  epochs=3
)

从上图的训练记录可以发现,该模型处于欠拟合状态,我们可以通过多训练几轮来解决这个问题,而且为了快速实验,我们这里用了一个非常简单的模型,我们可以通过更换更强的模型,来提升模型的表现

代码链接: https://codechina.csdn.net/csdn_codechina/enterprise_technology/-/blob/master/load_preprocess_images.ipynb

目录
相关文章
|
区块链 Android开发
区块链大众化的落地产品-深度体验蚂蚁区块链鹊凿数字版权服务平台
从18年至今,一直在思考区块链的真正有价值的大众落地是什么。 18年在个人有限的认知里得出的结论是: 围绕着空气币是没有太多的价值,只对于黑灰色产业有价值。 19年末关注到了,蚂蚁链的-鹊凿数字版权版权平台。 时至今日,经历一年半的时光,2021年,最近看到了淘宝商家服务的成交量激增,和蚂蚁与杭州互联网公证处的深度合作。确信在未来3-5年,这是一个很好的历史市场环境。
1792 1
区块链大众化的落地产品-深度体验蚂蚁区块链鹊凿数字版权服务平台
|
安全 jenkins 持续交付
项目版本管理的最佳实践:云效飞流Flow篇
飞流Flow的最佳实践(使用阿里云云效)为了更好地使用飞流Flow,接下来将结合阿里云云效来讲解飞流Flow的最佳实践
5002 0
项目版本管理的最佳实践:云效飞流Flow篇
|
9月前
|
人工智能 搜索推荐 Android开发
Android系统版本演进:从1.0到最新,见证移动操作系统的蜕变####
本文以Android系统的迭代更新为线索,探讨了自2008年首个版本发布以来,Android在功能、性能、用户体验及安全性方面的显著进步。通过对比各代版本的亮点与改进,揭示了Android如何逐步发展成为全球领先的移动操作系统平台,并预测了未来发展趋势。 ####
744 24
|
缓存 NoSQL 关系型数据库
(八)漫谈分布式之缓存篇:唠唠老生常谈的MySQL与Redis数据一致性问题!
本文来聊一个跟实际工作挂钩的老生常谈的问题:分布式系统中的缓存一致性。
506 11
|
11月前
|
IDE 机器人 开发工具
基于ESP32的机器狗
基于ESP32的机器狗
259 0
|
11月前
|
存储
【初阶数据结构】深入解析循环队列:探索底层逻辑
【初阶数据结构】深入解析循环队列:探索底层逻辑
257 0
SQL如何提取字符串中的中文和数字?
前天写了篇《SQL如何提取字符串中的字母?》,今天再教大家如何提取中文和数字。 其实方法都是类似的,只是我们需要调整一下正则表达式而已。
SQL如何提取字符串中的中文和数字?
|
资源调度 JavaScript 前端开发
「Vue3系列」Vue3简介及安装
Vue3是Vue.js框架的第三个主要版本,于2020年9月18日发布,代号为“One Piece”。Vue3在性能、体积、TypeScript支持、API设计等方面都有显著的提升和改变。
627 2
|
人工智能 数据可视化 程序员
【推荐100个unity插件之7】使用BehaviorDesigner插件制作BOSS的AI行为树
【推荐100个unity插件之7】使用BehaviorDesigner插件制作BOSS的AI行为树
883 0
|
小程序 前端开发 Java
基于微信小程序+SSM+Vue+Node实现智慧旅游商城系统(一)
基于微信小程序+SSM+Vue+Node实现智慧旅游商城系统
199 0