花朵分类(一)

news/2024/12/2 21:42:49/

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

首先我们来介绍下数据集,该数据集有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


http://www.ppmy.cn/news/563071.html

相关文章

vue中js实现点击复制文本到剪贴板-三种方案

vue中js实现点击复制文本到剪贴板-三种方案 因为在网上找了一些很杂乱 不适用 所以自己写一篇记录分享一下 vue中js实现点击复制文本到剪贴板-三种方案 效果: 方案一:使用原生API(clipboard) 首先,我们需要安装clip…

深入浅出WPF之剖析最简单的XAML代码

<Window x:Class="WpfApp3.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml

【无标题】基于c++的五子棋游戏

链接&#xff1a;https://pan.baidu.com/s/1rpfcUtbL2e0JtZZNnWNPUQ 提取码&#xff1a;kizo --来自百度网盘超级会员V1的分享 在vs上写的简陋的五子棋小游戏&#xff0c;欢迎大家玩玩

【C语言】 五子棋 棋盘的绘制

目录 源码分享 效果展示 源码分享 #include<stdio.h>void test3() //打印棋盘 {int i,j;int row9,col9;for(i1;i<row;i) //循环9次 行{if(i1) //第一行{printf("┌ "); //第一列//第一行顶部 ┬for(j1;j<col-2;j){printf("┬ "…

C++项目1——五子棋游戏

参考视频 【C/C】大一学年设计&#xff1a;五子棋(含GUI/网络/算法)_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1V54y1D7pD?spm_id_from333.1007.top_right_bar_window_custom_collection.content.click 目录 一、控制台版本 1.1 代码 1.2 实现效果 二、存储功…

【软考网络管理员】2023年软考网管初级常见知识考点(4)-局域网基本概念

涉及知识点 局域网特点&#xff0c;局域网体系结构&#xff0c;局域网拓扑结构&#xff0c;局域网传输介质&#xff0c;软考网络管理员常考知识点&#xff0c;软考网络管理员网络安全&#xff0c;网络管理员考点汇总。 文章目录 涉及知识点前言一、局域网的特点二、局域网体系…

javafx逻辑实现五子棋基本功能(悔棋,重新开始,保存棋谱,复盘,人人对战,单机模式

javafx逻辑实现五子棋基本功能&#xff08;悔棋&#xff0c;重新开始&#xff0c;保存棋谱&#xff0c;复盘&#xff0c;人人对战&#xff0c;单机模式&#xff09; 做这个项目&#xff0c;本身目的仅仅是想应用学过的知识做个小项目&#xff0c;想知道它们在实际开发中应该如…

日新五子棋游戏设计方案

目 录 一、摘要&#xff1a;................................. 1 二、关键字&#xff1a;............................... 1 三、程序主流程图........................... 2 四、需求分析&#xff1a;............................. 3 五、关键部分设计算法及实现&…