自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (2)
  • 收藏
  • 关注

原创 python keras多分类问题请教

最近在使用python的keras训练一个5分类的语音模型,由于没有系统学过怎么使用,就是用的别人类似的模型框架。我的语音特征输入的是26*42的mfcc,要求输出5个分类结果。训练集一共有71个,测试集有20个,没有验证集。我的训练集的acc接近1,loss很小,但是训练集我得到的最大为0.8,但是我想要有较好的识别率。因为是新手,我只发现训练次数的增加可以改变测试集的正确率,当然模型结构里面有防止过拟合,但是经过很多很多次训练后,最大为0.8。我觉得模型结构应该没问题吧,这种多分类别人都能够训练出来

2021-09-09 00:09:13 183

原创 k-近邻算法的简单实战

k-近邻算法(kNN)《机器学习实战》笔记这里写目录标题k-近邻算法(kNN)工作原理一般流程准备:导入数据和标签k-近邻算法案例一:约会网站从文本文件解析数据归一化数据测试算法使用算法案例二:手写识别系统准备数据测试算法工作原理存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中一数据与所属分类的对应关系。输人没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。一-般来说,我们只选择样

2021-08-08 17:01:01 219

原创 内存池的使用

内存池的使用内存池介绍动态内存堆可以分配任意大小的内存块,非常灵活和方便。但其存在明显的缺点:一是分配效率不高,在每次分配时,都要进行空闲内存块查找;二是容易产生内存碎片。为了提高内存分配的效率,并且避免内存碎片,RT-Thread 提供了另外一种内存管理方法:内存池(Memory Pool)内存池是一种内存分配方式,用于分配大量大小相同的小内存块。使用内存池可以极大地加快内存分配与释放的速度,且能尽量避免内存碎片化。RT-Thread的内存池支持线程挂起功能,当内存池中无空闲内存块时,申请线程会

2021-07-28 00:02:51 532

原创 软件定时器的使用

软件定时器的使用软件定时器介绍软件定时器是由操作系统提供的一类系统接口,它构建在硬件定时器基础之上(系统滴答定时器)。软件定时器使系统能够提供不受数目限制的定时器服务。RT-Thread操作系统提供的软件定时器,以系统节拍(OS Tick)的时间长度为定时单位,提供了基于系统节拍整数倍的定时能力,即定时数值是OS Tick的整数倍。例如一个OS Tick是10ms,那么上层软件定时器只能提供10ms,20ms,100ms 等时间精度的定时服务,而不能定时为15ms、25ms、35ms等。当软件定时器

2021-07-28 00:01:18 767

原创 消息队列的使用

消息队列的使用消息队列工作机制消息队列是RT-Thread中另一种常用的线程间通信方式,消息队列是对邮箱的扩展。消息队列能够接收来自线程或中断服务例程中发出的不固定长度的消息,并把消息缓存在自己的内存空间中,而其他线程能够从消息队列中读取相应的消息并进行对应的处理。如下图:线程和中断服务例程通过消息队列控制块发送消息到消息队列控制块中空闲链表指向的内存空间。对于消息队列控制块,它有一个消息链表头指向消息队列的第一条消息,同时还有一个消息链表尾指向消息队列的最后一条消息。接收消息的线程在等待线程队列

2021-07-27 23:59:54 514

原创 邮箱的使用

邮箱的使用邮箱工作机制RT-Thread操作系统的邮箱用于线程间通信,特点是开销比较低,效率较高。邮箱中的每一封邮件只能容纳固定的4字节内容(针对32位处理系统,指针的大小即为4个字节,所以一封邮件恰好能够容纳一个指针)。线程或中断服务例程把一封4字节长度的邮件发送到邮箱中,而其他需要的线程可以从邮箱中接收这些邮件并进行处理。如下图:线程和中断服务例程通过邮箱控制块向邮箱队列中发送邮件,另一边线程则在等待线程队列中等待获取邮件。邮箱控制块在RT-Thread中,邮箱控制块是操作系统用于管理邮箱

2021-07-27 23:58:05 352

原创 事件集的使用

事件集的使用例说事件集以坐公交车为例说明事件集,在公交站等公交车时可能有以下几种情况:P1坐公交车去某地,只有一趟公交车可以到达目的地,等到此公交车即可出发;P1坐公交车去某地,有3趟公交车都可以到达目的地,等到其中任意一辆即可出发;P1约另一人P2一起去某地,则P1必须要等到”同伴P2到达公交站“与“公交车到达公交站”两个条件都满足后,才能出发。这里,可以将P1去某地的这个行为视为线程,将“到达目的地的公交车到达公交站”、“同伴P2到达公交站”视为事件的发生,情况1是特定事件唤醒线程;情况

2021-07-27 23:57:10 301

原创 线程的优先级翻转

