- 博客(26)
- 收藏
- 关注
原创 人工智能系列(10)总结
双向联想记忆(BAM)能够实现配对信息的双向检索,例如输入人名可以找到对应的人像,输入人像也可以找到相关的人名,并且即使输入信息存在缺失或错误,也能通过迭代过程逐步修正并回忆出最接近的匹配结果。此外,大脑的神经网络结构具有高度可塑性,不仅可以调整连接权重,还能生成新的突触通路,从而不断优化认知与决策能力。在这种架构下,无论是监督学习中的损失最小化、无监督学习中的模式发现,还是强化学习中的策略优化,本质上都是在反复计算、更新权重、再计算的循环中,不断逼近最优解,使模型预测或决策逐步改进。
2025-08-11 08:52:28
386
原创 人工智能系列(9)遗传算法
这些新个体在自然环境的作用下进行适者生存的筛选,只有更适应环境的个体才能存活下来并继续繁殖,从而在一代代的自然选择中提高整体适应性。需要注意的是,遗传算法并不是以遍历整个解空间为目标,它也不可能枚举所有可能的解组合,尤其是在搜索空间极大或维度很高的实际问题中,这是不可行的。因此,遗传算法通过模拟“优胜劣汰、适者生存”的进化过程,在有限的计算资源和进化代数内,尽可能地搜索到最优解或近似全局最优解。选中的配对染色体进行交叉(重组)和变异(局部变化),以生成新的个体(子代染色体),扩展解空间。
2025-08-11 08:51:18
651
原创 人工智能系列(8)如何实现无监督学习聚类(使用竞争学习)?
本实验数据集包含 150 个样本,分属 Setosa、Versicolor 和 Virginica 三种鸢尾花类别,每个样本由 4 个连续型特征描述,分别为萼片长度(4.3–7.9 cm)、萼片宽度(2.0–4.4 cm)、花瓣长度(1.0–6.9 cm)和花瓣宽度(0.1–2.5 cm),这些特征在数值范围和单位上存在差异,因此在模型训练前需进行归一化处理,以确保特征在聚类中的贡献均衡。欧几里得距离对特征数值范围非常敏感,如果某个特征的取值范围较大,就会在距离计算中占据主导地位,掩盖其他特征的作用;
2025-08-10 17:06:58
700
原创 人工智能系列(7)人工神经网络中的无监督学习
大脑皮层由数十亿个神经元和数千亿个突触构成,不同区域负责不同类型的感官与运动功能(如视觉、听觉、触觉、运动控制等),每种感官输入都会映射到皮层的特定区域,并且这种映射关系是通过神经元的自组织活动形成的,而非外部“教师”监督。神经网络的一个关键属性是能够从环境中学习,并在不断学习的过程中持续改善性能。在无监督学习(又称自组织学习,self-organized learning)中,网络无需外部教师提供目标输出,而是通过对输入数据进行模式识别,自动发现其中的结构与类别,从而实现自我组织与知识获取。
2025-08-10 17:04:09
756
原创 人工智能系列(6)如何开发有监督神经网络系统?
输出层的激活函数则取决于任务类型:1)在分类任务中常用 sigmoid、阶跃(step)或符号(sign)函数来实现类别判定,2)在回归或函数逼近任务中则多使用线性函数,以便直接输出连续数值结果。在神经网络训练中,我们的目标是通过调整权重找到全局最小点,即误差曲面上最低的位置,从而使模型在训练和新数据上都能有最佳表现;可以将其比作一次从起点 A 出发前往终点 B 的旅程,全局最小点是目的地,而局部最小点则像途中因车辆故障、疾病等被迫停留的地方,看似到达了低谷,但并非最终的最佳位置。学习快,但可能不收敛。
2025-08-09 21:12:47
786
原创 人工智能系列(5)双向联想记忆
是 Bart Kosko 提出的神经网络模型,可以把两种不同类型的信息成对绑定,比如“姓名–人像”或“语音–文字”,并且能双向查找:给一种信息就能回忆出另一种,即使输入有少量错误或缺失,也能通过迭代逐步纠正并收敛到最接近的已存储配对。iii.交替计算 X→Y 和 Y→X 的输出,直到输入与输出都不再变化(即达到稳定态)。i.计算第 p(第一次的时候p=0) 次迭代的 BAM 输出。i. 根据样本对(X,Y)确定联想连接权重矩阵。其中k是第 k个样本对,即一共有K个样本对。
2025-08-09 21:09:12
386
原创 人工智能系列(4)霍普菲尔德(Hopfield)神经网络
我们可以这样理解其工作机制:假设模型预先记住了几个典型状态(例如“苹果”、“香蕉”、“西瓜”),当输入一个模糊的图像(如一个残缺的苹果)时,这个输入无法与记忆中任意一种水果完全匹配,此时 Hopfield 网络会通过迭代的检索过程,将该不完整的输入逐步调整为与记忆中最接近的一个状态(例如完整的“苹果”图像),即收敛到一个稳定状态。在其学习过程中,每当接收到新的输入数据,网络会首先计算出一个输出结果,并将该输出作为下一次输入的一部分重新输入网络。如果输出的结果和输入的一样,说明则说明权重矩阵设计合理。
2025-07-20 15:52:51
903
原创 人工智能系列(3)多层感知器
而网络剪枝法则是从一个较大的网络结构出发,逐步减少隐藏神经元的数量,直到找到性能最优的模型结构。隐藏层神经元数量的选择对神经网络的性能具有重要影响:如果神经元数量过少,模型的表达能力有限,容易出现欠拟合,无法充分学习数据特征;与输入层和输出层不同,隐藏层的目标不是显式定义的,它依靠训练过程中通过误差反向传播自动学习合适的表达方式。非线性神经网络的种类包括:MLP、Hopfield 网络、双向联想记忆(BAM)、径向基函数网络(RBF)、概率神经网络(PNN)、广义回归神经网络(GRNN)等。
2025-07-20 15:50:35
1103
原创 人工智能系列(2)单层感知机
感知器的决策函数本质上是一个线性函数,它对输入特征进行加权求和,再加上偏置,计算出的结果作为分类的依据。𝑤𝑖 (𝑝+1)是新的权重,𝑤𝑖 (𝑝)是旧的权重。i. 输入信号 x1,x2,...,xnx_1, x_2, ..., x_nx1,x2,...,xn。整个过程可以理解为,每次模型“判断错了”,就轻轻调整自己的“思考方式”(权重),努力往正确答案靠拢。其中𝑝是迭代,Y(p) 是实际输出,Yd(p) 是期望输出。在训练过程中,根据“预测值”和“真实值”的差异来微调权重。.初始化:设定权
2025-07-19 17:56:36
567
原创 人工智能系列(1)介绍
人工神经网络是一类受人脑结构和功能启发而构建的人工智能系统,其核心目标是使计算机系统具备执行类人类认知任务的能力,如识别、推理、判断和决策等。通过模拟神经元之间的连接机制,ANN 能够从大量数据中自动学习规律、将知识存储于网络连接权重中,并在面对新问题时应用所学经验进行推理与预测。这个过程模拟了生物神经元接收刺激并产生反应的机制,使神经网络具备非线性建模能力,是其能处理复杂模式识别任务的关键所在。智能系统是模仿生物智能行为的人工系统,虽然其“智能”不是真正的,而是模拟或仿制的。1.能够学习新的知识。
2025-07-19 17:19:44
618
1
原创 关于链表的学习
一 结构体学习链表肯定少不了结构体,所以,就先说一下:你想要的结构体来咯~1 定义类的声明struct 结构体名{};结构体定义: struct 结构体名 结构体变量名;结构体相同可以直接赋值:struct Book Chinese_book,English_book;Chinese_book = English_book;2 结构体指针结构体指针定义:struct 结构体名 *结构体指针变量名;赋值:举例:struct Book *book; struct Bo
2022-01-09 17:39:57
801
原创 关于数组和指针的学习
一 数组1 一维数组(1)定义数据类型 数组名[元素个数]其中 数组元素个数只可以是整型即5,或者整型表达式如5+4;另外 数组元素个数的数据类型只可以是整型和字符型。(2)数组指针定义方法:int (*a)[10]; int b[10];数组可以直接赋值吗?还是用memset?赋值方法:a = &b[0];(3)指针数组定义:int *a[10];(4)函数传参(5)调用方法a[1]*a;2 二维数组(1)定义数据类型 数组名
2022-01-03 15:14:56
564
原创 #define和 typedef一些用法总结
123 typedef void (*F) (int)函数指针:void (*a)(int,int); //变量a为函数指针变量typedef void (*F) (int)定义了一个指向函数的指针F,其指向的函数的返回值为 void 类型,参数是后面的(int).。用法:typedef void (*F) (int)F f;void *pr(int a){printf(“我是%d\n”,a);}f = pr;...
2021-09-04 09:39:39
239
原创 字符串的相关知识
字符串的最近使用字符串比较多,所以做一些总结。一 创建字符串的方式1 char *str = NULL;用这种方式创建字符串需要用malloc();函数创建空间。2 char str[20] = “0”;二 关于分配空间的函数1 memset();在指定的内存块设置一定数量的无符号字符,一般用于填充0。C 标准库 - <string.h>void *memset(void *str, int c, size_t n);参数str – 指向要填充的内存块。c – 要被设置的
2021-05-10 20:24:23
177
原创 用esp32的timer做的一个计时器
在esp32的开发环境中做了一个循环加载10us(时间可以调整)的定时器。功能:可以在两个代码位置计时之间的时间。在一个代码点打开定时器(TestOpenTimer()),在另一个代码点结束定时器(TestCloseTimer()),TestTimerFunc()中的test_ten_us值就是两个代码点的计时时间,分辨率是10us。//自动加载时间#define TEN_US 10int test_ten_us = 0;//extern int test_ten_us;esp_timer_h
2021-04-22 12:13:04
2464
3
原创 关于c语言代码的规范总结
工作近两年,也越来越思考着怎么把代码写的比较规范,下面就是一直以来的总结,和各位分享一 关于规范性的:1 注释单行用 // ,多行用/* */。2 关于函数命名 测试代码可以有test命名,非测试代码尽量不要有test,以防误解函数命名意义尽量和注释一致函数命名(动词+名词)3 引脚的宏定义(关于引脚的宏定义,引脚名在前,引脚数在后。其他的也可以模仿:表明一类的在前,变化的在后)4 对于全局变量加注释5 函数内部每个功能模块后面空一行二 关于思路方面:1 在写代码前先罗列出思路逻辑框
2021-03-19 10:48:46
304
1
原创 cJSON的数据解析与上报
我用cjson的主要是用在接受服务器发送过来的数据和将数据返回给服务器一 cjson的数据解析1 首先先来说一下数据解析会用到的api:/将cjson格式的数据,转换为普通字符串的形式,虽然json格式的数据也是一个字符串的样子,但这时候还是无法当成普通的字符串使用,注意:使用完后需要将json指针释放/char *cJSON_Print(cJSON item);举例:char pstr = cJSON_Print(json);…free(pstr);/获取键值内容(对象里面的对象),用一
2021-03-16 17:05:39
643
原创 通过esp32实现不同颜色和不同亮度的rgb灯
我们先来看一下什么是rgb灯。全彩 LED 灯, 实质上是一种把红、绿、 蓝单色发光体集成到小面积区域中的 LED 灯,控制时对这三种颜色的灯管输出不同的光照强度,即可混合得到不同的颜色,其混色原理与光的三原色混合原理一致。简单来说就是led会有三个引脚,分别对应着red颜色,green颜色,blue颜色。通过改变它们的占空比,以来达到显示不同的颜色。就像调色板一样,通过红绿蓝三种基础色来调出不同的颜色。接下来说一下所用到的一些esp32的api,我把它封装在了三个函数里面。//配置gpio的pwm的
2021-01-28 16:28:21
5223
2
原创 stm32f107时钟问题
system_stm32f10x.c修改#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL)#define SYSCLK_FREQ_HSE HSE_Value/*#define SYSCLK_FREQ_24MHz 24000000 /#else/ #define SYSCLK_FREQ_HSE HSE_Value // #define SYSCLK_FREQ_24MHz 24000000 // #define .
2020-07-31 15:29:10
403
转载 数据类型 运算符 表达式
今天我在学习数据类型 运算符 表达式。其实这一章节并不是太难理解,但东西很多,虽然相互之间有连贯性,对比性,但是记忆起来还是麻烦的不得了。我因为以前有学过C语言,大致有个印象,所以看了一会就不看了,直接码出来。一来强迫自己再读下去,二来我认为自己还是会记不全,也方便后面查阅。C语言的数据类型在程序中使用的各种变量都应预先加以定义,即先定义,后使用。对变量定义可以包括三个方面:数据类型 存储类型...
2019-03-25 10:30:59
816
原创 写程序的前提——画流程图
这一次我来说一下流程图的使用。以往我给单片机写代码比较多的就是抄代码,所以并没有怎么用过流程图,这次重新学C语言就是为了全方面提升自己,所以流程图也是必不可少的了。先来给大家介绍一款画图的工具:亿图流程图表示三种基本结构1 顺序结构2 选择结构3循环结构三种基本结构的共同特点:只有一个入口只有一个出口结构内的每一部分都有机会被执行到结构内不存在“死循环”结构化程序设计方...
2019-03-10 11:13:16
3675
转载 关于C语言的规则性东西
关于C语言的规则性东西由于最近准备进军嵌入式,所以要重温一下C语言(其实是再自学以便,以前学的比较水)。也刚好借优快云的平台记录一下这次学C语言的一个过程。C源程序的结构特点1 一个C语言源程序可以由一个或多个源文件组成。2 每个源文件可由一个或多个函数组成。3 一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。4 源程序中可以由预处理命令(include命...
2019-03-07 14:07:36
547
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