零基础入门语音识别-食物声音识别
CNN(卷积神经网络)模型的搭建与训练。
Task4 CNN模型搭建训练个人理解打卡
本次新人赛是Datawhale与天池联合发起的零基础入门系列赛事第八场 —— 零零基础入门语音识别-食物声音识别挑战赛。
baseline由开源学习组织Datawhale提供
https://github.com/datawhalechina/team-learning
在task4里我细化学习了CNN网络的搭建和代码实现,对CNN在baseline中的初步了解在Task1中就有所提及,那今天的打卡就让我们来聊聊关于CNN的“爱恨情仇”吧!
又见CNN
CNN (Convolutional Neural Networks)卷积神经网络,是一类包含卷积计算且具有深度结构的前馈神经网络。
它的基本架构如下所示
1)输入层:用于数据的输入
2)卷积层:使用卷积核进行特征提取和特征映射------>可以多次重复使用
3)激励层:由于卷积也是一种线性运算,因此需要增加非线性映射(也就是激活函数)
4)池化层:进行下采样,对特征图稀疏处理,减少数据运算量----->可以多次重复使用
5)Flatten操作:将二维的向量,拉直为一维的向量,从而可以放入下一层的神经网络中
6)全连接层:通常在CNN的尾部进行重新拟合,减少特征信息的损失----->DNN网络
而在上述的结构里对卷积层与池化层的作用可以用下图来描述。
搭建CNN网络并训练
在baseline中,我先将其按师兄师姐的指导跑通后,对代码进行个人理解
我们先建立数据处理库,绘图库等基本库,分类训练集和测试集。
%matplotlib inline#实现程序内嵌绘图,省略pit.show步骤
再用keras1来搭建神经网络。
再搭建好CNN模型后,我们要调用咀嚼音频训练集来训练搭建好的模型,在进行测试集的测试,便能够得到机器预测的结果了
如果希望数据的准确率更高,你还可以进一步地配置你的优化器.complies())。Keras 的核心原则是使事情变得相当简单,同时又允许用户在需要的时候能够进行完全的控制(终极的控制是源代码的易扩展性)。
Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK, 或者 Theano 作为后端运行。现在Keras已经和TensorFlow合并,可以通过TensorFlow来调用。Keras 的核心数据结构是 model,一种组织网络层的方式。最简单的模型是 Sequential 顺序模型,它由多个网络层线性堆叠。对于更复杂的结构,你应该使用 Keras 函数式 API,它允许构建任意的神经网络图。 ↩︎