线程的优先级翻转优先级翻转使用信号量会导致的另一个潜在问题是线程优先级翻转问题。所谓线程优先级翻转,即当一个高优先级线程试图通过某种互斥IPC对象机制访问共享资源时,如果该IPC对象已被一低优先级线程所持有,而这个低优先级线程在运行过程中可能又被其它一些中等优先级线程抢占,因此造成高优先级线程被许多具有较低优先级的线程阻塞的情况。优先级翻转会造成高优先级线程的实时性得不到保证。如下图,由于低优先级的线程C获取到互斥量M,使得高优先级的线程A无法获取互斥量M,但中等优先级的线程B没有和A的互斥量,故它能

2021-07-27 23:55:59 1220

原创 互斥量的使用

互斥量的使用例说互斥量我们来看一个生活中的例子:现在大多银行ATM机都有一个特制的铁门。需要使用ATM的用户都需要在门前排队,进入铁门使用ATM机的用户进入后会在里面将铁门锁住,以保障自身安全,这个时候,在门外排队的用户无法使用ATM机;当之前锁住ATM铁门的用户办理完业务,打开门以后,其他在外排队的用户才可以进入铁门使用ATM,这位进入铁门的用户也会和前一个用户一样,将门锁住,保障自身的安全。例子中ATM机就相当于系统中的共享资源,需要使用ATM的用户相当于系统中的线程,而铁门,就起到了互斥量的

2021-07-27 23:54:40 503 1

原创 生产者消费者问题

生产者消费者问题生产者消费者问题模型生产者消费者问题是一个经典的、多线程同步问题。有两个线程: 一个生产者线程和一个消费者线程。两个线程共享一个初始为空、固定大小为n的缓存区。生产着的工作是“生产”一段数据,只有缓冲区没满时,生产者才能把消息放入到缓冲区,否则必须等待,如此反复;同时,只有缓冲区非空时,消费者才能从中取出数据,一次“消费”一段数据,否则必须等待,如此反复。问题的核心是:要保证不让生产者在缓存还是满的时候仍然要向内写数据;不让消费者试图从空的缓存中取出数据。生产者消费者问

2021-07-27 23:53:14 122

原创 信号量的使用

信号量的使用IPC在嵌入式系统中运行的代码主要包括线程和ISR(Interrupt Service Routines),在它们的运行过程中,它们的运行步骤有时需要同步(按照预定的先后次序运行),它们的访问资源有时需要互斥(一个时刻只允许一个线程访问资源),它们之间有时也要彼此交换数据。这些需求,有的是因为应用需求,有的是多线程编程模型带来的需求。操作系统必须提供相应的机制来完成这些功能,我们把这些机制统称为进(线)程间通信(Internal Process Communication IPC),RT

2021-07-27 23:51:54 1544

原创 临界区保护

临界区保护临界资源临界资源是指一次仅允许一个线程访问的共享资源;可以指一个具体的硬件设备,也可以是一个变量、一个缓冲区;不论是硬件临界资源,还是软件临界资源,多个线程必须互斥地对它们进行访问。临界区每个线程中访问(操作)临界资源的那段代码成为临界区(Critical Section),每次只准许一个线程进入临界区。//临界资源uint32_t value = 0;//临界区void thread1_entry(void *para){ uint32_t i = 0;

2021-07-27 23:50:12 500

原创 Java学习笔记4

数组数组声明创建数组的声明dataType[] arrayRefVar;//int [] array1;数组的创建再数组声明之后就可以对数组进行创建。arrayRefVar = new dataType[arraySize];//array1 = new int[10];//或者可以声明、创建一步到位double[] array2 = new double[10];int[] array3 = {1,2,3,4,5};//获取数组长度int length = array2.l

2021-07-21 00:36:39 85

原创 Java学习笔记3

方法方法的定义Java的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段,一般情况下一个方法包含以下部分:修饰符:定义了该方法的访问类型(可选);返回值类型:方法可能会返回值,returnValueType是方法返回值的数据类型,若不返回值,则returnValueType是关键字void;方法名:方法的名字;参数类型:参数像是一个占位符,当方法被调用时,传递值给参数;方法体:具体的方法语句。//结构修饰符 返回值类型 方法名(参数类型 参数名){ ... 方

2021-07-21 00:35:15 87

原创 Java学习笔记2

结构Scanner对象java.util.Scanner是Java5的新特征,可以通过Scanner类来获取用户的输入。基本语法:Scanner scanner = new Scanner(System.in);通过Scanner类的**next()与nextLine()方法获取输入的字符串,在读取前一般需要使用hasNext()与hasNextLine()判断是否还有输入数据,且由于输入是属于IO流,使用完成后我们需要用scanner.close()**方法关闭。import java.ut

2021-07-21 00:34:34 74

原创 空闲线程及两个常用的钩子函数

