5-1 背景和知识点简介
Magenta
google基于TensorFlow做的和音乐 艺术相关的项目
格式
midi:用数字表示音

mp3
技术
RNN:每一个输出和前面输出建立联系,很好处理序列化数据
LSTM
5-3 什么是midi文件
midi:二进制文件 基本结构:文件头+数据描述 很小一般十几kB MP3一般十几MB

model.add(Dense(32, input_dim=500)) // 全连接层
model.add(Dense)
层在tf.keras.layers里面
tf版本不一样,对应用法可能不一样
函数的参数列表 (xx=None)是个可选参数,不用的时候默认为none

丢弃层:只用了70%的神经元 防止过拟合
如果有多个LSTM堆叠起来,第一个层需要指定形状,
model.add(tf.keras.layers.LSTM(
512,#LSTM层神经元的数目是512,也是输出维度
input_shape=(inputs.shape[1], inputs.shape[2]), # 输入数据形状为shape[2]个时间长度,每一个时间点下样本数据的特征值维度是shape[1]
return_sequences=True # 只有最后一层LSTM不用设置))
丢弃层
...Dropout(0.3)
#丢弃30%神经元
全连接层
Dense(256)
Dense(num_pitch)
激活层
softmax属于激活层,用softmax函数去计算
Activation('Softmax')
对model进行配置
model.compile(loss="categorical_crossentropy", optimizer=rmsprop)
交叉熵计算误差,使用对循环神经网络比较优秀的rmsprop优化器
保存参数
model.load_weights(weights_file)
5-8编写从训练文件获取音符的方法
gedit是个文本编辑器
pickle;glob是读文件的库
mkdir 创建文件夹
glob:匹配所有符合条件的文件,并以List的形式返回
for file in glob.glob("music_midi/*.mid"):
创建一个数组notes[]
for elements in notes_to_parse:
#Note类型就取Pitch
if isinstance(element, note.Note):
notes.append(str(element))
elif isinstance(element, chord.Chord):
#转换为整数 ,用·分割,这个是midi然后转成音符 比如4.15.7
notes.append('.' . join(str(n) for n in element.normalOrder))
#将数据写入 data/notes 文件
with open('data/notes', wb) as filepath:
pickle.dump(notes, filepath)
5-9 编写从预测数据来生成音乐的方法
def create_music(prediction):
网友评论