实现使用LSTM生成音乐的模型,你可以在结束时听你自己的音乐,接下来你将会学习到:
使用LSTM生成音乐
使用深度学习生成你自己的爵士乐
现在加载库,其中,music21
可能不在你的环境内,你需要在命令行中执行pip install msgpack
以及pip install music21
来获取。
from __future__ import print_function
import IPython
import sys
from music21 import *
import numpy as np
from grammar import *
from qa import *
from preprocess import *
from music_utils import *
from data_utils import *
from keras.models import load_model, Model
from keras.layers import Dense, Activation, Dropout, Input, LSTM, Reshape, Lambda, RepeatVector
from keras.initializers import glorot_uniform
from keras.utils import to_categorical
from keras.optimizers import Adam
from keras import backend as K
使用LSTM生成爵士音乐
IPython.display.Audio(‘./data/30s_seq.mp3‘)
我们已经对音乐数据进行了预处理,以按照音乐“值”来呈现它。你可以非正式地将每个“值”视为一个音符,其中包括振幅和持续时间。例,如果你按下特定的钢琴键0.5秒,那么你刚刚弹奏了一个音符。在音乐理论中,“值”实际上比这更复杂 - 具体而言,它还收集了同时播放多个音符所需的信息。例如,在播放乐曲时,你可以同时按下两个钢琴键(同时播放多个音符会产生所谓的“和弦”)。但是我们不需要担心音乐理论的细节。这个作业目标,你需要知道的是我们将获得值的数据集,并将学习RNN模型以 生成值序列。
我们的音乐生成系统将使用78个独特的值。运行以下代码以加载原始音乐数据,并将其预处理为值。这可能需要几分钟时间。
X, Y, n_values, indices_values = load_music_utils()
print(‘shape of X:‘, X.shape)
print(‘number of training examples:‘, X.shape[0])
print(‘Tx (length of sequence):‘, X.shape[1])
print(‘total # of unique values:‘, n_values)
print(‘Shape of Y:‘, Y.shape)
shape of X: (60, 30, 78)
number of training examples: 60
Tx (length of sequence): 30
total # of unique values: 78
Shape of Y: (30, 60, 78)
简单解释下数据集:
X
: 这个是维度 (m, \(T_x\), 78) 的数组,我们有 m 个训练样本, 每个样本被分割为 \(T_x =30\) 的音乐值。在每个时间步,输入的是78个不同的可能值之一,表示为一个one-hot向量。 因此,X[i,t,:]
是表示 时间t的 第i个样本的值的一个 one-hot 向量。
Y
: 这与“X”基本相同,但向左移动了一步。类似于恐龙命名,我们感兴趣的是使用先前的值来预测下一个值的网络,因此,我们序列模型在给定 \(x^{\langle 1\rangle}, \ldots, x^{\langle t \rangle}\) 时将尝试预测 \(y^{\langle t \rangle}\)。 但是,数据Y
被重排成维度\((T_y, m, 78)\), 且 \(T_y = T_x\),这个格式更方便给LSTM喂数据。
n_values
: 此数据集中唯一值的数量,这应该是78。
indices_values
: 字典,0-77的数值映射到音乐值的字典。
下面将使用的模型的架构:
我们将从一段较长的音乐片段中 随机抽取30个值 来训练模型。因此,我们不会设置第一个输入 \(x^{\langle 1 \rangle} = \vec{0}\),因为现在大部分的音频片段都在一个音乐的中间开始,我们设置每个片段具有相同的长度 \(T_x = 30\) 让向量化更容易。
Sequence Model-week1编程题3(用LSTM网络即兴独奏爵士乐)
原文:https://www.cnblogs.com/douzujun/p/13196807.html