我目前正在尝试训练一个用于语音识别的 DNN,其中包含大量说话者,每个说话者都有自己的标签(output_classes = 说话者总数)。 我的数据库现在有 300 个演讲者,Keras 模型摘要如下:
1240 (input size) --> 256 hidden --> 256 hidden --> 256 hidden (0.5 dropout) --> 256 (0.5 dropout) --> 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。不过,训练和交叉验证损失在每个时期之后都在下降。 有什么建议吗?
最佳答案
所以,事实证明,由于我的数据库太小,我的网络严重过度拟合。添加更多数据和正则化最终有助于获得不错的准确性。
关于python - Keras 交叉验证精度在每个 epoch 后稳定在 (1/output_classes),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47214731/