深度神经网络——LSTM作曲机的实现

       随着人工智能技术的不断发展,人工智能作曲已经成为可能。现有的神经网络作曲方法,主要是基于循环神经网络,变分自动编码器或生成对抗网络实现的。其中,RNN是专门处理序列数据的网络,但是标准RNN无法解决长期依赖问题。Hochreiter和Schmidhuber在标准RNN的基础上进行了改进,提出了长短时记忆网络(LSTM),很好地解决了长期依赖问题。

       本次实验通过LSTM实现了一个能自动生成音乐的作曲机,以一首莫扎特的Krebs乐曲为训练数据,生成了数曲风格类似,还算动听的音乐。实验主要分为五大步骤,分别为MIDI音乐文件的解析,数据集的准备,神经网络的建立,训练网络以及音乐的生成。本实验采用三通道拼接+拆分的网络结构,还通过改进的损失函数缓解了模型的过拟合问题。

实验环境:Python3.8,torch 1.11.0+cu113,mido1.2.10,代码在Google colab上运行。

一、网络简介

1、整体架构

网络的输入由音符、速度、时间三个编码后的向量拼接而成,经过一层LSTM和一层全连接层,三个分量被重新切分开,分别进行LogSoftmax并计算损失,这种三通道拼接+拆分的方法有利于模型捕获不同序列之间的关系。

2、LSTM结构

LSTM的关键是细胞状态Ct,也就是图中顶端水平线上传送的向量。LSTM可以通过“门”结构对细胞单元中的信息进行删除或添加,门是一个可以让信息选择性通过的结构,通常由一个sigmoid函数和一个按位乘运算组成,sigmoid函数可以理解成门开的大小,决定了信息通过量。

用LSTM自动作曲具有以下优点:1.不需要提前计算时间序列的参数;2.对时间序列数据的性质没有过多要求,适用范围较广;3.可以学习到时间序列内部复杂的规律,而不只是机械的针对某些固定因素;4.可以捕捉时间序列的长期依赖关系。

3、损失函数

实验中定义的损失函数如下,包括三个分量的损失之和,还添加了L1正则项,防止模型的过拟合。

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值