Keras机器学习基础知识(一)——基本图像分类

更新时间:2023-06-20 16:23:07 阅读: 评论:0

Keras机器学习基础知识(⼀)——基本图像分类
⽂章⽬录
基本分类:对服装图像进⾏分类
本⽂将训练⼀个神经⽹络模型,对运动鞋和衬衫等服装图像进⾏分类。使⽤tf.keras,它是TensorFlow中⽤来构建和训练模型的⾼级API。⾸先导⼊相关库
# TensorFlow and tf.keras
import tensorflow as tf
from tensorflow import keras
# Helper libraries
import numpy as np
import matplotlib.pyplot as plt
火锅鸡图片print(tf.__version__)
2.5.0
1. 导⼊Fashion MNIST数据集
使⽤ Fashion MNIST 数据集,该数据集包含 10 个类别的 70,000 个灰度图像。这些图像以低分辨率(28x28 像素)展⽰了单件⾐物,如下所⽰:
图 1. Fashion-MNIST 样本(由 Zalando 提供,MIT 许可)。
Fashion MNIST 旨在临时替代经典 MNIST 数据集,后者常被⽤作计算机视觉机器学习程序的“Hello, World” ,MNIST 数据集包含⼿写数字(0、1、2 等)的图像,其格式与将使⽤的⾐物图像的格式相同。
本⽂使⽤ Fashion MNIST 来实现多样化,因为它⽐常规 MNIST 更具挑战性。这两个数据集都相对较⼩,都⽤于验证某个算法是否按预期⼯作。对于代码的测试和调试,它们都是很好的起点。
在本⽂中,我们使⽤ 60,000 个图像来训练⽹络,使⽤ 10,000 个图像来评估⽹络学习对图像分类的准确率。可以直接从 TensorFlow 访问 Fashion MNIST。
运⾏以下代码,直接从 TensorFlow 中导⼊和加载 Fashion MNIST 数据:
fashion_mnist = keras.datats.fashion_mnist
(train_images, train_labels),(test_images, test_labels)= fashion_mnist.load_data()
加载数据集会返回四个Numpy数组:
train_images和train_labels数组是训练集,即模型⽤来学习的数据。
test_images和test_labels数组是测试集,⽤来对模型机型测试。
图像是 28x28 的 NumPy 数组,像素值介于 0 到 255 之间。标签是整数数组,介于 0 到 9 之间。这些标签对应于图像所代表的服装类:
邻拼音
每个图像都会被映射到⼀个标签。由于数据集不包括类名称,请将它们存储在下⽅,供稍后绘制图像时使⽤:
efi启动
class_names =['T-shirt/top','Trour','Pullover','Dress','Coat',
'Sandal','Shirt','Sneaker','Bag','Ankle boot']
2. 浏览数据
在训练模型之前,我们先浏览⼀下数据集的格式。以下代码显⽰训练集中有 60,000 个图像,每个图像由 28 x 28 的像素表⽰:
train_images.shape
(60000,28,28)
同样,训练集中有 60,000 个标签:
len(train_labels)
60000
每个标签都是⼀个 0 到 9 之间的整数:
train_labels
array([9,0,0,...,3,0,5], dtype=uint8)
测试集中有 10,000 个图像。同样,每个图像都由 28x28 个像素表⽰:
test_images.shape
makes
(10000,28,28)
测试集包含 10,000 个图像标签:
len(test_labels)
10000
3. 预处理数据
在训练⽹络之前,必须对数据进⾏预处理。检查训练集中的第⼀个图像,会看到像素值处于 0 到 255 之间:
伤不起歌词plt.figure()
plt.imshow(train_images[0])
plt.show()
十大旅游胜地将这些值缩⼩⾄ 0 到 1 之间,然后将其馈送到神经⽹络模型。为此,将这些值除以 255。务必以相同的⽅式对训练集和测试集进⾏预处理:
情用train_images = train_images /255.0
test_images = test_images /255.0
为了验证数据的格式是否正确,以及是否已准备好构建和训练⽹络,让我们显⽰训练集中的前 25 个图像,并在每个图像下⽅显⽰类名称。
plt.figure(figsize=(10,10))
for i in range(25):
plt.subplot(5,5,i+1)
查看物流到哪了
plt.imshow(train_images[i], binary)
plt.xlabel(class_names[train_labels[i]])
plt.show()
4. 构建模型
构建神经⽹络需要先配置模型的层,然后再编译模型。
4.1 设置层
神经⽹络的基本组成部分是层。层会从向其馈送的数据中提取表⽰形式。希望这些表⽰形式有助于解决⼿头上的问题。
⼤多数深度学习都包括将简单的层链接在⼀起。⼤多数层(如 tf.keras.layers.Den)都具有在训练期间才会学习的参数。
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28,28)),
keras.layers.Den(128, activation='relu'),
keras.layers.Den(10)
])
该⽹络的第⼀层 tf.keras.layers.Flatten 将图像格式从⼆维数组(28 x 28 像素)转换成⼀维数组(28 x 28 = 784 像素)。将该层视为图像中未堆叠的像素⾏并将其排列起来。该层没有要学习的参数,它只会重新格式化数据。
展平像素后,⽹络会包括两个 tf.keras.layers.Den 层的序列。它们是密集连接或全连接神经层。第⼀个 Den 层有 128 个节点(或神经元)。第⼆个(也是最后⼀个)层会返回⼀个长度为 10 的 logits 数组。每个节点都包含⼀个得分,⽤来表⽰当前图像属于 10 个类中的哪⼀类。
4.2 编译模型
在准备对模型进⾏训练之前,还需要再对其进⾏⼀些设置。以下内容是在模型的编译步骤中添加的:
损失函数
⽤于测量模型在训练期间的准确率。您会希望最⼩化此函数,以便将模型“引导”到正确的⽅向上。
优化器
决定模型如何根据其看到的数据和⾃⾝的损失函数进⾏更新。
指标
⽤于监控训练和测试步骤。以下⽰例使⽤了准确率,即被正确分类的图像的⽐率。

本文发布于:2023-06-20 16:23:07,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/999512.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   数据   训练   模型
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图