自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 收藏
  • 关注

原创 250408_解决加载大量数据集速度过慢,耗时过长的问题

在做Cifar10图像分类任务时,发现每个step时间过长,且在资源管理器中查看显卡资源调用异常,主要表现为,显卡周期性调用,呈现隔一会儿动一下的情况(间隔时间过大导致不能同时截到两个峰值)。通过检测每步耗费时间发现,载入数据集的时间远远大于前向处理的时间。在以下参数情况下载入Cifai10数据集的时间为60s左右,前向计算时间仅为0.002s,浪费了大量的时间用于载入及传输数据。先说结论,是多线程的问题,线程过多导致多线程冲突,修改即可解决问题。

2025-04-08 23:44:27 965

原创 241207_MindNLP中的大模型微调

现在的大模型体量非常庞大,全量微调所需要的算力也特别庞大,个人开发者没有条件微调。参数量达到7B的模型才刚刚有涌现能力,但是我们要微调7B的模型的话,就需要3×28G的显存,至少需要2张A100的卡,更何况我们连一张也没有。近年来研究者提出了各种各样的参数高效微调方法,即固定住预训练模型的大部分参数,仅调整模型的一小部分参数实现微调。

2024-12-20 08:38:02 753

原创 241205_使用本地vosk模型实现流式语音识别

上一篇我们使用了vosk模型实现了本地的语音识别,但是存在一个严重的问题,因为我们采用的是整段音频录制结束之后再进行转文字并进行关键字检索,就会导致识别不实时,在环境噪音较为复杂(或者正在播放音乐时),我们说完了话他还在持续录音状态,识别太慢了,并且有时候他把音乐声音也录进去,导致识别错误。因为我们转换出来的结果是单词级别的,所以可能会产生识别的每一个单独的词之间都有空格,我们在process_command方法中需要去除掉这些空格,重新把他拼接成一个句子,实现我们的关键词检索。在weekup方法中。

2024-12-05 22:22:10 1505

原创 241205_给自己的应用加上语音助手功能

前面我们自己做了一个网易云音乐,但每次都要去点点点显得有点麻烦,所以我就考虑添加一些语音助手的功能。其实当前在日常windows使用中,我觉得也就音乐播放需要一个语音助手交互,其他的功能,要么太复杂,简单的声控无法实现,要么语音控制的效率太低,不如直接上手操作。最简单的语音助手仅需要实现三个功能,本地语音转文本,根据文本内容提取关键词完成对应指令,播放“收到”“已完成”等语音,我们此处就实现这样的最简单的语音助手。

2024-12-05 17:41:46 544

原创 241126_手把手教你使用PyQt手撸一个网易云音乐-(九)推荐页跳转逻辑实现

这界面和我们刚才做的喜欢的音乐界面差不多,我们就可以把我喜欢的音乐界面作为一个通用界面,只实现封面图的替换、label的text内容修改,歌单内容修改就ok了。这里定义一个函数方法,我是把每个界面的label、time、info、pic_path都打包成一个字典dic然后传入进行解析的。我们观察推荐页的那些歌单点进去,发现无非就是一个图加几个label加歌单列表,如下图。到这里就ok了,可以去试试了,跳转逻辑基本是没问题的。

2024-12-04 19:38:22 193

原创 241126_手把手教你使用PyQt手撸一个网易云音乐-(八)实现推荐页

推荐页的实现较为简单,因为现在暂时没有实现里面的跳转功能,只做了个界面,所以步骤就是从网易云的界面里把那些封面截出来,然后再designer中新建ToolButton,调用资源浏览器填充图片就可以了。本来按照标准的是应该要专门定义一个槽函数,然后通过事件绑定槽函数执行的,但是我懒,这里实现的操作只是切换界面,没啥复杂逻辑,一句话解决的事情就直接用lambda解决了。首先我们把网易云中的那些封面页都截图截出来,在项目根目录新建一个pic文件夹,把截图都放在里面。然后就可以轻松愉快的跑代码,切换界面了。

2024-12-04 19:37:05 248

原创 241126_手把手教你使用PyQt手撸一个网易云音乐-(七)实现我喜欢的音乐列表

然后在里面选择对应的图片,点击ok就行了,图片就填充进去了,然后拉拉大小,改改size数值,这副图片就放好了。

