神经网络介绍及其在Python中的应用(一)

作者简介:热爱数据分析,学习Python、Stata、SPSS等统计语言的小高同学~
个人主页:小高要坚强的博客
当前专栏:Python之机器学习
本文内容:神经网络介绍及其在Python中的线性回归应用
作者“三要”格言:要坚强、要努力、要学习
目录
- 一、神经网络原理详解
- 1. 神经网络的基本结构
- 2.神经元模型
- 3. 激活函数
- 4.前向传播
- 5.反向传播
- 6. 损失函数
- 7.优化算法
- 8.训练过程
- 二、Python中的神经网络实现
- 代码详解
- 1.数据构造
- 2.定义神经网络
- 3.CUDA支持
- 4.损失函数与优化器
- 5.绘图函数
- 6.训练过程
- 三、总结
一、神经网络原理详解
1. 神经网络的基本结构
神经网络由输入层、隐藏层和输出层组成。每层由多个神经元(节点)构成。以下是各层的功能:
- 输入层:接收外部数据,每个输入对应一个神经元。
- 隐藏层:进行特征提取和模式识别。可以有多个隐藏层,层数越多,模型越复杂,能够学习到更复杂的特征。
- 输出层:生成最终的预测结果,节点数量根据具体任务而定(如分类任务的类别数)。
2.神经元模型
每个神经元的计算过程可以表示为:
y=f(w⋅x+b)
- x:输入向量。
- w:权重向量,决定输入对输出的影响。
- b:偏置项,调整输出值。
- f:激活函数,用于引入非线性。
3. 激活函数
激活函数在神经元的输出中引入非线性,常用的激活函数包括:
Sigmoid:输出范围在(0, 1)之间,适合二分类任务。

ReLU(Rectified Linear Unit):输出为输入值的正部分,避免了梯度消失问题。

Tanh:输出范围在(-1, 1)之间,常用于隐藏层。
4.前向传播
前向传播是指输入数据通过网络传播,直到输出结果的过程。每个神经元接收输入,应用权重和激活函数,最终生成输出。
具体过程如下:
- 输入数据通过输入层进入。
- 加权求和:每个神经元将输入值与权重相乘后相加,并加上偏置。
- 应用激活函数:输出结果通过激活函数生成。
- 结果传递:输出结果传递给下一层神经元,直到输出层。
5.反向传播
反向传播是神经网络学习的核心算法,通过最小化损失函数来更新权重和偏置。其步骤如下:
- 计算损失:使用损失函数(如均方误差)计算输出和真实标签之间的误差。
- 计算梯度:通过链式法则,计算损失函数关于每个权重的梯度。
- 更新权重:使用优化器(如SGD或Adam)根据计算得到的梯度调整权重和偏置。
6. 损失函数
损失函数衡量模型预测与真实值之间的差异。常用的损失函数包括:
- 均方误差(MSE):适合回归问题,公式为:

- 交叉熵损失:适合分类问题,公式为:

