我目前正在尝试使用大量扬声器训练DNN进行语音识别,每个扬声器都有自己的标签(output_classes =扬声器总数)。 我的数据库现在有300个发言人,Keras模型摘要如下:
1240(输入大小) - > 256隐藏 - > 256隐藏 - > 256隐藏(0.5辍学) - > 256(0.5辍学) - > Softmax(300)
我正在分批提供数据(每个演讲者数据=一批)并使用以下优化器:
model.compile(
loss='categorical_crossentropy',
optimizer='Adam',
metrics=['accuracy'])
和fit_generator
如下:
model.fit_generator(
trainGen(i=0),
steps_per_epoch=num_class,
epochs=500,
validation_data=(x_test, y_test))
其中trainGen
是我的生成器函数
在训练时,交叉验证的准确性总是稳定在0.0033,即1/300。然而,培训和交叉验证损失在每个时代之后都在下降。 有什么建议吗?
答案 0 :(得分:1)
所以,事实证明我的网络太大了,因为我的数据库太小了。添加更多数据和正规化最终有助于获得良好的准确性。