人工神经网络

news/2024/4/16 13:52:19/文章来源:https://blog.csdn.net/lt6666678/article/details/130321918

1. 单个神经元

🍑 神经网络 即 模型
🍤 输入 四个参数 --> 结果
在这里插入图片描述
🍑 模型训练(学习) 例子
在这里插入图片描述
🍑 模型的输入x 权值ω 减去阈值θ --> 激活函数 f
🍑 输出 yi (向下传递 或 直接输出)
在这里插入图片描述

2. 经典网络结构

🍑 多个神经单元 有机组合
🍤 输入层 --> 隐层 --> 输出层
⭐ 调整 权值和阈值 使得模型准确
在这里插入图片描述

2. 神经网络工作流程

🍑 样本的自变量 --> 神经网络 --> 样本的目标值
在这里插入图片描述
🍑 不断训练,直接输出与目标值接近
🍤 不稳定 --> 加一层
🍤 改变每一层的权值和阈值

4. 梯度下降法(修正网络参数)

🍑 减小 E 的值
🍑 经典 sigmoid(x) 激活函数
在这里插入图片描述
🍑 梯度下降法
在这里插入图片描述

5. 网络工作原理推导

🍑 求偏导……
在这里插入图片描述

6. 网络搭建准备

🍑 -1 表示 减阈值
在这里插入图片描述
🍑 隐层神经单元 是 输入层 神经单元 数量的 1.9 倍左右
在这里插入图片描述

7. 神经网络 python 代码实现

import pandas as pd
import numpy as np
import matplotlib.pyplot as pltdef sigmoid(x):    # 网络激活函数return 1/(1+np.exp(-x))data_tr = pd.read_csv('BPdata_tr.txt')  # 训练集样本
data_te = pd.read_csv('BPdata_te.txt')  # 测试集样本
n = len(data_tr)
yita = 0.85  # 学习速率out_in = np.array([0.0, 0, 0, 0, -1])   # 输出层的输入
w_mid = np.zeros([3, 4])  # 隐层神经元的权值&阈值
w_out = np.zeros([5])     # 输出层神经元的权值&阈值delta_w_out = np.zeros([5])      # 输出层权值&阈值的修正量
delta_w_mid = np.zeros([3, 4])   # 中间层权值&阈值的修正量
Err = []
'''
模型训练
'''
for j in range(1000):error = []for it in range(n):net_in = np.array([data_tr.iloc[it, 0], data_tr.iloc[it, 1], -1])  # 网络输入real = data_tr.iloc[it, 2]for i in range(4):out_in[i] = sigmoid(sum(net_in * w_mid[:, i]))  # 从输入到隐层的传输过程res = sigmoid(sum(out_in * w_out))   # 模型预测值error.append(abs(real-res))# print(it, '个样本的模型输出:', res, 'real:', real)delta_w_out = yita*res*(1-res)*(real-res)*out_in  # 输出层权值的修正量delta_w_out[4] = -yita*res*(1-res)*(real-res)     # 输出层阈值的修正量w_out = w_out + delta_w_out   # 更新for i in range(4):delta_w_mid[:, i] = yita*out_in[i]*(1-out_in[i])*w_out[i]*res*(1-res)*(real-res)*net_in   # 中间层神经元的权值修正量delta_w_mid[2, i] = -yita*out_in[i]*(1-out_in[i])*w_out[i]*res*(1-res)*(real-res)         # 中间层神经元的阈值修正量w_mid = w_mid + delta_w_mid   # 更新Err.append(np.mean(error))
plt.plot(Err)
plt.show()
plt.close()'''
将测试集样本放入训练好的网络中去
'''
error_te = []
for it in range(len(data_te)):net_in = np.array([data_te.iloc[it, 0], data_te.iloc[it, 1], -1])  # 网络输入real = data_te.iloc[it, 2]for i in range(4):out_in[i] = sigmoid(sum(net_in * w_mid[:, i]))  # 从输入到隐层的传输过程res = sigmoid(sum(out_in * w_out))   # 模型预测值error_te.append(abs(real-res))
plt.plot(error_te)
plt.show()
np.mean(error_te)from sklearn.neural_network import MLPRegressor'''
调用sklearn实现神经网络算法
'''data_tr = pd.read_csv('BPdata_tr.txt')  # 训练集样本
data_te = pd.read_csv('BPdata_te.txt')  # 测试集样本model = MLPRegressor(hidden_layer_sizes=(10,), random_state=10, max_iter=800, learning_rate_init=0.3)  # 构建模型
model.fit(data_tr.iloc[:, :2], data_tr.iloc[:, 2])    # 模型训练
pre = model.predict(data_te.iloc[:, :2])              # 模型预测
err = np.abs(pre - data_te.iloc[:, 2]).mean()         # 模型预测误差
err

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

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

相关文章

JVM性能监测工具-JConsole

JVM性能监测工具-JConsole JConsole工具是JDK自带的图形化性能监控工具。并通过JConsole工具, 可以查看Java应用程序的运行概况, 监控堆信息、 元空间使用情况及类的加载情况等。 JConsole程序在%JAVA_HOM E%/bin目录下 或者你可以直接在命令行对他进…

【致敬未来的攻城狮计划】— 连续打卡第十天:FSP固件库开发及FSP配置详解。

系列文章目录 1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下 2.开发环境的选择和调试(从零开始,加油) 3.欲速则不达,今天是对RA2E1 基础知识的补充学习。 4.e2 studio 使用教程 5.…

手势语言识别模型训练及应用