2024-12-04 19:36:29 949

原创 241126_手把手教你使用PyQt手撸一个网易云音乐-(六)实现自适应缩放

在设置自适应之前,我们需要确定,什么组件的什么维度需要变化,比如侧栏的高需要拉长,宽不需要变,我此时就可以把侧栏的宽的最大值改成200,最小值也改成200,这样在缩放的过程中他的宽就不会变化了。我们只需要在窗口中,点击base_widget外面的灰色部分,右键选择布局,修改为水平布局,然后把base_widget拉伸为合适大小,即可解决这个问题。自适应缩放也很简单,我们前期已经实现了各种栅格布局,但是我们的最大化的逻辑是没有实现的,我们点击最大化之后,窗口是会放大,但是我们实际的内容还是原来的大小。

2024-12-02 13:16:44 258

原创 241126_手把手教你使用PyQt手撸一个网易云音乐-(五)窗口设置圆角以及阴影

如果你的界面哪里还有线条,可以去designer中检查对应的组件的stylesheet属性,是不是设置了border相关,比如border-top,border-width,删除就可以了。此时我们直接运行,可以发现,效果并没有变,因为此时我们绘制的阴影已经在我们的画板之外了,他显示不出来,我们要在这个Frame画板之外再嵌套一个透明画板,专门用来放阴影。保存,然后ui转py后运行,可以发现我们已经成功获得了一个带有阴影的窗口,但是此时出现了很多硬线条,四个角也是尖锐的,不好看。线条,并且角落也变成圆角了。

2024-12-02 13:15:39 458

原创 241126_手把手教你使用PyQt手撸一个网易云音乐-(四)顶部导航栏以及隐藏自带标题栏并实现鼠标拖动事件

但是我们需要考虑,当已经是最大化的情况下,我点击最大化按钮,按逻辑来说,此时应该恢复正常大小,但是我们直接使用showMaxmized无法实现。这是人家的顶栏,我就不实现头像和等级了,剩下的都实现一下,也很简单,就是添加一个QWidget,栅格布局(要丢进去第一个按钮之后才能更改布局哦),找图标,放按钮,替换图标,改名字的问题,前面都已经讲过了,这里不再赘述。其中新建的这几个组件,需要实现功能的只有最右边的最小化、最大化、关闭按钮,我们实现了此方法后,就可以把QT自带的标题栏隐藏掉了。自带的实在是太丑了。

2024-12-02 13:14:45 322

原创 241126_手把手教你使用PyQt手撸一个网易云音乐-(三)播放逻辑实现

因为我们的播放模式实质上是一个Btn,每次点击他都会固定的进入一个同样的方法,我们要实现三种模式的切换的话,就可以在进入方法时检查他当前处于什么状态,然后循环去+1或者赋值实现状态切换。那这个初始状态怎么实现呢,我们可以在初始化方法里面添加一个参数。反正后续运行的过程中,你点了一个按钮,什么都不报错,程序就退出了的话,首先检查命名是否一致,其次检查ui是否同步转py,排除大部分问题。这里绑定的是一个是否显示的函数方法,然后保存,ui转py,然后运行,我们会发现刚跑起来音量条默认是显示状态,我们要的是隐藏。

2024-12-02 13:13:17 1608

原创 241126_手把手教你使用PyQt手撸一个网易云音乐-(二)底部播放栏

评论按钮不管怎么样都放不进label的正下方,这种时候我们可以用鼠标去拉label的右边线,右边线超过评论按钮之后,就可以成功放置进去。拖入QToolButton,这里我们要设置仅显示icon,不要text显示了,同样的,在属性框中修改属性为iconOnly。我这里播放按钮给的50×50的大小,其他几个按钮给的25×25。如果此时你发现你的唱片偏下或者偏哪个方向,多半是你size设置的不对,不是1:1,修改过来就行。然后我们再给进度条左右两侧各添加一个label,用来展示音乐时长及现在的时长。

2024-12-01 11:00:20 202

原创 241126_手把手教你使用PyQt手撸一个网易云音乐-(一)侧导航栏

