深度学习——前馈全连接神经网络(鸢尾花)

前馈全连接神经网络对鸢尾花数据集进行分类

    • 1.导入所需要的包
    • 2.打印训练集和测试集二维数组
    • 3.定义模型
    • 4.打印模型信息
    • 5.权重和偏执
    • 6.编译网络和训练网络
    • 7.打印二维数据表格
    • 8.绘制图像
    • 9.查看准确率

1.鸢尾花数据集可以用 from sklearn.datasets import load_iris 方式获取,并将获取的数据划分为训练集、验证集、测试集 。
2. 构建一个10层网络,隐藏层每层对应16个神经元,激活函数都是relu函数,输入输出神经元自己判断 3. 为提高准确率,可以在全连接层后加dropout层,防止过拟合。添加方式:keras.layers.Dropout(rate=0.2)

1.导入所需要的包

numpy
numpy 是一个用于科学计算的 Python 库,提供了强大的多维数组和矩阵操作功能。
pandas
pandas 是一个用于数据分析和数据处理的 Python 库,提供了 DataFrame 和 Series 两种数据结构。
它用于数据导入、数据清洗、数据转换、数据分析和数据可视化等。
matplotlib.pyplot
matplotlib 是 Python 的一个绘图库,用于数据可视化。
pyplot 是 matplotlib 的一个接口,提供了一系列的函数来绘制图表,如折线图、散点图、直方图等。
sklearn.datasets
sklearn.datasets 是 scikit-learn 库的一部分,提供了各种机器学习算法所需的示例数据集。
它包括分类、回归、聚类、文本和图像数据集。
sklearn.model_selection
sklearn.model_selection 是 scikit-learn 库的一部分,提供了用于模型训练和评估的各种功能。
它包括数据划分、交叉验证、网格搜索等。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

2.打印训练集和测试集二维数组

iris = load_iris()
x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target,test_size=0.2,random_state=23)
X_train,X_valid,y_train,y_valid = train_test_split(x_train,y_train,test_size=0.2,random_state=12)
print(X_valid.shape)
print(X_train.shape)

运行结果:
在这里插入图片描述

3.定义模型

先下载tensorflow包,在终端输入conda install tensorflow
如果下载不了的话,请按照资源文档操作。
TensorFlow
tensorflow 是 TensorFlow 的官方 Python 库,它提供了一个用于构建和训练深度学习模型的框架。
它包括数据处理、模型构建、训练、评估和预测等功能。

Keras
tf.kerasTensorFlow 的一个高级 API,它是一个简单易用的神经网络 API,可以运行在 TensorFlowTheanoCNTK 之上。
它提供了模型构建、编译、训练和评估的简洁接口。
tf.keras 支持各种类型的模型,包括卷积神经网络 (CNN)、循环神经网络 (RNN)、长短期记忆网络 (LSTM) 等。

import tensorflow as tf
from tensorflow import keras

导入这个包的过程需要很久,请耐心等待
构建的深度学习模型

model = keras.models.Sequential([
	#Flatten Layer: 输入层,形状为 [4]。这个层将输入数据展平为一维数组,对于分类问题,通常输入是一个形状为 [样本数, 特征数] 的二维数组,所以这里的 4 可能是输入特征的数量。
    keras.layers.Flatten(input_shape=[4]),
    #Dense Layer 1: 第一个全连接层,有 16 个神经元,使用 ReLU 激活函数。
    keras.layers.Dense(16,activation='relu'),
    keras.layers.Dense(16,activation='relu'),
    keras.layers.Dense(16,activation='relu'),
    keras.layers.Dense(16,activation='relu'),
    keras.layers.Dense(16,activation='relu'),
    keras.layers.Dense(16,activation='relu'),
    keras.layers.Dense(16,activation='relu'),
    keras.layers.Dense(16,activation='relu'),
    keras.layers.Dense(16,activation='relu'),
    keras.layers.Dense(16,activation='relu'),
    #Dropout Layer: 包含一个 Dropout 层,其 rate 参数设置为 0.2,意味着每个神经元被随机丢弃的概率是 20%。
    keras.layers.Dropout(rate=0.2),
    #Dense Layer 11: 最后一个全连接层,有 3 个神经元,使用 softmax 激活函数。由于使用了 softmax 激活函数,这通常意味着这是一个多分类问题,其中 3 表示可能的类别数。
    keras.layers.Dense(3,activation='softmax'),
])

4.打印模型信息

model.summary() 方法用于打印模型的摘要信息,包括层数、每个层的参数数量、层的形状等。

model.summary()

在这里插入图片描述

5.权重和偏执

get_weights() 方法来获取一个层的权重和偏置

model.layers[1]

在这里插入图片描述

weight_1,bias_1 = model.layers[1].get_weights()
print(weights_1.shape)
print(bias_1.shape)