7.优化算法
优化算法用于更新神经网络的权重,以减少损失。常用的优化算法有:
- 随机梯度下降(SGD):每次仅使用一个样本更新权重,计算效率高,但可能在局部极小值处震荡。
- Adam优化器:结合了Momentum和RMSProp的优点,能够自适应调整学习率,效果通常较好。
8.训练过程
整个训练过程可以分为以下几个步骤:
- 数据准备:加载并预处理数据,划分为训练集和测试集。
- 模型初始化:定义神经网络模型,选择损失函数和优化器。
- 训练循环:在每个epoch中,进行前向传播、计算损失、反向传播和权重更新。
- 评估性能:在验证集上评估模型性能,监控过拟合情况。
二、Python中的神经网络实现
我们将通过以下代码实现一个简单的线性回归模型,并逐步解释每个部分。
import torch
import matplotlib.pyplot as plt
import os
from torch import nn, optim
from time import perf_counter# 为了防止有些版本的jupyter kernel崩溃,设置这个属性
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'# 源数据构造
X = torch.unsqueeze(torch.linspace(-3, 3, 100000), dim=1) # 扩维
Y = X + 1.2 * torch.rand(X.size()) # 添加噪声# 神经网络实现线性回归
class LR(nn.Module): # 网络模型必须继承nn.Module类def __init__(self):super(LR, self).__init__() # 调用父类构造方法self.linear = nn.Linear(in_features=1, out_features=1)def forward(self, x): # 前向传播方法,x参数接收输入数据out = self.linear(x) # 线性加权操作return out# 判断CUDA加速
CUDA = torch.cuda.is_available()
if CUDA:LR_module = LR().cuda() # 将模型移动到GPUinputs = X.cuda()targets = Y.cuda()
else:LR_module = LR()inputs = X
targets = Y# 损失函数和优化器
criterion = nn.MSELoss() # 均方误差损失
optimizer = optim.SGD(LR_module.parameters(), lr=1e-4) # 随机梯度下降优化器# 绘图函数
def draw(output, loss):if CUDA:output = output.cpu() # 将数据移回CPU以进行绘图plt.cla()plt.scatter(X.numpy(), Y.numpy()) # 原始数据散点图plt.plot(X.numpy(), output.data.numpy(), 'r-', lw=5) # 绘制拟合直线plt.text(0.5, 0, 'Loss=%s' % (loss.item()), fontdict={'size': 20, 'color': 'red'})plt.pause(0.005)# 训练函数
def train(model, criterion, optimizer, epochs):for epoch in range(epochs):output = model(inputs) # 调用神经网络对象进行前向传播loss = criterion(output, targets) # 损失函数的值optimizer.zero_grad() #清空上一轮的梯度值loss.backward() # 反向传播,计算梯度optimizer.step() # 更新权重值if epoch % 80 == 0: # 每80轮绘制图,观察训练效果,epoch为整个训练集通过网络进行一次前向和一次反向传播的过程draw(output, loss)return model, loss# 调用测试
start = perf_counter()
model, loss = train(LR_module, criterion, optimizer, epochs=5000)
finish = perf_counter()
time_total = finish - start
print("训练耗费时间:%s" % time_total)
print("final loss:", loss.item())
print("weights:", list(model.parameters()))
代码详解
1.数据构造
- X为输入特征,从-3到3的100,000个均匀分布的点。
- Y是目标值,加入了随机噪声,使得模型更具挑战性。
2.定义神经网络
- LR类继承自nn.Module,其中self.linear定义了一个线性层,输入和输出特征均为1。
3.CUDA支持
- 检查是否可以使用CUDA加速,如果可以,则将模型和数据移动到GPU。
4.损失函数与优化器
- 使用均方误差损失函数(MSELoss)和随机梯度下降(SGD)作为优化器。
5.绘图函数
- draw函数用于实时显示训练过程中的数据点和模型拟合结果。
6.训练过程
- train函数中,进行前向传播、计算损失、反向传播和权重更新。每80个epoch绘制一次图以观察训练进展。
通过上述代码,我们实现了一个简单的线性回归模型,演示了神经网络的基本构建和训练过程。
三、总结
神经网络通过层叠多个非线性变换,能够学习到复杂的模式和特征。在实际应用中,通过选择合适的架构、激活函数和优化算法,可以实现高效的模型训练和预测。随着深度学习技术的不断发展,神经网络将在更广泛的领域发挥作用。

码字艰辛,本篇内容就分享至此,如果渴望深入了解更多Python机器学习方面的应用,别忘了点击关注博主,引导你从零开始探索Python在统计分析上的奥秘。同时,对于在数据分析与机器学习旅程中感到迷茫的朋友们,欢迎浏览我的专题系列:《Python之机器学习》,让我们一起努力坚强学习,共同进步吧~

