深度学习(一)

深度学习(一)

一、实验目的

掌握前馈全连接神经网络,具体包括:

(1) 前馈全连接神经网络的网络结构

(2) 前馈神全连接经网络的工作原理

(3) 前馈全连接神经网络的代码实现

二、实验内容

1. 导入常用工具包

2. 数据导入与数据观察

3. 数据预处理

4. 前馈全连接神经网络(Sequential模型)

5. 课堂练习:尝试用之前介绍的Sequential()方法,构建前馈全连接神经网络对鸢尾花数据集进行分类

三、实验步骤及结果

1. 导入常用工具包

NumPy: 这是一个强大的数学库,用于进行数值计算。它提供了多维数组对象和一系列数学函数,可以用来处理线性代数、傅里叶变换、随机数等。

Pandas: 这是一个数据分析和操作的库,提供了DataFrame对象,可以用来处理结构化数据(类似于Excel表格)。它支持数据的导入导出、索引、数据清洗、数据可视化等功能。

Matplotlib: 这是一个绘图库,用于创建静态、交互式和动画可视化。它提供了丰富的函数来生成条形图、散点图、线图、饼图等不同类型的图表。

sklearn.datasets: 这是Scikit-learn库的一部分,专门用于加载流行的数据集,如Iris、digits、wine等,用于机器学习实验。

sklearn.model_selection: 同样是Scikit-learn库的一部分,提供了数据集划分、交叉验证、学习曲线等模型选择和评估的功能。

tensorflow.keras.layers: TensorFlow是一个开源的机器学习库,其keras接口提供了一种更简洁、更模块化的方式来构建和训练神经网络。layers模块包含构建神经网络所需的各种层,如Input、Dense(全连接层)、concatenate(拼接层)等。

tensorflow.keras.models: 这是TensorFlow Keras接口的一部分,用于构建和训练模型。Model类是主要的构造块,用于创建神经网络模型。

tensorflow.keras.backend: 这是TensorFlow Keras的底层接口,提供了许多在构建和训练模型时可能需要的底层函数和常量。它允许用户直接与TensorFlow的后端进行交互,进行高级操作。

import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom sklearn.datasets import load_irisfrom sklearn.model_selection import train_test_splitfrom tensorflow.keras.layers import Input, Dense, concatenatefrom tensorflow.keras.models import Modelfrom tensorflow.keras import backend as K

2.数据导入与观察数据

path = "C:/Users/14919/OneDrive/Desktop/工坊/深度学习-工坊/MNIST/"train_Data = pd.read_csv(path+'mnist_train.csv',header = None) # 训练数据test_Data= pd.read_csv(path+'mnist_test.csv',header = None) # 测试数据# 观察数据print('Train data')train_Data.info()print('nTest data')test_Data.info()

使用Python的pandas库来读取MNIST数据集的训练集和测试集。MNIST数据集是一个手写数字的数据集,包含了0到9的手写数字的图片。

定义=一个路径path,这个路径是指向MNIST数据集所在的文件夹。然后使用pandas的read_csv函数读取训练集和测试集的数据,并将数据的表头设置为None,这意味着数据文件中没有表头。

使用info()函数来观察数据的信息。这个函数会输出数据的基本信息,包括数据的行数、列数、每列的数据类型、非空值的数量等。

x = train_Data.iloc[0] # 取第一行数据y = x[0] # 标签信息img = x[1:].values.reshape(28,28) # 将1*784行转化成28*28plt.imshow(img) # 画图plt.title('label = '+ str(y))plt.show()

从MNIST数据集中提取第一行数据,将其解析为图像和对应的标签,并使用matplotlib库来显示这个图像。

x = train_Data.iloc[0]:使用pandas的`iloc`方法来提取训练数据集的第一行。在MNIST数据集中,每一行代表一个手写数字的图像,第一列是标签(即这个图像代表的数字),其余列是图像的像素值。

y = x[0]:从第一行数据中提取第一个元素,即图像的标签。这个标签是一个整数,表示图像中的手写数字。

img = x[1:].values.reshape(28,28):从第一行数据中提取从第二个元素开始的所有元素,即图像的像素值。.values将pandas的Series对象转换为NumPy数组,然后使用reshape方法将这个一维数组转换为一个28x28的二维数组。这是因为MNIST图像的原始大小是28x28像素。

