0

我目前正在尝试训练一个 DNN 用于具有大量扬声器的语音识别,每个扬声器都有自己的标签(output_classes = 扬声器总数)。我的数据库现在有 300 个发言者,Keras 模型摘要如下:

1240 (输入大小) --> 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。不过,训练和交叉验证损失在每个 epoch 之后都在下降。有什么建议么?

4

1 回答 1

1

因此,事实证明,由于我的数据库太小,我的网络严重过度拟合。添加更多数据和正则化最终有助于获得不错的准确性。

于 2018-04-06T22:05:41.980 回答