深入图像分类:使用美国手语数据集训练定制化神经网络

引言

在前一篇博客中,我们探讨了如何使用MNIST数据集训练一个基础的神经网络来进行手写数字识别。在本文中,我们将更进一步,使用美国手语字母表(ASL)数据集来构建一个定制化的图像分类模型。通过这个过程,你将学习到如何准备数据、构建模型、以及对模型进行训练和评估。

美国手语数据集简介

美国手语(ASL)是一种复杂的视觉语言,它包含了26个字母的手语表示。在本练习中,我们将使用一个包含这些字母图像的数据集,该数据集类似于MNIST,但对我们的模型来说更具挑战性。

数据准备

与MNIST数据集不同,ASL数据集需要我们手动加载和准备数据。我们将使用Pandas库来读取CSV格式的数据集,并使用matplotlib来可视化数据。
在这里插入图片描述

import pandas as pd
import matplotlib.pyplot as plt

# 读取训练和验证数据集
train_df = pd.read_csv("data/asl_data/sign_mnist_train.csv")
valid_df = pd.read_csv("data/asl_data/sign_mnist_valid.csv")

# 提取标签和图像数据
y_train = train_df['label']
y_valid = valid_df['label']
x_train = train_df.drop('label', axis=1).values
x_valid = valid_df.drop('label', axis=1).values

# 数据可视化
plt.figure(figsize=(10,10))
for i in range(9):
    plt.subplot(3, 3, i+1)
    image = x_train[i].reshape(28, 28)
    plt.title(y_train[i], fontdict={'fontsize': 20})
    plt.axis('off')
    plt.imshow(image, cmap='gray')
plt.show()

数据归一化和分类编码

在训练模型之前,我们需要对图像数据进行归一化,并将标签转换为分类编码的形式。

from tensorflow.keras.utils import to_categorical

# 数据归一化
x_train = x_train / 255.0
x_valid = x_valid / 255.0

# 标签分类编码
num_classes = 24
y_train = to_categorical(y_train, num_classes)
y_valid = to_categorical(y_valid, num_classes)

构建模型

我们将构建一个包含两个隐藏层的神经网络模型,使用ReLU作为激活函数,并在输出层使用softmax函数。

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

model = Sequential()
model.add(Dense(units=512, activation='relu', input_shape=(784,)))
model.add(Dense(units=512, activation='relu'))
model.add(Dense(units=num_classes, activation='softmax'))

在这里插入图片描述

编译和训练模型

模型编译后,我们将使用交叉熵作为损失函数,并跟踪准确率指标。

model.compile(loss='categorical_crossentropy', metrics=['accuracy'])

# 训练模型
history = model.fit(x_train, y_train, epochs=20, verbose=1, validation_data=(x_valid, y_valid))

结果讨论

训练过程中,我们可能会观察到模型在训练集上的准确率较高,但在验证集上的表现不佳。这可能是过拟合的迹象,即模型对训练数据过度拟合,而未能很好地泛化到未见数据。
在这里插入图片描述

结语

通过本文,你学习了如何处理新的数据集,并构建了一个针对特定任务的神经网络模型。在接下来的教程中,我们将探索卷积神经网络,这是一种在图像分类任务中更为强大的模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/589740.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

免费通配符证书的申请指南——从申请到启动https