plt.imshow(img):使用matplotlib的imshow函数来显示图像。这个函数可以显示二维数组作为图像。

plt.title('label = '+ str(y)):设置图像的标题,显示图像的标签。

plt.show():调用`show`函数来显示图像。这会在一个新的窗口中显示图像,标题为图像的标签。

3.数据预处理

X = train_Data.iloc[:,1:].valuesy = train_Data.iloc[:,0].values

print("数据X中的最大值:",X.max())print("数据X中的最小值:",X.min())

X = train_Data.iloc[:,1:].values:使用pandas的iloc方法来提取训练数据集中所有行的第2列到最后一列的数据,即所有图像的像素值。.values将提取的数据转换为NumPy数组。这样,X就变成了一个二维数组,其中每个元素都是一个图像的所有像素值,且每个图像展平为一个长度为784(28x28)的一维数组。

y = train_Data.iloc[:,0].values:使用iloc方法提取训练数据集中所有行的第1列数据,即所有图像的标签。这样,y就变成了一个一维数组,其中每个元素都是一个图像对应的数字标签。

print("数据X中的最大值:",X.max()):使用NumPy的max函数来找出X中的最大值,并打印出来。这个最大值代表了图像中像素的最大亮度值,对于MNIST数据集,由于像素值是灰度值,最大值为255,代表白色。

print("数据X中的最小值:",X.min()):使用NumPy的min函数来找出X中的最小值,并打印出来。这个最小值代表了图像中像素的最小亮度值,对于MNIST数据集,最小值为0,代表黑色。

# 归一化X = X/255# 此时将数值大小缩小在[0,1]范围内,重新观察数据中的最大、小值print("数据X中的最大值:",X.max())print("数据X的最小值:",X.min())

对特征数据X进行了归一化处理。归一化是一种常用的数据预处理技术,它将数据缩放到一个特定的范围,通常是[0, 1]或[-1, 1]。在这个例子中,数据被缩放到了[0, 1]的范围内。

X_valid, X_train = X[:5000],X[5000:]y_valid, y_train = y[:5000],y[5000:]X_test,y_test = test_Data.iloc[:,1:].values/255, test_Data.iloc[:,0].values

从原始的MNIST训练数据集中分割出一个验证集和一个新的训练集,并对测试集进行归一化处理。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型对齐方法笔记二:基于Rank的对齐方法RRHF和PRO

文章目录 RRHFPRO将RLHF嫁接到PRO 参考资料 RRHF RRHF(Rank Responses to align Human Feedback)出自2023年4月的论文《RRHF: Rank Responses to Align Language Models with Human Feedback without tears》,是较早提出的不需要使用PPO来对齐人类偏好的方法。 设…

nginx安装部署问题

记一次nginx启动报错问题处理 问题1 内网部署nginx,开始执行make,执行不了,后面装了依赖的环境 yum install gcc-c 和 yum install -y pcre pcre-devel 问题2,启动nginx报错 解决nginx: [emerg] unknown directive “stream“ in…

Keil5 ~STM32报错Solutions#1

一、error: #268: declaration may not appear after executable statement in block

tar 详细说明

tar命令在Unix和类Unix系统中被广泛用于打包和压缩文件。以下是对tar命令的详细说明: 一、命令概述 tar命令的名称来源于“tape archive”(磁带存档),最初设计用于在磁带上创建备份。现在,它已成为在Unix和类Unix系统…

Thingsboard规则链:Customer Details节点详解

在物联网(IoT)平台Thingsboard的规则引擎体系中,Customer Details节点是一个功能强大的组件,它专为处理与客户(Customer)实体相关的综合信息而设计。这个节点不仅能够读取客户的基本属性,还能提…

【NumPy】全面解析subtract函数:高效数组减法指南

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

GPT-4o:人工智能新纪元的开端

引言 近年来,人工智能领域的发展日新月异,特别是在自然语言处理(NLP)领域,各种生成预训练模型不断推陈出新。自OpenAI发布GPT-3以来,生成预训练模型在文本生成、语言理解等任务中展现了强大的能力。近期&a…

报表中的某个单元格如何绑定实时数据库的统计值?

在报表中绑定实时数据库的统计值通常涉及几个关键步骤。具体方法可能因所使用的报表工具、数据库类型和技术栈而异,但以下是一个一般性的流程: 1. 确定数据源: 首先,你需要明确你的报表要连接哪个数据库或数据源。这可能是关系型…

