吴恩达Coursera深度学习课程 deeplearning.ai (5-1) 循环序列模型--编程作业(三):利用LSTM即兴创作Jazz

在这个作业中,你将使用LSTM建立一个音乐生成模型,特别是在爵士音乐上。通过训练,你的模型将能够根据爵士音乐的语料库创作音乐。你将学习如何处理数据,构建LSTM模型,并实现音乐序列的预测和采样,最终生成音乐片段。
摘要由CSDN通过智能技术生成

Part 3: 利用LSTM即兴创作Jazz

欢迎来到本周的最后一个作业!在这个作业中,你将利用LSTM建立一个生成音乐的模型。在作业的最后你将可以听到你自己的音乐。

你将学会:
  • 在音乐生成中使用 LSTM
  • 利用深度学习生成你的 jazz 音乐
导包
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

# Using TensorFlow backend.

1 问题描述

你想为你朋友的生日创作一段jazz音乐。然而,你不了解任何乐器和音乐作品。幸运的是,你了解深度学习,并将使用 LSTM 网络解决这个问题。

您将训练一个网络,以作品风格代表爵士音乐来创作爵士乐独奏。

image

1.1 数据集

你将在爵士音乐的语料库上训练你的算法。 运行下面的代码收听训练集中的音频片断:

IPython.display.Audio('./data/30s_seq.mp3')

我们已经对音乐数据做了预处理,以”values”来表示。可以非正式地将每个”value”看作一个音符,它包含音高和持续时间。 例如,如果您按下特定钢琴键0.5秒,那么您刚刚弹奏了一个音符。 在音乐理论中,”value” 实际上比这更复杂。 特别是,它还捕获了同时播放多个音符所需的信息。 例如,在播放音乐作品时,可以同时按下两个钢琴键(同时播放多个音符生成所谓的“和弦”)。 但是这里我们不需要关系音乐理论的细节。对于这个作业,你需要知道的是,我们获得一个”values”的数据集,并将学习一个RNN模型来生成一个序列的”values”。

我们的音乐生成系统将使用78个独特的值。 运行以下代码以加载原始音乐数据并将其预处理为”value”。

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,Tx,78)维数组。 m 表示样本数量,Tx 表示时间步(也即序列的长度),在每个时间步,输入是78个不同的可能值之一,表示为一个one-hot向量。 因此,例如,X [i,t,:]是表示第i个示例在时间t的值的one-hot向量。
  • Y: 与X基本相同,但向左(向前)移动了一步。 与恐龙分配类似,使用先前值预测下一个值,所以我们的序列模型将尝试预测给定的 x1 x ⟨ 1 ⟩ ,…, xt x ⟨ t ⟩ 。 但是,Y中的数据被重新排序为维(Ty,m,78),其中 Ty T y = Tx T x 。 这种格式使得稍后进入LSTM更方便。
  • n_value: 数据集中独立”value”的个数,这里是78
  • indices_values: python 字典:key 是0-77,value 是特定音符

1.2 模型概述

模型结构如下:

image

根据从更长的音乐中取得的30个随机片段来训练模型。 因此,这里不用设置第一个输入

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值