使用训练集训练模型,使模型能够识别不同手势。 OpenCV-Python环境使用训练集训练模型,使模型能够识别不同手势。系统测试 本项目基于卷积神经网络,通过Python的翻转功能沿垂直轴翻转每个图像,实现手势语言识别的功能。系统流程如图…

数据治理与数据中台架构

随着工业 4.0 时代的到来,传统行业的数字化转型是大势所趋;将数据提高到数据要素层面,让传统的技术在新的场景下发挥出新的作用,是近期研究和探讨的焦点话题。数语科技支持和服务传统行业多年,聚焦于传统数据建模和数据…

catkin_make_workspace

ERROR1 : CMake Error at /opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake:113 (message): Project ‘cv_bridge’ specifies ‘/usr/include/opencv’ as an include dir, which is not found. It does neither exist as an absolute directory nor in ‘${{pr…

.net6 core web项目发布部署到Linux,以守护进程服务的形式部署启动,nginx实现转发

一、发布项目 1、以文件夹形式 2、目标运行时选对应的平台(Linux-x64) 3、文件夹选项:在发布前删除所有现有文件 二、部署项目(安装.net6环境:参考Linux安装 dotnet sdk 6.0) (1)…

网络基础,InetAddress,Socket,TCP,UDP

概念:两台设备之间通过网络实现数据运输网络通信:将数据通过网络从一台设备传输到另一台设备java.net包下提供了一系列的类或接口,供程序员使用,完成网络通信网络:两台或多台设备通过一定物理设备连接起来构成了网络根…

Scala中的Map 集合详解

目录 一、不可变长Map集合 1.map的声明与遍历 2.map的常用方法:get、getOrElse、keys、values、、: 二、可变长Map集合 三、Map的其他方法 key -> value 的语法形式实际上是用库中的隐式转换实现的,实际调用了 Map.apply 方法。Map.a…

盘点并发编程的12种业务场景,面试别再说你不会并发了

前言 并发编程是一项非常重要的技术,无论在面试,还是工作中出现的频率非常高。 并发编程说白了就是多线程编程,但多线程一定比单线程效率更高? 答:不一定,要看具体业务场景。 毕竟如果使用了多线程&…

力扣sql中等篇练习(十一)

力扣sql中等篇练习(十一) 1 好友申请|| :谁有最多的好友 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 出现数字次数越多,就代表它的好友越多 # 对两列数据合并时 不取出合并数据,采用UNION ALL SELECT t1.id,count(*) num FROM (SELECT request…

FreeRTOS - 计数信号量

一.任务功能 1、修改按键功能,模拟停车位出入功能 2、当按键按下 获取车位 3、当按键抬起 释放车位 二.API接口 函数原型SemaphoreHandle_t xSemaphoreCreateCounting( ①UBaseType_t uxMaxCount,②UBaseType_t uxInitialCount );功能概述创建计数信号量&#xff0c…

玩转ChatGPT:辅助编程

一、写在前面 首先让小Chat介绍自己在编程方面的天赋: 总结起来:TA掌握了海量的编程知识,能做到自动代码生成、代码审查优化、编程教学辅导以及实时问题解答。我问TA学习了多少案例,TA说:忘了,但保证够用。…

【Transformer系列(4)】Transformer模型结构超详细解读

前言 前一篇我们一起读了Transformer的论文《Attention Is All You Need》,不知道大家是否真的理解这个传说中的神(反正俺是没有~) 这两天我又看了一些视频讲解,感谢各位大佬的解读,让我通透了不少。 这篇文章就和…

语音交友app开发中的用户积分系统

引言 在当今数字时代,语音交友app已成为一种流行的社交工具。它们给用户提供了一个平台,在这里他们可以结交新朋友,分享他们的生活和信仰,并建立深厚的人际关系。然而,市场上存在大量的语音交友app,这使得…

深度学习--基础(一)pytorch安装--cpu

在线安装 无GPU的时候,只能安装CPU版本,打开官网 https://pytorch.org/ 直接Pip安装即可 国内访问这些下载安装会出现超时的情况,可以-i指定国内安装源: pip3.11 install torch torchvision torchaudio -i https://pypi.tuna.ts…

java版本电子招标采购系统源码—企业战略布局下的采购

​ 智慧寻源 多策略、多场景寻源,多种看板让寻源过程全程可监控,根据不同采购场景,采取不同寻源策略, 实现采购寻源线上化管控;同时支持公域和私域寻源。 询价比价 全程线上询比价,信息公开透明&#xff0…

信息安全复习四:置换密码乘积密码隐写术

一、章节梗概 置换密码、Rail Fence密码、行置换密码、乘积密码、转子机、隐写术 二、置换技术 2.1 定义 重新排列明文字母,达到信息加密的目的。 与替代密码不同的是,原来明文中的字母同样出现在密文中,只是顺序被打断。 古典的置换密码…

当⻉借⼒阿⾥云落地云原⽣架构转型,运维降本、效率稳定性双升

作者:当贝技术团队 随着业务飞速发展,当贝的传统 IT 资产也渐显臃肿,为了避免制约发展的瓶颈,痛定思痛,技术团队果断变革:核心业务云原生化之后,运维效率、整体稳定性和研发效率均得到了全面提…

【SVN】window SVN安装使用教程(服务器4.3.4版本/客户端1.11.0版本)

介绍 这里是小编成长之路的历程,也是小编的学习之路。希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。 一个人为什么要努力&a…

中台产品经理02:产品经理如何用一套方法搞定复杂业务拆解?

如果你问我作为企业级应用的产品经理日常工作最大的感受是什么?那就是经常会需要面对众多复杂类业务需求。 原因其实很好理解,B端产品通常需要支持更复杂的业务流程,需求也更加个性化和细分。例如,银行业务系统、医院管理系统、物…