相关文章:
神经网络介绍及其在Python中的应用(一)
作者简介:热爱数据分析,学习Python、Stata、SPSS等统计语言的小高同学~ 个人主页:小高要坚强的博客 当前专栏:Python之机器学习 本文内容:神经网络介绍及其在Python中的线性回归应用 作者“三要”格言:要坚…...
数据流处理技术与Flink框架
一数据流 数据流定义: 数据流(Data Stream)是指数据以连续不断的方式到达和处理的序列。在现实世界中,许多数据来源都是以流的形式存在,比如: 1. 用户行为:用户在网站上的点击流、移动应用中…...
qt中QTatlewidget类常用操作表格的函数有哪些?
在Qt中,QTableWidget 类提供了丰富的函数来操作表格数据。以下是一些常用的操作表格的函数: 1. 初始化与配置 构造函数:QTableWidget(int rows, int columns, QWidget *parent nullptr):创建一个指定行数和列数的表格控件。设置…...
Linux上的C/C++编程
Linux上的C/C编程 yum软件包管理器Linux编辑器-vimvim命令模式指令集vim末行模式指令集 gcc/g的使用Linux自动化编译工具-make/MakefileLinux调试器-gdb调试命令 多人合作工具git yum软件包管理器 yum 是Linux上常用的包管理器,类似于Windows上的“应用商店”。 语…...
注意 秋季饮酒的正确打开方式
选择合适的白酒1.秋季气候干燥,适合选择一些口感醇厚、温润的白酒。比如酱香型白酒,它具有浓郁的香气和醇厚的口感,能在秋季给你带来温暖的感觉。2.浓香型白酒也是不错的选择,香气扑鼻,口感绵甜,能为秋季增…...
Python如何配置环境变量详解
一、概述 前提:已安装 Python,如下图: 1.1 检查是否已配置成功(选) 1 2 3 4 5 1. 打开运行窗口 (1) 快捷键 : Win r,并输入 cmd (2) 直接输入: Python 2. 若有下列提示,即为 安装成功…...
Linux驱动开发(速记版)--并发与竞争
第十八章 并发与竞争 18.1 并发与竞争 18.1.1 并发 早期计算机 CPU单核心时,由于 CPU执行速度快于I/O操作,常因等待 I/O而空闲。 为提高 CPU利用率,引入了并发执行理论。并发通过算法在CPU执行I/O等待时切换至其他任务,使多个任…...
AI赋能,数字技术服务平台促进产业协同发展
在当今数字化浪潮席卷全球的时代,数字技术服务平台应运而生,成为推动各行业发展的强大引擎。数字技术服务平台是一个汇聚了众多先进数字技术和资源的综合性服务体系。它就像是一个功能强大的百宝箱,为用户提供了全方位的数字技术支持。 在这…...
RabbitMQ下载安装运行环境搭建
RabbitMQ运行环境搭建 1、Erlang及RabbitMQ安装版本的选择2、下载安装Erlang2.1、下载Erlang2.2、安装Erlang2.2.1、安装Erlang前先安装Linux依赖库2.2.2、解压Erlang压缩包文件2.2.3、配置2.2.4、编译2.2.5、安装2.2.6、验证erlang是否安装成功 3、RabbitMQ下载安装3.1、下载3…...
Redis过期时间删除策略详解
文章目录 Redis过期时间删除策略详解一、引言二、Redis过期键删除策略1、定时删除2、惰性删除3、定期删除 三、Redis实际采用的策略1、惰性删除Java 伪代码 2、定期删除Java 伪代码 四、总结 Redis过期时间删除策略详解 一、引言 在许多应用程序中,我们经常需要缓…...
mysql数据库的基本管理
目录 一.数据库的介绍 二.mariadb的安装 三.软件基本信息 四.数据库开启 五.数据库的安全初始化 六.数据库的基本管理 七.数据密码管理 八.用户授权 九.数据库的备份 十.web控制器 一.数据库的介绍 1.什么是数据库 数据库就是个高级的表格软件 2.常见数据库 Mysql Oracl…...
根据现有html里的元素上面动态创建el-tooltip组件并显示的几种方式
1、 在这个示例中,我们创建了一个 ref 引用来指向我们想要附加 Tooltip 的 DOM 元素。然后在 onMounted 生命周期钩子中,我们创建了 Tooltip 组件的实例,并将其挂载到一个新创建的 DOM 元素上。我们还在触发元素上添加了 mouseenter 和 mouse…...
【C++篇】迈入新世界的大门——初识C++(上篇)
文章目录 前言 下篇已出:【C篇】迈入新世界的大门——初识C(下篇) C发展历史 C起源 与C语言一样,C也是在贝尔实验室诞生的,Bjarne Stroustrup于20世纪80年代在这里开发出了这种语言。Stroustrup比较关系的是让C更有用࿰…...
啥?Bing搜索古早BUG至今未改?
首先,大家先看下面的一个数学公式。 Γ ( z ) ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)∫0∞tz−1e−tdt. 看不懂?没关系,因为我也看不懂 这不是谈论的重点。 当你把鼠标光标移到公式的最开头&…...
ValueError: Out of range float values are not JSON compliant
可能原因一 可能原因二 数据里面有NaN...
【架构】NewSQL
文章目录 NewSQLTiDBTiDB 主要组件特点使用场景安装与部署 推荐阅读 NewSQL NewSQL是一种数据库管理系统(DBMS)的类别,它结合了NoSQL数据库的可扩展性和传统SQL数据库的事务一致性。具体来说,NewSQL数据库旨在解决传统关系型数据库在处理大规模并发事务…...
禁止吸烟监测系统 基于图像处理的吸烟检测系统 YOLOv7
吸烟是引发火灾的重要原因之一。烟头在未熄灭的情况下,其表面温度可达200℃-300℃,中心温度甚至能高达700℃-800℃。在易燃、易爆的生产环境中,如化工厂、加油站、仓库等,一个小小的烟头就可能引发灾难性的火灾,造成巨…...
《中国工程科学》
《中国工程科学》为工程科技战略咨询学术期刊,主要发布我国工程科技战略咨询研究成果,以及工程科技各领域前瞻性综合研究成果,为政府科学决策提供参谋、为行业科学发展提供指导、为相关学术研究提供参考。 一、2024年度征稿主题 本刊以专题…...
碳钢液动紧急切断阀QDY421F-16C DN200
在深入探讨碳钢液动紧急切断阀QDY421F-16C DN200的卓越性能与应用场景时,不得不提及其在化工、石油、天然气等高危行业中的核心地位。这款阀门以其高度的自动化控制能力和快速响应机制,成为了保障生产安全、防止介质泄漏的关键防线。 其内置的液动执行机…...
【C++】红黑树的封装——同时实现map和set
目录 红黑树的完善默认成员函数迭代器的增加 红黑树的封装红黑树模板参数的控制仿函数解决取K问题对Key的非法操作 insert的调整map的[]运算符重载 在list模拟实现一文中,介绍了如何使用同一份代码封装出list的普通迭代器和const迭代器。今天学习STL中两个关联式容器…...
DLT Viewer:面向汽车电子系统的分布式日志诊断与实时监控技术方案
DLT Viewer:面向汽车电子系统的分布式日志诊断与实时监控技术方案 【免费下载链接】dlt-viewer Diagnostic Log and Trace viewing program 项目地址: https://gitcode.com/gh_mirrors/dl/dlt-viewer DLT Viewer是一款基于COVESA标准的专业诊断日志分析工具&…...
YOLOv7训练VisDrone数据集避坑指南:标签转换、类别映射与路径配置详解
YOLOv7实战:VisDrone数据集训练全流程精解与疑难排查 1. 理解VisDrone数据集特性与YOLO格式差异 VisDrone作为无人机视角下的目标检测基准数据集,其标注格式与YOLOv7的预期输入存在本质区别。原始标注文件(annotations/*.txt)采用…...
终极Windows 11优化指南:使用Win11Debloat开源工具提升系统性能的完整方案
终极Windows 11优化指南:使用Win11Debloat开源工具提升系统性能的完整方案 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes …...
射频链路中 Coupler(耦合器)的作用分析
射频链路中 Coupler(耦合器)工程解析报告 ——原理、系统作用、工程实现及 Bi‑Directional Coupler 全解 1. Coupler 在射频链路里“到底起什么作用”(工程结论) Coupler 的本质作用只有一句话: 在**“不显著影响主射频链路”的前提下,抽取一小部分、方向可控的射频能量…...
RK3588开发板Debian系统从零配置到实战:安全加固、Docker部署与性能调优
1. 项目概述:从零上手TL3588的Debian系统最近在折腾一块基于瑞芯微RK3588芯片的开发板,型号是TL3588。这板子性能是真不错,八核CPU加上强大的NPU,拿来做边缘计算、多媒体网关或者轻量级服务器都挺合适。但刚拿到手,面对…...
初创团队如何利用Taotoken控制AI实验成本并快速迭代产品
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初创团队如何利用Taotoken控制AI实验成本并快速迭代产品 对于资源有限的初创团队而言,在开发AI功能原型时,…...
为OpenClaw智能体工作流配置Taotoken作为模型供应商的步骤
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为OpenClaw智能体工作流配置Taotoken作为模型供应商的步骤 1. 准备工作:获取必要的凭证与信息 在开始配置之前&#x…...
ISO 11452-4 BCI测试补偿系数:从核心原理到工程校准的完整指南
1. 项目概述:从一次“诡异”的测试失败说起几年前,我接手了一个车载ECU的电磁兼容性摸底测试项目。按照标准流程,我们需要在电波暗室里,对样件进行ISO 11452-4标准规定的BCI(大电流注入)测试。测试计划、设…...
揭秘哔咔漫画下载器:打造高效离线漫画图书馆的完全指南
揭秘哔咔漫画下载器:打造高效离线漫画图书馆的完全指南 【免费下载链接】picacomic-downloader 哔咔漫画 picacomic pica漫画 bika漫画 PicACG 多线程下载器,带图形界面 带收藏夹,已打包exe 下载速度飞快 项目地址: https://gitcode.com/gh…...
猫抓Cat-Catch:浏览器媒体资源捕获终极指南
猫抓Cat-Catch:浏览器媒体资源捕获终极指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾遇到过想下载网页视频却找不到下载…...