在这里插入图片描述

6.编译网络和训练网络

model.compile():用于指定模型的损失函数、优化器和评估指标
loss='sparse_categorical_crossentropy':模型的损失函数为
optimizer=‘sgd’:这行代码指定模型的优化器为sgd
metrics=[‘accuracy’]:这行代码指定模型的评估指标为accuracy

model.compile(loss='sparse_categorical_crossentropy',
             optimizer='sgd',metrics=["accuracy"])

model.fit()是一个函数,用于使用训练数据来训练模型
X_train:训练数据的输入特征,
y_train:训练数据的标签
batch_size=32:每次梯度下降更新时使用的样本数量
epochs=30:训练过程将运行的完整周期数。
validation_data=(X_valid, y_valid):验证数据的输入特征和标签。

h = model.fit(X_train,y_train,batch_size=10,epochs=50,validation_data=(X_valid,y_valid))

在这里插入图片描述

7.打印二维数据表格

随着迭代次数的增加,损失函数的数值loss越来越小,而在验证集上的准确率accuracy越来越高,这些信息都保存在h.history中

pd.DataFrame(h.history)

在这里插入图片描述

8.绘制图像

首先将h.history字典转换为一个Pandas DataFrame
h.history通常包含在训练过程中收集的损失(loss)和准确度(accuracy)等指标,它们是训练周期的迭代结果。
figsize=(8,5)指定了图表的尺寸,其中8表示宽度,5表示高度。

pd.DataFrame(h.history).plot(figsize=(8,5))
plt.grid(True)
plt.gca().set_ylim(0,1.3)
plt.show()

在这里插入图片描述

9.查看准确率

model.evaluate()是一个函数,用于评估模型的性能
X_test:这是测试数据的输入特征
y_test:这是测试数据的标签
batch_size=1:这行代码指定评估过程中每次评估的样本数量。

model.evaluate(x_test,y_test,batch_size = 1)

在这里插入图片描述

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

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

相关文章

医院预约挂号|基于Springboot+vue的医院预约挂号系统小程序的设计与实现(源码+数据库+文档)

医院预约挂号系统小程序 目录 基于Springboot+vue的医院预约挂号系统小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 1小程序端 后台功能模块 4.2.1管理员功能 4.2.2医生功能 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选…

jsp 实验16 MVC 表白墙

源代码以及执行结果截图&#xff1a; ExpressWish_Bean.java package web; import java.util.HashMap; import java.util.ArrayList; import java.util.Iterator; public class ExpressWish_Bean { public HashMap<String,ExpressWish> wishList; ArrayList&…

#内部类#

1,概念 如果一个类定义在另一个类的内部&#xff0c;这个内部类就叫做内部类。内部类是一个独立的类&#xff0c;它不属于外 部类&#xff0c;更不能通过外部类的对象去访问内部类的成员。外部类对内部类没有任何优越的访问权限。重点&#xff1a;内部类是一个独立的类 注意&…

JavaEE 多线程详细讲解(2)

1.线程不安全分析 &#xff08;1&#xff09;线程不安全的主要原因就是&#xff0c;系统的抢占式执行&#xff0c;对于内核设计者来说&#xff0c;这是非常方便的一个执行方式&#xff0c;但是这却却导致线程不安全的问题&#xff0c;也有不抢占执行的系统&#xff0c;但是这种…

从心理学角度看,GPT 对人有什么影响?

开启个性化AI体验&#xff1a;深入了解GPT的无限可能 导言 GPT 与我们日常生活的融合标志着技术进步的重大飞跃&#xff0c;为提高效率和创新提供了前所未有的机遇。然而&#xff0c;当我们与这些智能系统日益紧密地交织在一起时&#xff0c;探索它们对个人产生的细微的心理影响…

15-LINUX--线程的创建与同步

一.线程 1.线程的概念 线程是进程内部的一条执行序列或执行路径&#xff0c;一个进程可以包含多条线程。 2.线程的三种实现方式 ◼ 内核级线程&#xff1a;由内核创建&#xff0c;创建开销大&#xff0c;内核能感知到线程的存在 ◼ 用户级线程&#xff1a;线程的创建有用户空…

抖音APP运用的AI技术拆解

1.推荐系统&#xff08;RS&#xff09; 用户画像&#xff1a;根据用户的信息&#xff08;如地区、性别、年龄、收藏、关注......&#xff09;进行分析&#xff0c;构建用户画像&#xff0c;对用户进行分类&#xff1b; 行为分析&#xff1a;将用户的显形行为数据&#xff08;如…

PaddleOCR使用

最近在项目过程中需要用到文字识别的能力&#xff0c;之前没有接触过。需要对现有的开源能力进行调研和学习。 1. 基本概念 1.1 PaddlePaddle PaddlePaddle 是一个由百度开源&#xff0c;基于 Python 的深度学习框架。PaddlePaddle 针对不同的硬件环境提供了不同的安装包或安…

