PyTorch入门程序
在 PyTorch For Audio and Music Processing 入门代码的基础上添加了一些注释和新的内容,包括:
Download dataset
Create data loader
Build model
Train
Save trained model
Load model
Predict
注意,以下代码存在一个小问题:在Pytorch的CrossEntropyLoss()损失函数中,自带了计算Softmax这一步骤,所以在神经网络最后不需要Softmax这一层。
12345import torchfrom torch import nnfrom torch.utils.data import DataLoaderfrom torchvision import datasetsfrom torchvision.transforms import ToTensor
1234567891011121314def download_mnist_datasets(): train_data = datasets.MNIST( root=" ...
音乐速度与节拍估计(二)教程阅读笔记
ISMIR 2021 速度、节拍与强拍估计教程阅读笔记
教程链接: Tempo, Beat, and Downbeat Estimation — Tempo, Beat and Downbeat Estimation (tempobeatdownbeat.github.io)
Annotate
自动标注 + 自动修正 + 人工修正
Baseline
See 音乐速度与节拍估计基本方法 | WiZardWen (wzw21.cn)
Evaluate
F-measure
将节拍估计问题视为二分类问题来进行评估
Typically use a tolerance window of +/- 70ms around each ground truth annotation.
使用 F-measure 的好处:Catch either: i) natural human variation in tapping and not punish it, or ii) contend with cases like arpeggiated chords where it’s difficul ...
去除来必力(Livere)附带广告
去除来必力(Livere)评论系统附带韩文广告的两种方法
方法一:添加CSS代码
在css文件(e.g. normalize.min.css)中添加如下代码
123.trc_rbox_container { display: none !important;}
添加后需要hexo clean
方法二:添加JS代码
在js/pug文件(e.g. livere.pug)中添加如下代码
1234567891011121314script. var intervalFunctionID = setInterval(function(){ myTimer() }, 1000); function myTimer() { if (document.getElementById("taboola-livere") != null) { if (document.getElementById("taboola-livere").style.display = ...
音乐速度与节拍估计(一)基本方法
使用Librosa库对音乐速度、节拍进行估计的基本方法
参考:https://tempobeatdownbeat.github.io/tutorial/ch2_basics/baseline.html
基本设置
1234import librosaimport matplotlib.pyplot as pltimport librosa.displayimport numpy as np
1mount = False
1234from google.colab import drivedrive.mount('/content/drive')# drive._mount('/content/drive') # failed on Jan 21st, 2022mount = True
1234567891011121314if mount == True: filename = "drive/MyDrive/data/tempo_tutorial/audio/book_assets_ch2_basics_audio_easy_exa ...
使用Python播放MIDI音符
使用 Python 播放 MIDI Note
方法一:使用music21
123456789101112import music21 as m21def play_note(pitch="C4", length=2, velocity=127, instrument='Piano'): note_1 = m21.note.Note(pitch, quarterLength=length) note_1.volume.velocity = velocity stream_1 = m21.stream.Stream() if instrument == 'Piano': stream_1.append(m21.instrument.Piano()) # stream_1.insert(0, m21.instrument.Piano()) stream_1.append(note_1) s_player = m21.midi.realtime.StreamPlaye ...
群体智能优化算法
群体智能优化算法
研究背景
群体智能优化算法(Swarm Intelligence Optimization Algorithm)是计算智能中的一种常用算法,其基本理论是模拟自然界中鱼群、鸟群、蜂群、狼群和细菌群等动物群体的行为,利用群体间的信息交流与合作,通过简单有限的个体间互动来达到优化的目的。
群体智能(Swarm Intelligence, SI)由Gerardo Beni和Jing Wang于1989年首次提出,是研究由大量简单个体构成的群体系统的学科。与个体的智能相比,这些群体系统往往并没有复杂精细的内部设计,但基于简单的个体与规则,它们具有更强的鲁棒性、稳定性和适应性。群体智能方法处理的最典型问题就是优化问题。优化问题的基础性能够较为直观地体现群体方法的理论特性,辅助其理论研究,同时也具有重要的应用价值,进一步推动了群体智能算法的发展。与传统的优化算法相比,基于仿生学的群体智能优化算法本质上是一种概率并行搜索算法。其寻优速度更快,能更有效地搜索复杂优化问题的全局最优解。
常见的群体智能优化算法有蚁群算法(Ant Colony Optimization,ACO)、粒子群 ...
群体智能优化算法之鲸鱼优化算法
鲸鱼优化算法
鲸鱼群体
鲸鱼是世界上最大的哺乳动物,是有情感的高智商动物,大部分鲸鱼被认为是食肉动物且群居。座头鲸是最大的长须鲸之一,它们使用一种独特的捕猎方式来猎食虾群和鱼群,被称为泡泡网(Bubble-net)捕猎方式,如图4、图5所示。它们在捕食时以螺旋式逼近猎物,吐出气体形成气泡,迫使鱼群聚集以方便捕食。鲸鱼优化算法便是受启发于鲸鱼(特别是座头鲸)的捕猎方式。
图4:“泡泡网”捕猎示意图,引用自论文《The whale optimization algorithm》
图5:座头鲸捕猎场景
模型与算法
鲸鱼优化算法与灰狼优化算法相似,都采用对目标位置先进行包围再捕食的策略。不同点在于鲸鱼优化算法直接将当前最优解作为包围中心,且鲸鱼优化算法的捕猎逼近过程分为两种,第一种逐步降低距离,另一种以螺旋形逼近。鲸鱼优化算法的基本位置更新方式与灰狼优化算法相同,见灰狼优化算法公式(1)至(4)。
鲸鱼优化算法基于一个随机数p∈[0,1]来决定当前搜索单元的行动,有50%的概率直接根据目标位置进行移动,有50%的概率以螺旋线逼近猎物。鲸鱼在捕猎时的行为被定义为:
X⃗(t+1)={X ...
群体智能优化算法之灰狼优化算法
灰狼优化算法
灰狼群体
灰狼属于犬科动物,被认为是顶级的掠食者,它们处于生物圈食物链的顶端。灰狼大多喜欢群居,每个群体中平均有5至12只狼。灰狼群体有着严格的社会等级制度,如图1所示,其中α是狼群的领导者,负责所有决策;β协助α进行决策,必要时进行接替,地位仅次于α;δ则服从于α和β,负责放哨、侦察等事务;ω处于社会底层,是不可缺少的普通狼,负责种群内部关系的平衡。
图1:灰狼的等级制度,引用自论文《Grey Wolf Optimizer》
集体狩猎是灰狼的一种社会行为,社会等级在集体狩猎过程中发挥着重要的作用,捕食的过程在α的带领下完成。主要包括三个步骤:1)跟踪和接近猎物;2)骚扰、追捕和包围猎物,直到它停止移动;3)攻击猎物。灰狼的集体狩猎行为如图2所示。
图2:灰狼集体狩猎行为,引用自论文《Grey Wolf Optimizer》
模型与算法
灰狼优化算法的主要思路是假设α、β、δ更了解猎物的潜在位置,即优化问题的决策空间中最佳解决方案所在的位置,其他灰狼个体依据α、β、δ的位置来更新其自身位置,逐渐逼近猎物(最优解)。算法直接将前3匹适应度最高的狼分别定义为α,β和 ...
非侵入式教务系统辅助选课方法
注意:该方法仅可用于替代手动刷新页面并选择课程,不影响选课的公平性
下载安装“按键精灵”
运行软件后,在新建脚本中选择新建空白脚本
进入脚本后选择上方“普通”旁边的“源文件”,并粘贴入如下内容。
12345678910d = 30000MoveTo 1285,376LeftClick 1Delay 1000MoveTo 293,538LeftClick 1Delay 1000MoveTo 1756, 246LeftClick 1Delay d
(注意三处MoveTo后的坐标分别为“查询”按钮、查询结果中第一项课程前的勾选框,“提交”按钮的坐标位置,不同电脑按钮坐标可能不同,可用软件里的“抓抓”功能获取各个按钮的坐标并进行修改)
完成脚本后保存退出
按电脑键盘上相应热键可启动或停止脚本,热键可设置
使用时需先进入“自由选课”,并在搜索框中输入想选课程的全称,然后启动脚本
使用脚本时不能使用电脑做其他事
时间设置为30s抢一次,可更改
可按顺序加入更多勾选框坐标,以实现同一时间抢多门具有相同特征的课程(例如网课)
— 2019年12月
使用Python读取和播放音频文件
暂时记录两种方式,分别为使用“pydub+ffmpeg+simpleaudio”和“librosa+simpleaudio”,推荐第二种
使用pydub库读取音频、simpleaudio库播放音频
环境配置
Windows10环境下
pip install pydub
pip install simpleaudio
安装ffmpeg
从https://www.gyan.dev/ffmpeg/builds/下载ffmpeg(压缩包),解压后将bin文件所在位置加入Path环境变量,并在相应程序中添加一行代码。具体操作参考以下三个链接:
https://blog.csdn.net/qq_38161040/article/details/91654183
https://cloud.tencent.com/developer/article/1702673
https://www.freesion.com/article/6184901177/
注意该步骤不是用pip安装
重启计算机!(重要)
代码示例
12345678910111213141516171819 ...