网易云平常我自己用的也比较多,也比较喜欢他的界面,今天就手撸一个试试,看看能不能用QTdesigner直接画出来。这里先贴一个原版图。侧边栏和底部播放工具栏主要使用QWidge+QToolButton实现首先来实现侧边栏。

2024-12-01 10:59:35 1133

原创 241130_MindNLP学习记录

而MindNLP这边,他是每次按需取,我这个batch只需要batch size条数据,我就只拿batch size 条数据,然后进行遍历预处理,再返回batch。MindSpore在昇腾卡上实际训练的精度会比pytorch在GPU上训练得到的精度高0.1%到1.0%,可以借此做一些微调之类的工作,比较好出成果。pytorch的模型文件(.bin,.pth,.safetensor)都是可以直接载入的,不需要做convert模型转换。MindNLP可以支持国内多个镜像站的模型下载。

2024-11-30 23:01:48 229

原创 241130_昇思MindSpore函数式自动微分

函数式自动微分是Mindspore学习框架所特有的,更偏向于数学计算的习惯。这里也是和pytorch差距最大的部分,具体体现在训练部分的代码,MindSpore是把各个梯度计算、损失函数计算在这幅图中,右边这个就是函数式编程,首先先自己定义一个loss函数,最后一行使用grad(),把loss function传进去,因为传进去的是一个函数,做的是一个函数闭包,所以返回的还是一个函数。

2024-11-30 23:01:10 859

原创 241124_文本解码原理

一个文本序列的概率分布可以分解为每个词基于其上文的条件概率的乘积。

2024-11-24 21:13:45 441

原创 241124_基于MindSpore学习Prompt Tuning

标签词映射:在模型给出答案之后,比如模型给了个greet,因为我们是个情感分类任务,想要得到的结果只是两种,我们就要建立greet到positive的映射。传统的NLP训练模式都是先在大量的无标注的样本上进行预训练,然后再使用有标注的样本进行有监督的训练,调整单一的线性成果而不是整个模型。这一步给模型模型就需要去填这个mask 的答案,模型会填进去很多可能的答案,每个答案对应一个分数,分数最高的是最后的答案。prompt learing:模型结构不变,通过重构任务描述,使下游任务适配模型。

2024-11-24 18:33:16 735

原创 241124_基于MindSpore学习GPT2

大语言模型就是输入前一个词预测下一个词。

2024-11-24 17:00:21 321

原创 241124_基于MindSpore学习GPT1

在实际中,往往未标注的文本数据远多于已标注的,这些未标注的文本数据无法投入训练,又浪费提出了一种方法,基于大量未标注的文本数据,训练预训练语言模型,学习到一些general的特征。然后使用已标注的文本数据,对模型针对某一特定下游任务进行finetune,微调,仅更改output layer,就是GPT1存在问题:多元的下游任务难以有统一的优化目标。同时较难将预训练模型学到的信息传递到下游任务中。这里就体现出来和bert的区别bert两个任务:一个完形填空,一个上下文判断。

2024-11-24 11:27:55 733

原创 241123_基于MindSpore学习Bert

bert和transformer都有Embedding操作,包括词嵌入(word embedding)和位置嵌入(positional embedding)但是transformer中的位置信息是三角函数bert中的位置信息是可学习的,并增加了用于区分不同句子的段嵌入(Segment Embeddings)。三个embedding作相加得到最后的embeddingbert就是多层的transformer encoder层构成的。

2024-11-23 18:06:56 494

原创 241121_基于MindSpore学习Transformer

举例:我们在做英语阅读时,在回答问题时只是回头找原文的一部分相关内容,而不是全部内容。每次在搜索引擎搜索的时候,我们输入的就是query,下面展示的一个个标题就是key,点击这些key可以把我们引到对应的value计算注意力分数,就是计算query和key的相似度,即计算两个值的点积即卷积为避免两个值本身的大小对相似度计算产生影响,需要在点乘后除以$ d_{model} $,这个是词向量的长度softmax是在归一化,根据以上理论,我们可以简单写一点代码在处理数据时,为了统一长度,使用<pad>

2024-11-23 16:38:05 452

原创 241118_MindTorch学习-torch代码快速迁移到mindspore

在一个torch做的项目中直接在最开始,在import torch之前,代码执行的主入口文件中,添加一行(需设置ENABLE_BACKWARD,看后面微分接口适配块)就行了,就能跑了,没错。人傻了。其他的代码都不用改。