如果您的网站拥有众多二级子域名,那么通配符证书证书是最好的选择。 免费通配符申请流程如下: 1 创建证书服务商账号 首先选择一个提供免费通配符的服务商,打开国产服务商JoySSL官网,创建一个账号(注册账号时填写注册…

分享自己一篇在亚马逊云科技AWS官网发的Blog技术文章

小李哥在亚马逊AWS官网,作为第一作者发了自己的第一篇AWS Blog文章,也是自己今年在AWS官网的第11篇文章。文章主要内容是描述为出海的金融企业,搭建满足PCI-DSS合规、FIPS 140-2 Level 3安全标准的传输中数据加密云端方案,主要用于…

CSS优惠券、卡券样式绘制

实现左右凹陷中间有虚线效果 效果图 实现思路 从效果图可以看到这个优惠券是左右两边凹陷,中间还有一条虚线,为了封装后插槽使用方便,把优惠券以虚线为准分了两部分。这样布局的好处是上部分内容和下部分都可以自定义,不受内容限…

如何搭建本地的 NPM 私有仓库 Nexus

NPM 本地私有仓库,是在本地搭建NPM私有仓库,对公司级别的组件库进行管理。在日常开发中,经常会遇到抽象公共组件的场景,在项目内部进行公用。新的项目开始时,也会拷贝一份创建一个新的项目,这样做不易于管理…

芯片的可靠性测试项目有哪些?

知识星球(星球名:芯片制造与封测社区,星球号:63559049)里的学员问:封装的可靠性测试都测哪些项目呢? 什么是可靠性测试? 芯片的可靠性测试是针对芯片进行的一系列严格的测试&#x…

量子城域网建设设备系列(二):量子密钥管系统(KMS)

在上文介绍光量子交换机的文章中我们提到,量子保密通信网络的通道切换是由量子密钥管理系统(Key Management System,KMS)给光量子交换机下发信道切换指令,实现整个网络中任意两对量子密钥分发终端的量子信道互联互通&a…

2024.5.3

C风格字符串的越界异常处理 #include <iostream> #include <cstring> using namespace std; class MyStr{char str[200]; public:void set(string str);char at(unsigned int a); }; void MyStr::set(string str){strcpy(this->str,str.c_str()); } char MyStr…

UI-Diffuser——使用生成式扩散模型的UI原型设计算法解析

概述。 移动UI是影响参与度的一个重要因素&#xff0c;例如用户对应用的熟悉程度和使用的便利性。如果你有一个类似的应用程序&#xff0c;你可能会选择一个具有现代、好看的设计的应用程序&#xff0c;而不是一个旧的设计。然而&#xff0c;要从头开始研究什么样的UI最适合应…

解决RTC内核驱动的问题bm8563

常用pcf-8563 , 国产平替BM8563(驱动管脚一致)&#xff1b; 实时时钟是很常用的一个外设&#xff0c;通过实时时钟我们就可以知道年、月、日和时间等信息。 因此在需要记录时间的场合就需要实时时钟&#xff0c;可以使用专用的实时时钟芯片来完成此功能 RTC 设备驱动是一个标准…

wmware启动ubuntu18.04,提示虚拟机使用中

背景和原因 搭建虚拟机环境时&#xff0c;处理问题&#xff0c;忘记虚拟机关机&#xff0c;直接关机&#xff0c;导致虚拟机不能使用&#xff0c;提示使用中 解决 &#xff0c;在关掉虚拟机的情况下&#xff0c;删除虚拟机下的以下文件 总结 每次关电脑前记得先关掉虚拟机&…

【跟马少平老师学AI】-【神经网络是怎么实现的】(七-3)词向量应用举例

一句话归纳&#xff1a;用TextCNN实现文本情感分类。 1&#xff09;TextCNN&#xff1a; 文本的卷积核是一维的。 2&#xff09;文本卷积运算&#xff1a;

【目标检测】DEtection TRansformer (DETR)

一、前言 论文&#xff1a; End-to-End Object Detection with Transformers 作者&#xff1a; Facebook AI 代码&#xff1a; DEtection TRansformer (DETR) 特点&#xff1a; 无proposal&#xff08;R-CNN系列&#xff09;、无anchor&#xff08;YOLO系列&#xff09;、无NM…

淘宝新店铺一般多久开始有单

淘宝新店铺一般多久开始有单 淘宝推广可以使用3an推客。3an推客&#xff08;CPS模式&#xff09;给商家提供的营销工具&#xff0c;由商家自主设置佣金比例&#xff0c;激励推广者去帮助商家推广商品链接&#xff0c;按最终有效交易金额支付佣金&#xff0c;不成交不扣费。是商…

DRF版本组件源码分析

DRF版本组件源码分析 在restful规范中要去&#xff0c;后端的API中需要体现版本。 3.6.1 GET参数传递版本 from rest_framework.versioning import QueryParameterVersioning单视图应用 多视图应用 # settings.pyREST_FRAMEWORK {"VERSION_PARAM": "versi…

[C++][数据结构]二叉搜索树:介绍和实现

二叉搜索树 概念 二叉搜索树又称二叉排序树&#xff0c;它是一棵空树&#xff0c;或者是具有以下性质的二叉树: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节点的值它的左右子树也…

【数据结构】这样学习串的朴素模式匹配算法,简直不要太容易……

串的朴素模式匹配算法 导读一、串的模式匹配1.1 模式匹配是什么&#xff1f;1.2 为什么要有模式匹配算法&#xff1f; 二、朴素模式匹配算法2.1 算法底层逻辑2.2 算法实现2.2.1 过程解析2.2.2 思路分析2.2.3 思路总结2.2.4 代码编写数据类型函数的三要素函数主体 2.2.5 代码测试…

ThreeJS:项目搭建

介绍如何基于Vite、Vue、React构建ThreeJS项目。 Vite项目 1. 初始化项目&#xff0c;命令&#xff1a;npm init vitelatest&#xff0c; 2. 安装依赖&#xff0c;命令&#xff1a;npm install&#xff0c; 3. 启动项目&#xff0c;命令&#xff1a;npm run dev。 4. 样式初始…

06 - metastore服务、hive服务启动脚本以及相关使用技巧

目录 1、metastore服务 1.1、metastore运行模式 1.2、metastore部署 1.3、测试 2、编写Hive服务启动脚本 3、Hive使用技巧 3.1、Hive常用交互命令 3.2、Hive参数配置方式 3.3、Hive常见属性配置 1、metastore服务 Hive的metastore服务的作用是为Hive CLI或者Hiveserv…

【面试经典 150 | Kadane】环形子数组的最大和

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;求最大非空子数组和最小子数组和 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及…

【Java基础】Maven安装与配置

1. 前言 Maven是一个基于 Java 的项目管理工具&#xff0c;因此最基本的要求是在计算机上安装 JDK。 Maven 对系统要求如下表&#xff1a; 2. Java环境设置 在 Java 官方网站 下载并安装 JDK 7.0 及以上版本&#xff0c;如果您不了解 JDK 的安装和配置&#xff0c;请参考&…