2024/5/9 QTday4

完成定时器制作 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);connect(&timer2, &QTimer::timeout, this, &Widget::label_begin);connect(&…

Linux0.11中MINIX 文件系统

阅读linux 的源码的时候对minix 文件系统有很多的疑惑&#xff0c;根据自己的认识将这些做一个总结。 MINIX 文件系统由六个部分组成&#xff0c;分别是引导块&#xff0c;超级块&#xff0c;i结点位图&#xff0c;逻辑块位图&#xff0c;i结点&#xff0c;数据块。 引导块&am…

Python 中 “yield“ 的不同行为

在我们使用Python编译过程中&#xff0c;yield 关键字用于定义生成器函数&#xff0c;它的作用是将函数变成一个生成器&#xff0c;可以迭代产生值。yield 的行为在不同的情况下会有不同的效果和用途。 1、问题背景 在 Python 中&#xff0c;“yield” 是一种生成器&#xff0…

【Pytorch】1.读取训练数据集

导入Dataset类 from torch.utils.data import Dataset # 注意是Dataset&#xff08;大写&#xff09;的才是类通过jupyter我们可以阅读一下Dataset类的具体使用方法 help(Dataset) # 或者直接 Dataset??我们可以看到具体对Dataset类的解释 从蓝色字体我们可以得出 所有的代…

鸿蒙开发-ArkTS语言-容器-非线性容器

鸿蒙开发-UI-web 鸿蒙开发-UI-web-页面 鸿蒙开发-ArkTS语言-基础类库 鸿蒙开发-ArkTS语言-并发 鸿蒙开发-ArkTS语言-并发-案例 鸿蒙开发-ArkTS语言-容器 文章目录 前言 一、非线性容器 1.HashMap 2.HashSet 3.TreeMap 4.TreeSet 5.LightWeightMap 6.LightWeightSet 7.P…

vue uniapp 小程序 判断日期是今天(显示时分秒)、昨天、本周的周几、超出本周显示年月日

效果图&#xff1a; util.js /*** 转换时间*/ const messageFormat (datetime) >{ let result "";let currentTime new Date();if(isToday(datetime)){result datetime.substring(11,16);}else if(isYesterday(datetime)){result "昨天";}else if(…

EasyExcel导出带自定义下拉框数据的Excel模板

文章目录 前言&#x1f4dd;一、导入依赖二、创建导出工具1.创建模板实体类2.创建自定义注解3.添加动态选择接口4.EasyExcelUtil工具类 三、导出、导入Excel接口1.导出接口2.导入接口3.导出结果 总结 前言&#x1f4dd; 在项目中导入excel时需要通过下拉框选择值传入&#xff…

解决在Outlook中预定Teams会议不显示入会链接的问题

今天遇到一个很蛋疼的teams问题&#xff0c;花了点时间才解决。本来以为是很简单的问题&#xff0c;随便网上冲浪一下就能找到答案的&#xff0c;结果根本就没有好的解决方案&#xff0c;所以我分享出来希望后来的老哥少走点弯路。 问题描述 简单来说&#xff0c;就是在Outlo…

Pytorch入门—Tensors张量的学习

Tensors张量的学习 张量是一种特殊的数据结构&#xff0c;与数组和矩阵非常相似。在PyTorch中&#xff0c;我们使用张量来编码模型的输入和输出&#xff0c;以及模型的参数。 张量类似于NumPy的ndarrays&#xff0c;只是张量可以在GPU或其他硬件加速器上运行。事实上&#xf…

IntelliJ IDEA 配置JDK

IntelliJ IDEA-之配置JDK 我们的开发神器IDEA安装好了之后&#xff0c;在实际开发中&#xff0c;我们如何去配置好JDK的版本呢&#xff1f; 注意&#xff1a;需要保证JDK在已经成功安装的情况下&#xff0c;再进行IDEA的配置 现在就行动&#xff0c;让IntelliJ IDEA成为你征…

Windows系统使用powershell批量移动特定起始位置的“快捷方式”

移动特定起始位置的“快捷方式” 快捷方式都对应一个的目标和“起始位置”&#xff0c;现在想要把特定起始位置的快捷方式移动到一个文件夹中。 新建文本文档&#xff0c;输入如下内容&#xff1a; # 设置变量 $oldPath "D:\111\111_1" $newPath "D:\111\1…

C语言—操作符详解(操作符、进制转换、原码反码补码、结构体)

1.操作符分类 算术操作符&#xff1a; 、- 、 * 、 / 、%移位操作符&#xff1a;<< >> //移动的是二进制位位操作符&#xff1a;& | ^ //使用二进制位进行计算赋值操作符&#…