DNN深度神经网络完成音乐分类

2022-02-16  本文已影响0人  刘小白DOER

    前几天是实现wav文件的特征提取,今天来使用kaggle上上案例测试一番,实践基于GTZAN数据集,是用于评估音乐流派识别的机器聆听研究中最常用的公共数据集。经过实践,发现这个案例基本攘括了前段时间神经网络学习的所有知识,可以很很好的复习学习的内容,可以作为以后简单网络的开局案例。

    语音特征提取时,笔者以前只知道帧数放在一起算平均来提取一段语音的特征(均值np.mena),还可以增加特征的方差(np.var)来丰富特征,在以后笔者oneclass语音识别是值得借鉴。

1、数据读取dateset

    基于GTZAN数据集,使用pd.read_csv读取csv文件,数据文件共1000行,60个列。特征列包含音频文件中提取的多个要素的均值和方差。包含10种类型的集合,每个流派有100个音频文件,所有文件的长度均为30秒,所有数据的数据点数在30 * 22050 = 661500附近。

2、特征处理Feature Extraction

    使用sklearn.preprocessing的LabelEncoder() 函数完成目标类别数字编码。

3、特征标准化Scaling the features

    使用sklearn.preprocessing的StandardScaler函数使数据形成标准正态分布。

5、训练测试分离Dividing Training and Testing Dataset

    使用train_test_split完成测试集和训练集分离,test_size=0.1。

6、创建DNN模型Building the model

    DNN模型包含四个隐藏层,激活函数使用relu,同时使用dropout防止过拟合。

    输出层有十个神经元,因为输出的是互斥的多分类,激活函数使用softmax。

    使用Adam优化器来训练模型,训练轮次为600,Adam优化器是一种自适应学习率算法。

    model.summary()显示模型的所有层以及参数等信息,Total params: 203,338。

7、模型验证Model Evaluation   

    model.evaluate在测试集上验证可以得到78%的准确率。

    查看学习曲线,训练模型过拟合。

    使用分割的3秒音乐数据再次训练

    features_3_sec.csv这个文件具有相同的结构,但歌曲之前被拆分为3秒的音频文件,这样可以增加10倍于我们进入分类模型的数据量,是解决过拟合的一个方法,数据越多越好。

    再次训练发现,模型在测试集上可以达到93.99的准确率。

    

上一篇下一篇

猜你喜欢

热点阅读