用Keras搭建模型
Keras 的核心数据结构是 model,一种组织网络层的方式。最简单的模型是 Sequential 顺序模型,它由多个网络层线性堆叠,它可以直接通过如下方式搭建:
from keras.models import Sequential
model = Sequential()
对于上面提到的CNN网络,在Keras操作中,可以简单地使用 .add() ,将需要搭建的神经网络的layer堆砌起来,像搭积木一样:
model.add(Conv2D(64, (3, 3), padding = "same", activation = "tanh", input_shape = input_dim))# 卷积层
model.add(MaxPool2D(pool_size=(2, 2)))# 最大池化
model.add(Conv2D(128, (3, 3), padding = "same", activation = "tanh")) #卷积层
model.add(MaxPool2D(pool_size=(2, 2))) # 最大池化层
model.add(Dropout(0.1))
model.add(Flatten()) # 展开
model.add(Dense(1024, activation = "tanh"))
model.add(Dense(20, activation = "softmax")) # 输出层:20个units输出20个类的概率
其中的Dropout()函数的作用是减少过拟合,在深度学习训练过程中,对于神经网络训练单元,按照一定的概率将其从网络中暂时移除,对于随机梯度下降来说,由于是随机丢弃,故而每一个mini-batch都在训练不同的网络。
训练出结果后,用model.predict()预测语音对应的标签。