2024-11-23 10:55:27 915

原创 241115-如何用sklearn做一个简单线性回归

然后就得到了符合格式的x,y,用上面的训练代码和画图代码进行操作即可,以下是我的excel数据,请自备数据进行试验。初始读入的是dataframe对象,取出来直接训练会报错,因为fit方法需要的参数是array数组,不能接收df。数据点比较少,只给了三个点,可能看的效果不是很好,懂意思就行。同时,如果你的excel有缺失值,记得填充,这里采用均值填充。如果是从excel表格中读入的数据,我们就需要对其进行处理。如果需要对其相关参数进行评估,代码如下。如有问题请大佬指出。

2024-11-15 09:53:32 308

原创 241105_Pycharm切换jupyter环境(jupyter报缺失包)

使用jupyter notebook进行代码学习往往是一种效率很高的方法,我们可以随时查看变量的内容。在使用conda管理虚拟环境时,往往我们在终端新建好虚拟环境并安装好所需要的包之后,在右下角把虚拟环境切换成所需的虚拟环境,jupyter notebook中仍然会报没有相关包的错误,原因是我们的内核没有成功切换。

2024-11-05 18:58:49 480

原创 241015_制作自己的Pix2PIx数据集

官方代码:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix首先,附官方数据集下载链接,便于大家对照查看格式,这里我下载了最小的facades数据集,毕竟我们只是对照查看格式,而不是真的拿他数据集来训练(里面最大的数据集有8G,下的时候看清楚哦)。你要是不想下也可以,我这里尽量把他数据集的格式描述清楚。首先解压出来是一个decades文件夹,下属三个文件夹traintestval(val非必须),每个文件夹下存放了类似下图的图片。

2024-10-15 12:40:18 1397

原创 241015_把一个文件夹中的所有图片按照序列命名

在数据集制作过程中,我们经常会遇到合并图片数据集后命名格式不统一或者因重复命名自动添加(1)(2)的问题,以下是一段代码,对合并后的所有文件进行按照序列重命名。代码中默认为jpg转jpg,如需png转jpg,请修改代码中指定位置。

2024-10-15 12:37:15 496 1

原创 241015_把文件夹中所有的图片缩放为指定大小(缩放数据集)

在制作自己数据集的过程中,我们经常会遇到image尺寸不统一的情况,以下是一段缩放到指定size的代码(代码中以512*512举例),修改路径即可运行。

2024-10-15 12:36:45 259

原创 241011-在jupyter中实现文件夹压缩后下载

在使用jupyter notebook过程中,我们经常会遇到成堆的文件无法批量下载的问题,这里提供压缩文件夹代码,压缩后即可右键文件选择download实现批量下载。

2024-10-15 12:36:10 454

原创 240930_CycleGAN循环生成对抗网络

CycleGAN,也算是笔者记录GAN生成对抗网络的第四篇,前三篇可以跳转在第三篇中,我们采用了pix2pix进行图像风格的转移,但在pix2pix上,训练往往需要在像素级上一一对应的数据,就造成了很多方面任务无法完成,有一定局限性。比如在绘画领域,我们无法得到画家当时所画的那个场景的照片,同样,我们此刻拍的照片也不能请那些画家来给咱们对照着画一幅画。这就造成了数据集无法一一对应,无法进行训练的问题。CycleGAN就是为了解决这样的问题,上面的图片就是CycleGAN所实现的效果。

2024-09-30 23:57:39 1078

原创 240929-CGAN条件生成对抗网络

前面我们学习了GAN()和DCGAN(),接下来继续来看CGAN(Conditional GAN)条件生成对抗网络。

2024-09-29 12:53:41 1398 1

原创 240929-DCGAN生成漫画头像

DCGAN是GAN的直接扩展,简单从命名来理解,DCGAN(Deep Convolutional Generative Adversarial Networks)就是比GAN(Generative Adversarial Networks)多了DC(Deep Convolutional),也就是加入了深度卷积,把CNN和GAN相融合了起来,在生成器和判别器的网络结构中加入了CNN架构。

2024-09-28 13:04:41 824

原创 240925-GAN生成对抗网络

