Python深度学习实战-基于class类搭建BP神经网络实现分类任务(附源码和实现效果)

news2024/9/21 15:11:41

实现功能

上篇文章介绍了用Squential搭建BP神经网络,Squential可以搭建出上层输出就是下层输入的顺序神经网络结构,无法搭出一些带有跳连的非顺序网络结构,这个时候我们可以选择类class搭建封装神经网络结构。

  1. 第一步:import tensorflow as tf:导入模块

  2. 第二步:制定输入网络的训练集和测试集

  3. 第三步:搭建网络结构

  4. 第四步:model.compile():配置训练方法

  5. 第五步:model.fit():执行训练过程

  6. 第六步:model.summary():打印网络结构

实现代码

import tensorflow as tf
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

class NeuralNetwork(tf.keras.Model):
    def __init__(self, input_size, hidden_size, output_size):
        super(NeuralNetwork, self).__init__()
        self.dense1 = tf.keras.layers.Dense(hidden_size, activation='relu')
        self.dense2 = tf.keras.layers.Dense(hidden_size, activation='relu')
        self.dense3 = tf.keras.layers.Dense(output_size, activation='softmax')

    def call(self, inputs):
        x = self.dense1(inputs)
        x = self.dense2(x)
        x = self.dense3(x)
        return x
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target

# 数据预处理
scaler = StandardScaler()
X = scaler.fit_transform(X)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建模型实例
input_size = X.shape[1]
hidden_size = 64
output_size = len(set(y))
model = NeuralNetwork(input_size, hidden_size, output_size)

# 编译模型
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# 训练模型
model.fit(X_train, y_train, epochs=10, batch_size=32)
model.summary()

# 评估模型
test_loss, test_accuracy = model.evaluate(X_test, y_test)

实现效果

本人读研期间发表5篇SCI数据挖掘相关论文,现在某研究院从事数据挖掘相关科研工作,对数据挖掘有一定认知和理解,会结合自身科研实践经历不定期分享关于python、机器学习、深度学习基础知识与案例。

致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。

邀请三个朋友关注V订阅号:数据杂坛,即可在后台联系我获取相关数据集和源码,送有关数据分析、数据挖掘、机器学习、深度学习相关的电子书籍。

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

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

相关文章

手机扫描二维码的测试用例

二维码概述 二维码本身就是一个URL,只是通过QR码的形式把URL和用户身份信息转换成二进制的0和1,二维码中黑色的色素块代表1,白色的色素块代表0,我们通过相机扫码,就获取了二维码中的URL。 ****测试用例罗列&#xff08…

通过IP地址可以做什么

通过IP地址可以做很多事情,因为它是互联网通信的基础之一。本文将探讨IP地址的定义、用途以及一些可能的应用。 IP地址的用途 1. 设备标识:IP地址用于标识互联网上的每个设备,这包括计算机、服务器、路由器、智能手机等。它类似于我们日常生…

美摄AR人像美颜,全新视觉体验

企业越来越重视通过视觉媒体来提升品牌形象和吸引客户。然而,传统的摄影技术往往无法满足企业对于高质量、个性化视觉内容的需求。这时,美摄AR人像美颜解决方案应运而生,它以其独特的技术和优势,为企业带来了全新的视觉体验。 美…

解读意大利葡萄酒分类系统

由于该国众多的产区和复杂的品种,要想真正掌握意大利葡萄酒是相当困难的。仅仅是试图从复杂混乱的葡萄酒标签中辨别信息的想法就足以让许多人焦虑不安。 位于托斯卡纳的基安蒂酒地区,Il Ciliegio生产的葡萄酒标签上包含以下名称之一:基安蒂酒科利塞内西…

2-Java进阶知识总结-3-集合

文章目录 补充知识-泛型版本信息泛型类常见泛型标识符泛型应用实例注意事项 泛型方法非静态的泛型方法静态的泛型方法:必须声明出自己独立的泛型 泛型接口泛型通配符 补充知识-树基本概念二叉树-普通二叉树二叉树-二叉查找树添加节点流程优点、不足 二叉树-平衡二叉…

了解松散类型

目录 松散类型带来的优势 灵活性和便利性 快速原型开发 动态类型 松散类型的注意事项 类型转换 隐式类型转换 如何正确使用松散类型? 动态类型 便捷的类型转换 灵活性与易用性 潜在的隐式类型转换 避免混淆和错误 当谈到JavaScript编程语言时&#xff…

app拉新平台推广渠道,地推网推接单神器

