- 博客(31)
- 收藏
- 关注
原创 野人传教士问题A*算法+GUI
同样也是学校的简单AI实验,主要的难点在于GUI的设置和动画的演绎过程!这个时间的配置非常关键,多一点和少一点就完全破坏了平衡,所以调试了好久,终于找到了一个比较好的展现过程,当然也有用线程的各种花式玩法,来实现这种动画的效果,也可以尝试把所有动画放在一起之类的操作,但是我这里由于用的时候是N个动画并行执行,所以就不乱来了,(主要是太菜了)。核心算法部分:# -*- coding: utf-8 -*-# @Time : 2022-04-26 13:30# @Site : 牧师-野人问题的算法核
2022-05-22 12:23:15
1478
1
原创 Pytorch加速模型训练速度总结
这是总结了很多了网上的方法,然后经过实验感觉应该OK的:前提是在显存够用的情况,并且batch_size足够大了(比如16+的时候了),只想着减少时间复杂度的情况下,所以这个时候一定是使用空间换取时间的(与checkpoint相反)1.减少训练步骤中掺杂的其他的东西:只留下 optimizer.zeors_grad() -> loss.backward()(最花时间,非常漫长)-> torch.nn.utils.clip_grad_norm_(有的时候中间会加上) -> o
2022-05-04 21:12:15
1667
原创 Python生命周期说明
Python的变量生命周期很神奇:python能够改变变量作用域的代码段是def、class、lamda。if/elif/else、try/except/finally、for/while 并不能涉及变量作用域的更改。也就是说,在我们普通写函数代码的时候,如果一旦定义,就是函数全局的情况,强制一些跨代码段也可以访问!搜索顺序为:本地变量->全局变量...
2022-04-26 14:47:22
1712
原创 Pycharm打不开的bug
前情:打开电脑后,突然就用不了了Pycharm,无论怎么点击就是没有任何反应。(吓出一身冷汗)方案:1.重启电脑(无用)2.用cmd,直接输入pycharm,以求打开软件(显示没有找到这个软件)3.将C:\Users\(你的用户名)\AppData\Roaming中的JetBrains文件夹删掉(有用!)直接把本地的缓存配置删除了,然后重启软件的时候,重新再配置一下。总结:仔细想了想,问题主要出在自己之前为了减少系统盘的负担,然后改动了pycharm内的配置文件idea.
2022-04-26 13:15:18
4694
原创 迪杰斯特拉的堆优化
前序:之前自己写过朴素版本的迪杰斯特拉,这里再补充一个优化版本的。题目:(双向图版本)链接:登录—专业IT笔试面试备考平台_牛客网来源:牛客网LOST GRACE DISCOVERED史东薇尔城坐落于宁姆格福与利耶尼亚湖的交界处,地势险要、易守难攻,是连接南北重要的交通枢纽。史东薇尔城不仅地理位置重要,内部更是错综复杂,第一次来到这里的褪色者往往会迷路。魔法师MaverickFW接手了大量的来自史东薇尔城的任务委托,每一次执行任务MaverickFW都需要从自己当前的所在地.
2022-04-04 12:49:12
1074
原创 试题 算法训练 自行车停放
试题 算法训练 自行车停放提交此题评测记录资源限制内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s问题描述有n辆自行车依次来到停车棚,除了第一辆自行车外,每辆自行车都会恰好停放在已经在停车棚里的某辆自行车的左边或右边。(e.g.停车棚里已经有3辆自行车,从左到右编号为:3,5,1。现在编号为2的第4辆自行车要停在5号自行车的左边,所以现在停车棚里的自行车编号是:3,2,5,1)。给定n辆自行车的停放情...
2022-04-01 19:24:13
1015
1
原创 一文解决新Dev打开时,编译问题
问题描述:测试代码:#include "iostream"#include "string"using namespace std;int main(){ int a=1; cout<<"Hello World!"<<a<<endl; return 0;} 当按下F9的时候,总是显示编译完了,但是按下F10或者F11的时候就出现了一下问题:一直无法运行起来打开黑框框解决方案:点击:工具-->编译选项-->进入编译
2022-03-28 17:38:56
710
转载 戒骄戒躁,努力实践
(在学习算法的时候,看到一个大佬的博客里面对于自己心路历程的反思和感悟,感觉非常适合现在的自己,所以记录下来。)不要被对象、属性、方法等词汇所迷惑;最根本的是先了解最基础知识; 不要放过任何一个看上去很简单的小问题--他们往往并不那么简单,或者可以引伸出很多知识点;不会举一反三你就永远学不会; 知道一点东西,并不能说明你会全部,需要经验积累; 看再多的书是学不全的,要多实践; 把时髦的技术挂在嘴边,还不如把过时的技术记在心里; 学习的最好方法之一就是多...
2022-03-15 22:54:27
134
原创 经典DJS算法小结
胆小了很久,感觉还是有必要作为一个菜鸡的角度把这个算法总结出来,主要原因就是因为自己总是忘记这个重要的算法,希望这次通过写博客总结可以记录下来。经典题干:输入顶点数量,边数量,然后根据边的数量输入点到点的距离长度,最后得出从node=0到node=node_num-1的距离。代码模板:#include "iostream"using namespace std;#define MAX 999999;#define NodeMax 1000;int map[2000][2000];i
2022-02-28 13:40:12
515
原创 显卡与AI发展
(课程作业要求上交帖子)显卡分类:现在国内可以买到的显卡主要分为三个类别:1)Geforce系列这个系列是销量最多、大众最为熟悉的显卡,一般用来打游戏。价格便宜,最新出来的旗舰卡RTX 2080Ti京东售价大概1w左右,根据不同的品牌,价格有所波动。低配置的便宜的一千就能买到。游戏发烧友花1w买这种显卡还是很常见的。这个系列显卡官方定位是消费级,就是让你用来打游戏的。但是它在深度学习上的表现也非常不错,很多人用来做推理、训练,单张卡的性能跟深度学习专业卡Tesla系列比起来其实差不太多,但是
2021-12-14 10:18:16
1774
原创 基础算法:softmax函数
有着简单的归一化的功能,把一组数据变得更加规则化,让数据的量纲消失,让结果以一种概率的形式出现。各项数据结果相加为1。计算原理图:计算公式:
2021-10-10 10:15:38
214
原创 基础算法:激活函数
系列文章:https://blog.youkuaiyun.com/m0_38065572/article/details/106210576
2021-10-10 10:14:55
136
原创 基础算法:交叉熵损失函数
改进方法论文:”随机优化的改进交叉熵方法“,DOI:10.13700/j.bh.1001-5965.2017.0017交叉熵主要用于度量两个概率分布之间的差异性。信息量设某一个事件发生的概率为????(????),则信息量表示为????????=−log(????(????)),I(x)表示信息量,log是以e为底的自然对数。信息熵用来表示所有信息量的希望,公式:(X表示一个离散型的随机变量)????????=−????=1????????????????log(??????????
2021-10-10 10:12:01
440
原创 基础算法:Sinkhorn算法
来源:https://blog.youkuaiyun.com/zsfcg/article/details/112510577?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163272158416780269811867%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163272158416780269811867&biz_id=0&am
2021-10-10 10:11:29
1776
转载 基础算法:BN与LN算法区别
网址:https://blog.youkuaiyun.com/Miracle_520/article/details/105429456?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162814815816780271581681%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162814815816780271581681
2021-10-10 10:10:26
1071
原创 基础算法:BN算法
网址信息:https://blog.youkuaiyun.com/Bruce_0712/article/details/106354615?ops_request_misc=&request_id=&biz_id=102&utm_term=BN%E7%AE%97%E6%B3%95&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-6-.pc_search_resu...
2021-10-10 10:09:54
110
原创 基础算法:白化
Whitening:白化主要分为PCA白化和ZCA白化,是一种重要的预处理过程,其目的就是降低输入数据的冗余性,使得经过白化处理的输入数据具有如下性质:(但是真的使用是,就很少2出现)1.特征之间相关性较低;2.所有特征具有相同的方差。主要介绍PCA方法,先介绍PCA是什么:(其实线性代数中学过)将—组N维向量降为K维(K大于0,小于N),目标是选择K个单位正交基,使原始数据变换到这组基上后,各字段两两间协方差为0,字段的方差则尽可能大有主成分分析那股味了
2021-10-10 10:09:13
656
原创 RNN的学习
RNN是一种时间顺序序列形式的网络结构:这是他在时间顺序上的体现:每一个时刻的输入信息,不止有RNN当时的输入的训练数据,也还有上一时刻的状态值S(t),一起输入,当然一开始的时候S(t)为None,然后每一个都是一个循环的进行。直到整个序列的数据全部都完成了学习。在torch中有专门的函数用来定义RNN,也就是nn.RNN(),只要声明参数就可以定义完成了同理,LSTM也就是在RNN上演练出来的模型,只不过在层中有了三个控制器,分别控制输入,输出,当前状态。这些控制器是
2021-10-10 10:08:33
189
原创 FCN的学习
网址:https://blog.youkuaiyun.com/Leon_winter/article/details/100124146?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162357595516780261915494%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162357595516780261915494&biz_i
2021-10-10 10:08:08
264
原创 TasNet端到端模型
这个模型的输入和输出都是声波信息。一开始输入的维度信息为1。分为三块:1. Encoder:声音讯号通过 Encoder后变成 Feture map2. Separator:Encode的输出给 Separator后产生两个Mask3. Decoder:将这两个Mask分别乘上 Encode的输出上,将这两个结果给 Decoder后就会产生分离后的两段声音讯号。4.PIT:TasNet在训练的时候是需要PIT的解码和编码/Encoder&Decoder编码...
2021-10-10 10:06:47
1483
原创 语音分离简单的频域介绍方法
频域的解决方法,使用特征提取器代替STFT直接建立有用的数据,再在分离结束时,用还原器,还原成声音的信息。基于Masking的解决方案:通过对mask的分离综合审判,得到两个矩阵向量,然后分别用矩阵向量和原始的混合与一个矩阵信息,想乘,得到了两个分离的纯净的信息。说明一下:这里的M1和M2可以分别是binary(0/1)或者是连续值(continuous)IBM:Ideal Binary Mask针对上面的掩模信息,做的一个想法。通过比较,在矩阵中的每一个格内比较红和蓝,
2021-10-09 22:24:11
453
原创 MulCat pro的学习
在Mulcat的基础上,针对越来越多的人分离,主要是改进了两个点:1.损失的计算从PIT变成了一种以匈牙利算法为主的损失计算方法(但是还是用SI-SNR)。2.模型内部的设置,在卷积前面加上了一些操作(还没有完全总结到)。首先分析第一个步骤是如何做到的。Optimal PIT:(基于Sink PIT提出,所以一并总结得了)首先是Sink PIT:基于Sinkhorn算法得到,而sink算法的核心就是:任意一个正向矩阵都可以通过迭代的行正则化和列正则化变成一个双重随机矩阵。
2021-10-09 22:23:24
166
原创 MulCat DPRNN的学习
总体网络结构:同时优化分离和说话人识别两个目标实现更好的说话人分离,此外该网络能够实现5-6人的分离,因此该网络是一个很好的设计。用了新的网络的RNN构架方法;不使用mask掩码,提出新的loss计算方法。模型总体介绍:这个模型主要借鉴了罗艺的DPRNN的架构方式,运用了encoder,separator,decoder的架构方式。编码器encoder:输入:x∈ℝ????,代表混合语音的信号,T不是固定的数值。经过一维卷积网络E(参数:kernel size
2021-10-09 22:22:25
557
原创 PIT问题和论文介绍
PIT:Permutation Issue在模型的两端的声音信号,不知道哪一个是对应的说话者的信息。简言之,不知道如何摆放你的正确答案。因为这就会涉及到如何计算loss的问题。如何正确的计算loss,不可能是正好结果和参考结果相反去计算loss,这样不就是让模型玩完蛋嘛。。。就是一种计算loss的方法。PIT问题:简单的说:有一个模型,但是分离出来的掩模信息不知道如何排列,我们先尝试随机排列结果,然后训练,更新参数,然后重新排列,让损失函数更加小,更新参数,直到损失函数收
2021-10-09 22:21:53
704
原创 Wavesplit的学习
罗艺讲的知识:此外还有对训练目标和训练任务上的一些探索。Wavesplit引入说话人特征进行分离。该模型首先在一个固定时间窗内计算说话人向量,然后通过聚类计算出全局向量。之后将说话人信息送入分离网络得到分离结果先提取出额外的说话人的信息,生成一个向量,再把这个向量一起放到分离网络中。这种方法,对于那种不是完全重叠的混合语音可能更加适合,而且更加适用于多人说话的混合语音。原始论文:分为两个模块:speaker stack和separation stack模块。speaker模块
2021-10-09 22:20:53
605
原创 VoiceFliter的学习
总流程图:这个网络其实可以实现盲源分离,因为指定人的语音分离就是声纹模型+盲源分离,只不过需要加以改进才可以!!!有点特定人语音分离的感觉,但是实际上不是,是依靠其的原理,进行多人的分离。模型主要是训练两个网络:一个是说话者的Encoder;一个是时间维度掩模网络,也就是核心的VoiceFilter。这两者是分开来训练的,因为说话人的识别和声源分离任务的需求是不同的,放到一起根本无法训练。而在下面看到有Noisy Audio和Clean Audio数据,一个是混合的语音信息,一个是干
2021-10-09 22:20:16
807
原创 DPT-FSNet的学习
引言:最近的双路径的网络构架基于块内和块之间的处理,可以让输入序列有更好的处理结果。之前的结果都是基于时域上的,没有充分考虑到对于SE上面的研究成果。所以我们提出了一种在频域上的针对SE的网络接受...
2021-10-09 22:19:41
472
原创 DPTNet的学习
DPTNet和Sepformer原理是十分相似的,关键在于1.两者在Decoder有区别,2.中间的主要的Sepformer中的transformer构造不同。整体:由于都是借鉴的是DPRNN的数据处理过程,都是Encoder+Separation+Decoder。Encoder:先通过一维卷积,再激活一下。Decoder:基于TasNet,也就是mask方法,所以运用混合声源与mask网络相乘,然后用线性层网络Linear分析出有多少个声源,最后重叠相加
2021-10-09 22:19:01
1722
3
原创 DPRNN的学习
可以以非常简单的方式组织任意类型的RNN层(不重要,因为我这里会换成transformer)。优点:1.模型更小2.性能更好(SI-SNR)模型组成:首先肯定是encoder和decoder了,一个声音的信号经过编码才会得到这种L*N的形式。1.Segmentation(分割模块)把输入分割成重叠的块,再把所有的块连接为3-D张量。先记住这里有一个点:K=2P(就是对应的划分好了的关系!!!!)输入W:N*L规格的向量信息,N表示词向量维度特征,L表示时间步长。把
2021-10-09 22:17:14
2781
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人