网工内推 | 国企信息安全工程师,CISP认证优先

01 浙江省公众信息产业有限公司 🔷招聘岗位:安全运营工程师 🔷职责描述: 1. 负责公司内部安全运营平台及其子系统的安全事件管理、事件发现分析、应急响应和系统维护等; 2. 负责风险和漏洞管理,包括漏洞预…

一行命令将已克隆的本地Git仓库推送到内网服务器

一、需求背景 我们公司用gitea搭建了一个git服务器,其中支持win7的最高版本是v1.20.6。 我们公司的电脑在任何时候都不能连接外网,但是希望将一些开源的仓库移植到内网的服务器来。一是有相关代码使用的需求,二是可以建设一个内网能够查阅的…

2019美亚

1.何源是一名 25 岁的客服人员,在一间电讯公司工作。某日,何源在用 iPhone 手机在政府建筑物 中偷拍车牌期间被警员截停,盘问期间警员检查手机相册发现多张车牌图片,何源情绪紧张,趁 警员不被,抢过手机丢入…

模型实战(22)之 C++ - tensorRT部署yolov8-cls 目标分类

C++ - tensorRT部署yolov8-cls 目标分类 在检测应用场景中如果有同等类别不同形态的目标,单纯的目标检测可能达不到实用或者想要的精度,这就需要衔接一步分类python环境下如何直接调用推理模型转换并导出:pt -> onnx ->.engineC++ tensorrt 部署分类模型1.Python环境下…

OrangePi Kunpeng Pro 开发板测评 | AI 边缘计算 大模型部署

0 前言 此次很幸运能够参与 OrangePi Kunpeng Pro 开发板的测评,感谢 CSDN 给予这次机会。 香橙派联合华为发布了基于昇腾的 OrangePi Kunpeng Pro 开发板,具备 8TOPS 的 AI 算力,能覆盖生态开发板者的主流应用场景,具备完善的配…

python规则表达式re模块:笔记0529

Python语言使用printf printf:https://blog.51cto.com/u_16099181/7758801 使用python进行自动化运维脚本编写时经常需要处理远程设备返回到控制字符,比如下面这个例子,控制字符在使用print进行调试输出时因为是非ascii字符不显示&#xff0…

ai写作助手有哪些,5款强大的ai写作工具为你所用

在科技日新月异的时代,人工智能已经悄然走进我们的生活,为我们带来了诸多便利。其中,AI写作助手作为一种创新的工具,正在改变着我们的写作方式。它们不仅能够提供创意灵感,还能帮助我们提高写作效率,让文字…

C语言面试题1-10

C语言中的内存管理及相关问题探讨 在C语言编程中,内存管理是一个至关重要的概念,掌握内存的分布及其操作不仅能够提高代码效率,还能避免常见的内存泄漏等问题。本文将详细介绍C语言中内存的分布、堆区和栈区的区别、标识符的命名规则、定义和…

【RAG论文】文档树:如何提升长上下文、非连续文档、跨文档主题时的检索效果

RAPTOR Recursive Abstractive Processing for Tree-Organized RetrievalICLR 2024 Stanfordhttps://arxiv.org/pdf/2401.18059 RAPTOR(Recursive Abstractive Processing for Tree-Organized Retrieval)是一种创建新的检索增强型语言模型,它…

【前端每日基础】day28——async/await

async/await 是ES2017(ES8)引入的用于处理异步操作的语法糖,基于Promise实现。它使得异步代码看起来像同步代码,从而提高了代码的可读性和可维护性。以下是对 async/await 的详细讲解。 基本语法 async 函数 在一个函数前加上 as…

条件竞争漏洞

条件竞争漏洞 postMessage的客户端竞争条件 Summary AppCache可以被利用来强制浏览器加载后备的HTML页面,允许像Cookie填充(stuffing)这样的攻击,迫使出错并泄露敏感的URL。在负责任披露后,这个问题已经在各大浏览器中得到修复。对AWS S3和Google Cloud等云存储的上传策略(u…

随笔(一)——项目代码优化

文章目录 前言一、if判断点对象赋值1.需求2.原本方法3.优化方法 二、数组的inclueles方法的使用1.需求2.原本方法3.优化方法 三、数组对象的按顺序渲染Object.entries0. Object.entries的基本使用1.需求2.原本方法3.优化方法4. 问题 前言 提示: 一、if判断点对象赋…