地推或网推不知道在哪里接单?信息差太大导致价格参差不齐,聚量推客人人高价置顶 聚量推客自己本身是服务商直营平台 相对来说数据更好,我们也拿到了平台首码:000000 填这个就行,属于官方渠道 平台最新上架的产品有&a…

Java即时通讯源码 IM即时通讯系统源码

Java即时通讯源码 IM即时通讯系统源码 基本功能说明及介绍: 客户端:安卓,苹果,(可赠送web,pc) 开发语言: Java OC C# 运行软件:eclipse Java xcode 数据库&#xff…

选择工业交换机时,需要关注哪些方面的性能?

在工业自动化、能源、交通等领域的网络通信中,工业交换机是一种非常重要的网络设备。它的性能和可靠性直接影响到整个网络的稳定性和安全性。因此,在选择工业交换机时,我们需要关注以下几个方面的性能: 1. 抗干扰性能:…

linux下安装 Chrome 和 chromedriver 以及 selenium webdriver 使用

1 安装 Chrome yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm2 下载 chromedriver # 进入下载目录 cd soft/crawler_tools# 查看chrome 版本号 google-chrome --version# 在chromedriver下载地址中找到对应版本,下载对…

音频类型识别方案-audioset_tagging

audioset_tagging github上开源的音频识别模型,可以识别音频文件的类型并打分给出标签占比,如图 echo off set CHECKPOINT_PATH"module/Cnn14_mAP0.431.pth" set MODEL_TYPE"Cnn14" set CUDA_VISIBLE_DEVICES0 python pytorch\in…

谈谈多用户商城系统的优缺点

多用户商城系统是一种基于互联网的电子商务平台,可以给多个商家提供在线销售、交易和管理的功能。这种系统的出现,为商家和消费者之间的交流和交易提供了更加便捷和高效的方式。那么,多用户商城系统的优缺点有哪些呢? 一、多用户商…

实在智能受邀参加第14届珠中江数字化应用大会,AI赋能智能制造,共话“湾区经验”

制造业是实体经济的主体,是技术创新的主战场,是供给侧结构性改革的重要领域。抢占新一轮产业竞争制高点,制造业的数字化转型已成为行业升级的必由之路。 10月21日,第14届“珠中江”(珠海、中山、江门)数字…

Amazon商品详情API接口(标题|主图|SKU|价格|库存)

亚马逊商品详情API接口是亚马逊平台提供的API接口,可以通过程序调用API来获取亚马逊商品的相关数据,包括商品价格、库存、评价等信息。这些信息可以帮助开发者和商家更好地了解商品详情,优化用户体验,支持购买决策,竞品…

软件兼容性测试对软件产品起到什么作用?CMA、CNAS软件测评中心分享

软件兼容性测试是指检查软件之间能否正确地进行交互和共享信息。随着用户对来自各种类型软件之间共享数据能力和充分利用空间同时执行多个程序能力的要求,测试软件之间能否协作变得越来越重要。软件兼容性测试工作的目标是保证软件按照用户期望的方式进行交互。 1、…

哪些车企AEB标配率「不及格」

对于汽车智能化来说,基础安全不分高低配。但实际情况,却是另一番景象。 在全球范围,目前不少国家及地区的监管机构正在考虑将AEB(紧急制动系统)作为乘用车的标配纳入法规,“这是道路安全向前迈出了重要的一…

21.2 Python 使用Scapy实现端口探测

Scapy 是一款使用纯Python编写的跨平台网络数据包操控工具,它能够处理和嗅探各种网络数据包。能够很容易的创建,发送,捕获,分析和操作网络数据包,包括TCP,UDP,ICMP等协议,此外它还提…

【QT开发(15)】QT在没有桌面的系统中可以使用

在没有桌面的系统中,可以使用QT库。QT库可以在没有图形用户界面(GUI)的环境中运行,例如在服务器或命令行终端中。 这样就可利用Qt的: 对象模型,信号和槽容器类多线程和多进程网络编程 等

在Linux上实现ECAT主站

在Linux上实现ECAT主站 引言介绍EtherCATSOEM 使用下载ECAT主站编译 引言 EtherCAT由一个主站设备和多个从站设备组成。主站设备使用标准的以太网控制器,具有良好的兼容性,任何具有网络接口卡的计算机和具有以太网控制的嵌入式设备都可以作为EtherCAT的…

使用canvas实现时间轴上滑块的各种常用操作(仅供参考)

一、简介 使用canvas,模拟绘制时间轴区域,有时间刻度标尺,时间轴区域上会有多行,每行都有一个滑块。 1、时间刻度标尺可以拖动,会自动对齐整数点秒数,最小步数为0.1秒。 2、滑块可以自由拖动&#xff0c…