这是一个基于遗传算法的机器作曲项目。指导进化方向的适应度函数使用了循环神经网络(RNN)和旋律音程的和谐判断。
训练集是文件夹data中的30段单音列旋律。我们将旋律的音高、时值转化为numpy数组的形式作为输入。
全连接神经网络的原理是利用反向传播算法来训练模型,通过不断调整权重和偏置来使得模型的输出结果与真实值之间的误差最小化。
RNN(循环神经网络)是一种神经网络模型,主要用于处理序列数据和具有时间依赖性的数据。它的主要原理是引入循环连接,使网络能够记忆之前的信息并将其应用于当前的输入。
我们用了 binary cross loss 作为判断神经网络是否优秀的损失函数,假设我们的输出为
采用随机生成的片段。
按照适应度函数作为概率,随机选择父本母本。适应度越大,成为亲本的可能性越大。将父本和母本的乐段各取一半拼在一起。并有$0.05$的概率基因突变。还有基因重组的变异方式。 其中,遗传算法的变异操作有:移调变换、逆行变换、倒影变换。
在music.zip中存有我们生成的部分片段。