空闲线程及两个常用的钩子函数空闲线程空闲线程是一具有最低优先级的系统线程,当系统中无其他就绪线程可运行时,调度器将调度到空闲线程;空闲线程负责一些系统资源回收以及将一些处于关闭态的线程从线程调度列表中移除的动作;空闲线程在形式上是一个无限循环结构,且永远不会被挂起。空闲线程钩子函数在RT-Thread实时操作系统中空闲线程向用户提供了钩子函数,空闲线程钩子函数可以让系统在空闲的时候执行一些非紧急事务。设置和删除钩子函数函数//设置钩子函数rt_err_t re_thread_idle

2021-07-20 22:26:15 421

原创 线程的时间片轮询调度

线程的时间片轮询调度优先级和时间片是线程的两个重要参数,分别描述了线程竞争处理器资源的能力和持有处理器时间长短的能力。线程优先级RT-Thread最大支持256个优先级(数值越小的优先级越高,0为最高优先级,最低优先级预留给空闲线程);可以通过rt_config.h中的RT_THREAD_PRIORITY_MAX宏来修改最大支持的优先级;针对STM32默认设置最大支持32个优先级;具体应用中,线程总数不受限制,能创建的线程总数只和具体硬件平台的内存有关。线程时间片时间片只有在相同优先级的

2021-07-20 22:22:58 2080

原创 RT-Thread线程实例

RT-Thread线程实例线程状态转化图系统滴答时钟每一个操作系统中都存在一个“系统心跳”时钟,是操作系统中最小的时钟单位。这个时钟负责系统和时间相关的一-些操作。作为操作系统运行的时间尺度,心跳时钟是由硬件定时器的定时中断产生。系统的心跳时钟我们也常称之为系统滴答或时钟节拍,系统滴答的频率需要我们根据CPU的处理能力来决定。时钟节拍使得内核可以将线程延时若干个整数时钟节拍,以及线程等待事件发生时,提供等待超时的依据。频率越快,内核函数介入系统运行的几率就越大,内核占用的处理器时间就越长,系统

2021-07-19 21:04:01 2191

原创 RT-Thread线程

线程RT-Thread中,线程由三部分组成:线程代码(入口函数)、线程控制块、线程堆栈。线程代码线程代码有两种结构:无限循环结构和顺序执行结构。//无限循环结构void thread_entry(void *parameter){ while(1) { /*等待事件的发生*/ //........ /*处理事件*/ }}//顺序执行结构void thread_entry(void *parameter){ /*事

2021-07-19 21:01:23 676

原创 RT-Thread的内存空间分配

内存空间分配系统启动过程裸机代码启动顺序SystemInit() --> Main()用户主函数RT-Thread启动顺序SystemInit --> SubSubSub$main() --> rtthread_startup() --> rt_application_init() --> main_thread_entry --> SuperSuperSuper$main用户主函数简述堆栈栈(stack):由编译器自动分配释放;堆(heap):一般由程序

2021-07-19 21:00:16 967

原创 Java学习笔记1

Java学习笔记1用IDEA输出第一条语句快捷键:psvm + enter = public static void main(String[] args) {…}sout + enter = System.out.println(…);public class Hello { //psvm快捷键 public static void main(String[] args) { //sout快捷键 System.out.println

2021-07-19 11:35:04 75

原创 MarkDown学习

MarkDown学习第一次在B站学狂神Java视频,相见恨晚啊~~今天学着在Typora上记笔记,跟着视频做的,感觉颇受益,以后一定要养成做笔记的好习惯呀!标题:三级标题四级标题(n个)# + 空格 + 标题名字体左右 ** 是粗体Hello,World!!左右 * 是斜体Hello,World!!左右 *** 是粗斜体Hello,World!!左右 ~~ 是删除横线Hello,World!!引用“>” +

2021-07-18 23:07:26 66

原创 基于python的简易学生信息管理系统

最近刚看完小甲鱼python零基础视频中类与对象部分,心血来潮,从早上构思到晚上写出来,做了一个简易的学生信息管理系统。本程序主要运用了类与对象,以及方法定义的知识,写的比较普通,望能够对初学者有一定的帮助。但由于没有深入剖析代码,只是为了完成一个结果,可能代码有些许繁琐,望大家在阅读的时候给予指正,同时提出一些修改建议。该学生信息管理系统主要包括:录入学生信息,查找学生信息,删除学生信息,修改学生信息,排序学生信息,统计学生人数,显示学生信息以及退出信息管理系统八个部分。其中,各部分.

2021-05-08 15:21:12 1248

基于python的一个简易学生信息管理系统

学习完大部分类与对象后心血来潮,代码比较基础,适合初学者理解。

2021-05-08

第三届蓝桥杯单片机组省赛代码部分

第三届蓝桥杯单片机组省赛代码部分

2021-02-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除