利用机器学习进行图像分类:以TensorFlow和Keras为例

devtools/2024/10/19 6:17:28/

当使用 TensorFlow 和 Keras 进行图像分类时,常用的方法是使用卷积神经网络(Convolutional Neural Network,CNN)。以下是一个简单的图像分类示例,使用 TensorFlow 和 Keras 来训练一个 CNN 模型对手写数字进行分类

# 导入所需的库
import tensorflow as tf
from tensorflow.keras import datasets, layers, models
import matplotlib.pyplot as plt# 加载数据集
(train_images, train_labels), (test_images, test_labels) = datasets.mnist.load_data()# 将像素值缩放到 0 到 1 之间
train_images, test_images = train_images / 255.0, test_images / 255.0# 构建 CNN 模型
model = models.Sequential([layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),layers.MaxPooling2D((2, 2)),layers.Conv2D(64, (3, 3), activation='relu'),layers.MaxPooling2D((2, 2)),layers.Conv2D(64, (3, 3), activation='relu'),layers.Flatten(),layers.Dense(64, activation='relu'),layers.Dense(10, activation='softmax')
])# 编译模型
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])# 将数据整形成四维张量,以适应模型输入
train_images = train_images.reshape((60000, 28, 28, 1))
test_images = test_images.reshape((10000, 28, 28, 1))# 训练模型
history = model.fit(train_images, train_labels, epochs=5, validation_data=(test_images, test_labels))# 绘制训练过程中的准确率和损失曲线
plt.plot(history.history['accuracy'], label='accuracy')
plt.plot(history.history['val_accuracy'], label='val_accuracy')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.ylim([0, 1])
plt.legend(loc='lower right')
plt.show()# 评估模型
test_loss, test_acc = model.evaluate(test_images,  test_labels, verbose=2)
print('\nTest accuracy:', test_acc)

这段代码会做以下几件事情:

  1. 加载 MNIST 数据集,该数据集包含了手写数字图片和对应的标签。
  2. 构建一个简单的 CNN 模型,用于图像分类
  3. 编译模型,指定优化器、损失函数和评估指标。
  4. 将数据整形成适合模型输入的形式。
  5. 训练模型,并在训练过程中记录准确率和损失值。
  6. 绘制训练过程中的准确率和损失曲线。
  7. 评估模型在测试集上
    [Something went wrong, please try again later.]

http://www.ppmy.cn/devtools/22650.html

相关文章

实验报告1 小费数据分析(包含描述性-数据可视化)

实验报告1 小费数据分析 实验内容 小费数据分析 实验思路:读取数据-数据预处理-探索性数据分析(描述性统计分析)-分组分析-可视化分析-特征工程 实验环境工具:VS code 编程语言:python 实验原理: (用到pandas库的哪些基本概念和方法?这些方法分别是什么作用?) 在上述…

统一建模语言UML图

uml 图定义 Unified Modeling Language(统一建模语言,UML)是一种用于软件系统设计和建模的标准化语言。它提供了一套图形化的符号和约定,用于描述软件系统的结构、行为和交互,以及系统与外部环境之间的关系。UML通常用…

怎么给字符串字段加索引?

怎么给字符串字段加索引? 现在,几乎所有的系统都支持邮箱登录,如何在邮箱这样的字段上建立合理的索引,是我们今天要讨论的问题。 假设,你现在维护一个支持邮箱登录的系统,用户表是这么定义的: …

代谢组数据分析五:溯源分析

MetOrigin Analysis {#MetOriginAnalysis} 微生物群及其代谢产物与人类健康和疾病密切相关。然而,理解微生物组和代谢物之间复杂的相互作用是具有挑战性的。 在研究肠道代谢物时,代谢物的来源是一个无法避免的问题即代谢物到底是来自肠道微生物的代谢还是宿主本身代谢产生的…

单例模式,懒汉和饿汉模式的区别以及实现方法

1.单例模式 单例模式是一种“经典的,常用的,常考的”设计模式。那么什么是设计模式? IT行业这么火,涌入的人很多,俗话说林子大了啥鸟都有,大佬的菜鸟们两极分化越来越严重,为了让菜鸟们不太拖…

第六十五章 Apache 的替代选项 (Windows) - 替代选项 2:带有 NSD 的 Apache API 模块 (mod_csp24.dll)

文章目录 第六十五章 Apache 的替代选项 (Windows) - 替代选项 2:带有 NSD 的 Apache API 模块 (mod_csp24.dll)替代选项 2:带有 NSD 的 Apache API 模块 (mod_csp24.dll)映射其他文件类型使用 Apache API 和 NSD 操作和管理 Web 网关 第六十五章 Apache…

截取视频第一帧当做封面

看了好多处理视频的框架 比如ffmpeg&#xff0c;很多都需要依赖安装第三方插件&#xff0c;比较麻烦&#xff0c;找到一个内嵌进去不需要额外安装的&#xff1a;jcodec 一 首先代码中添加依赖 <!--视频生成预览图用--><dependency><groupId>org.jcodec</…

计算机网络——初识网络

一、局域网与广域网 1.局域网&#xff08;LAN&#xff09; 局域网&#xff1a;即Local Area Network&#xff0c;简称LAN。Local即标识了局域⽹是本地&#xff0c;局部组建的⼀种私有⽹络。局域⽹内的主机之间能⽅便的进⾏⽹络通信&#xff0c;⼜称为内⽹&#xff1b;局域⽹和…