- 博客(44)
- 收藏
- 关注
原创 机器学习与深度学习7:一文搞懂多种融合二元交叉熵损失函数,one-hot编码,KL散度,交叉熵损失函数
本文介绍了神经网络中分类任务的损失函数计算方法。在多分类任务中,使用one-hot编码表示类别概率分布,通过softmax函数将输出转化为概率分布,并用KL散度或交叉熵损失函数衡量预测误差。二分类任务则采用0/1标签和sigmoid归一化,其二元交叉熵损失函数公式为L=-[y*logŷ+(1-y)*log(1-ŷ)]。针对样本不平衡问题,提出了平衡交叉熵损失函数,通过权重系数α调整正负样本的影响。文中还给出了Python中BCEWithLogitsLoss的实现示例及计算过程,展示了如何应用这些损失函数解决
2025-05-26 20:21:21
994
原创 深度学习入门6:pytorch卷积神经网络CNN实现手写数字识别准确率99%
我们都知道前馈神经网络的原理就是通过调整每一层神经元的权重w和偏置b,来寻找到最佳的输入输出拟合函数,从而解释每个输入参数。不同于前馈神经网络通过调整神经元的权重和偏置来寻找最佳拟合函数,卷积神经网络通过寻找(滤波器)来寻找。我们在前面知道前馈神经网络训练手写数字识别时,需要把图像,因此主流的解释为前馈神经网络只能处理一维信息,丢失了二维空间特征,因此它只能。卷积神经网络设计就是为了使网络甚至高纬特征。
2025-05-26 20:20:10
1042
原创 机器学习与深度学习5:pytorch前馈神经网络FNN实现手写数字识别
本文实现了一个基于PyTorch的三层神经网络用于MNIST手写数字分类。网络结构包含输入层(784)、隐藏层(256)和输出层(10),使用ReLU激活函数和交叉熵损失。代码分为四个部分:1) dataset.py处理MNIST数据加载;2) model.py定义网络结构;3) train.py实现训练过程,包括前向传播、损失计算、反向传播和参数更新;4) test.py评估模型准确率。项目采用512的批量大小训练10个epoch,最终保存模型参数并测试准确率。代码自动下载MNIST数据集,支持GPU加速
2025-05-26 20:19:17
348
原创 机器学习与深度学习4:数据集处理Dataset,DataLoader,batch_size
Bach:表示每次喂给模型的数据Epoch:表示训练一次完整数据集数据的过程当一个数据集的大小为10时,设定batch大小为5,那么这个数据就会分为2份,每份大小为5,依次投入到模型中进行训练。训练完所有数据后,就叫做一次迭代,称为epoch。
2025-03-27 13:17:03
933
原创 机器学习与深度学习3、神经网络原理
如上图所示,单个参数经过单个神经元变化后得到输出y为wx+b,其中w为权重,b为偏置,这个过程就叫做线性变换,也就是。
2025-03-27 12:43:23
933
原创 机器学习与深度学习2:梯度下降算法和BP反向传播算法
上一章我们已知神经网络算法就是求解拟合函数,通过线性变换和非线性变换来得出损失函数最小的模型。那么是如何进行求解的呢,其中之一就是梯度下降算法。如图,当我们需要求解拟合曲线时,如何找到拟合曲线?步骤就是首先随机一个w值,画出过原点的y = wx的图像,再根据误差调整这个曲线,最终得到拟合函数。因此我们根据这个步骤开始分析,首先随机出的这个曲线称为,然后根据,求出再根据代价函数调整曲线,最终得到拟合最好的预测函数。
2024-10-21 19:40:13
1066
原创 机器学习与深度学习1:神经网络概念
在单层神经网络中,我们使用sgn函数作为函数g,只能做简单的逻辑回归,线性分类任务,但是在两层神经网络中,我们使用平滑函数sigmoid作为函数g,我们把函数g称为激活函数,常见的激活函数有:ReLU函数,sigmoid函数,Tanh函数等。
2024-10-21 19:37:02
1049
原创 数学建模2:回归分析预测
回归分析预测模型是一种统计方法,用于研究变量之间的关系,并通过已知数据来预测一个变量的值。回归分析通常包括自变量和因变量,目标是建立一个回归模型来描述它们之间的关系。简单来说回归模型就是找出一条直线或曲线来所有的,拟合的好坏通常通过误差(例如,)来衡量,如果拟合误差较小那么我们认为样本符合此x和y的变量关系。如下图是一个简单的线性回归模型。
2024-10-21 19:32:41
633
1
原创 数学建模1:灰色预测模型
灰色预测模型是一种用于处理不完全信息的预测方法,适用于系统不确定性高的情况。灰色预测模型的核心思想是。它的基本形式是,其中“1”表示一个方程、一个变量的模型。这个模型通过对原始数据序列进行累加生成序列,然后建立一个进行建模,最后利用这个模型来预测未来的数据。本文按照最基础的模型。
2024-10-21 19:31:34
1756
原创 matlab新手快速上手6(引力搜索算法)
本文根据一个较为简单的matlab引力搜索算法框架详细分析引力搜索算法的实现过程,对matlab新手友好,源码在文末给出。
2024-04-25 14:58:12
1339
原创 matlab新手快速上手5(蚁群算法)
本文根据一个较为简单的蚁群算法框架详细分析蚁群算法的实现过程,对matlab新手友好,源码在文末给出。
2024-04-25 14:58:08
2077
1
原创 matlab新手快速上手4(人工蜂群算法)
使用matlab人工蜂群算法框架,对给出的目标函数寻找极小值的自变量参数,对matlab新手友好,快速入门matlab,快速掌握算法
2024-04-23 17:09:42
2171
原创 matlab新手快速上手3(差分进化算法)
使用matlab差分进化算法框架,对经典的罗森布鲁克函数这个多元函数寻找极小值的自变量参数,对matlab新手友好,快速入门matlab,快速掌握算法
2024-04-23 17:09:38
1588
原创 Matlab新手快速上手2(粒子群算法)
粒子群算法(Particle Swarm Optimization,PSO)是一种群体智能优化算法,灵感来源于鸟群或鱼群等生物群体的行为。本文根据一个较为简单的粒子群算法框架详细分析粒子群算法的实现过程,一步步分析代码实现,对matlab新手友好
2024-04-21 22:49:26
1287
原创 Matlab无基础快速上手1(遗传算法框架)
本文用经典遗传算法框架模板,对matlab新手友好,快速上手看懂matlab代码,快速应用实践,源代码在文末给出。此代码的待解决问题为function函数,也就是多元函数平方和求极小值问题,看懂代码后,可将function应用为自己的待解决问题。
2024-04-21 22:47:02
1263
原创 STM32实现三个串口同时开启发送接收数据
实现STM32开通三个串口,每个串口都可以实现接收和发送数据。STM32打开三个串口收发数据代码,STM32使用三个串口收发数据
2024-03-28 22:57:25
4371
7
原创 STM32使用USART发送数据包指令点亮板载LED灯
实现STM32指令点灯,发送@LED_ON指令打开板载LED灯,发送@LED_OFF关闭板载LED灯,与上一个博客不同,这个实际上是实现串口收发文本数据包。
2024-03-28 10:31:41
1749
原创 Matlab基础入门
matlab可以使用命令行执行程序,例如下图运行后在右边工作区会产生响应的变量,如不写分号,则会直接运行。新建脚本运行matlab程序,对比命令行操作更方便,对应的脚本后缀为.m。
2024-03-27 22:48:50
1016
原创 STM32的SPI通信介绍
SPI简介SPI:串行外设接口,与IIC一样都是通用数据总线。四根通信线:SCK,MOSI(DO),MISO(DI),SS。同步(共用一根时钟线),全双工(数据发送和接收单独占一条线)支持挂载多设备,一主多从,每个从机占用一根ss线
2024-03-27 22:47:30
1243
原创 STM32收发HEX数据包
在实际应用中,STM32的串口通信都是以数据包格式进行收发,这个数据包一般都包含包头和包尾,表示一个数据包。本程序实现收发一个数据包。
2024-03-27 22:46:21
1731
原创 STM32串口USART介绍
USART是通用同步/异步收发器英文全称:(Universal Synchronous / Asynchronous Receiver Transmitter)与UART不同的是USART的S代表的是同步,但是一般不用这个功能,所以同步模式只是兼容别的协议或者特殊模式使用,USART是STM32内部集成的外设,它能根据数据寄存器的数据的一个字节自动生成一个数据帧时序,并从TX引脚发送出去,也可以自动接收RX发送的数据帧,并解码为一个字节数据并存放在数据寄存器里。
2024-03-19 21:11:40
2060
原创 STM32串口通信的几种方式与介绍
通信目的:将一个设备的数据传送到另一个设备,扩展硬件系统通信协议:制定通信的规则,通信双方安装协议规则进行数据收发
2024-03-19 21:11:23
1816
原创 STM32模拟-数字转换器ADC
ADC能将连续变化的模拟电压转化为数字变量,建立起了模拟电路到数字电路的桥梁。相对应的还有DAC,将数字变量转化为模拟电压,PWM就是这个功能的一个分支。简单来说STM32的ADC实际上就是一个电压表,把引脚的电压测量出来放到一个变量里。STM32的ADC是12位的,对应的最大数字为4095,也就是测量电压最大为3.3v。
2024-03-13 16:39:55
1818
原创 STM32定时器的介绍
定时器的基本功能:对输入的时钟进行计数,在计数值达到设定值时触发中断。当这个计数器的输入是一个准确可靠的基准时钟的时候,那么它在对这个基准时钟进行计数的过程实际上就是记时的过程。16位计数器:计数器就是用来执行计数定时的一个寄存器,每来一个时钟,计数器加1。在STM32中,时钟频率为72Mhz,那么计72个数字就是1us的时间,计72000个数就是1ms的时间。在72Mhz的计数时钟下,最大可以实现=59.65s的定时。还可以使用级联模式,让一个定时器输出当另一个定时器输入,这样可以实现秒,大概八千多年。
2024-03-09 22:32:19
1782
原创 STM32实现按键点灯,按下亮,再按熄灭,GPIO输入输出源代码
STM32实现按键点灯,GPIO输入输出,按下亮,再按熄灭,GPIO输入输出源代码
2023-12-11 14:52:03
5418
1
原创 STM32的GPIO输入,原理,电路;标准库中的一些数据类型的原理:宏定义,结构体,枚举
这篇摘要主要介绍了常见的输入设备及其处理方法,以及涉及的电路原理、数据类型、宏定义、结构体和枚举等相关内容。首先涉及了按键的工作原理和处理程序,介绍了如何通过增加延时来过滤按键产生的抖动。其次讨论了增加电压比较器模块的光敏电阻模块的工作原理,并给出了相应的硬件电路接法。接着详细介绍了数据类型,包括常见的int8_t、uint8_t等,以及typedef的作用和用法,用结构体将不同数据类型组合成一个数据类型。最后,介绍了枚举的定义和使用方法,并指出在STM32的标准库中常见的枚举变量。
2023-12-10 17:01:34
1096
1
原创 STM32对GPIO进行基础输出操作:点亮LED灯并闪烁,跑马流水灯(标准库GPIO输出模式)
操作STM32的GPIO需要三个步骤第一步:RCC开启时钟第二步:使用GPIO_Init函数初始化GPIO第三步:使用输出或输入的函数控制GPIO口。
2023-12-06 16:59:31
1841
1
原创 C/C++递归递推算法:[走楼梯(斐波那契数列),出栈序列有几种(Catalan 卡特兰数)]
斐波那契数列和卡特兰数,递归与递推基础,走楼梯算法,出栈序列有几种算法
2023-12-05 14:41:32
2275
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人