GAN,顾名思义,gan……咳咳,就是干仗嘛(听子豪兄的课讲说这个名字还真的源于中文这个字),对应的就有两方,放在这里就是有两个网络互相对抗互相学习。类比武林高手切磋,都是高手惺惺相惜,打架只分胜负,不决生死,今天你打赢了,我回去总结一下复盘一下,想想怎么应对,明天我打赢了,你又回去总结经验,然后继续打下去。GAN其实是两个网络的组合,一个是生成器(,后文简称G),一个是判别器(,后文简称D),生成器负责生成模拟数据,判别器要保证自己判断的准确。

2024-09-27 16:48:22 1088

原创 240927-各种卷积最清晰易懂blender动画展示

在几个月前,写过一篇关于卷积过程中输入图像维度变化的博客,但是当时也是技术力不足,使用的是纯文字描述,可能对于初学者的帮助确实不大。机缘巧合下学习了blender,这次也有能力完善之前这篇博客。一般来说涉及到的维度变换都是四个维度,当batch size=4,图像尺寸为640*640,三通道时,此时维度就是4×3×640×640。3的意思是RGB三通道,如果你传入的图像是单通道图像,此时维度就是4×1×640×640。当然有些图你看着是一个,但是他还是有可能是一张RGB三通道图,具体怎么区分呢。

2024-09-27 14:38:00 1203

原创 240720_图像语义分割中数据预处理-划分训练集与验证集

分别读取原图文件夹以及标签文件夹中的文件到列表中,然后计算出文件数量,使用设定好的划分比例乘这个数量,得到对应的训练集验证集数量。再使用随机采样确定训练集和验证集的文件列表,去掉后缀后写入txt文本文件中,后续训练的时候读取这些文本文件。

2024-07-20 14:42:48 254

原创 240720_图像语义分割中数据集原图与标签对比查漏

核对原图和标签是否一一对应的工作是必要的,不然在训练过程中可能会发生已经训练了好几个epoch了,突然给你报xx.png找不到,然后你去删除掉了对应的jpg,但是在重新运行几个epoch之后,又报缺失另一个,这样的工作是繁琐且无趣的,我们在训练前就确保对应可以减少很多工作量。

2024-07-20 10:26:54 247

原创 240718_使用Labelme制作自己的图像分割数据集

从目标检测入门的朋友们可能更熟悉的是LabelImg,这里要注意做好区分,LabelImg和Labelme不是一个东西,如下经典图:(a)图像分类(目标检测):一张图像中是否含某种物体(b)物体定位(目标检测与目标识别):确定目标位置和所属类别。(c)语义分割(目标分割和目标分类):对图像进行像素级分类,预测每个像素属于的类别,不区分个体;(所有的CUBE一个颜色)(d)实例分割(目标分割和目标识别):定位图中每个物体,并进行像素级标注,区分不同个体;(CUBE都是不同颜色)

2024-07-19 16:46:51 1787

原创 240719_图像二分类任务中图像像素值的转换-[0,255]-[0,1]

在做语义分割二分类任务时,有时下载到的数据集或者我们自己制作的数据集,标签像素值会是[0,255](或者含有一些杂乱像素),但在该类任务中,往往0代表背景,1,2……代表每个类别,我们是二分类,就需要把[0,255]转换成[0,1],以下是查看像素值的代码。此时如果使用的是pycharm,可以在第10行打断点,然后debug执行,点击下方监视窗口中的作为Array查看,就可以在右侧SciView中查看具体的像素值,不同的像素值会有颜色区分,例如图中1采用不同颜色。

2024-07-19 16:43:28 504

原创 240713_昇思学习打卡-Day25-LSTM+CRF序列标注(4)

最后一天咯,做第四部分。

2024-07-13 18:52:30 345

原创 240712_昇思学习打卡-Day24-LSTM+CRF序列标注(3)

今天做LSTM+CRF序列标注第三部分,同样,仅作简单记录及注释,最近确实太忙了。

2024-07-12 16:21:48 627

原创 240711_昇思学习打卡-Day23-LSTM+CRF序列标注(2)

今天记录LSTM+CRF序列标注的第二部分。仅作简单记录。

2024-07-12 00:09:55 332

空空如也

空空如也

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

TA关注的人

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