【发布时间】:2018-12-13 10:10:25
【问题描述】:
我正在实现一个用于语音识别的 CNN。输入是形状为 (85314, 99, 1) 的 MEL 频率,标签是使用 35 个输出类(形状:(85314, 35))进行单键编码的。当我运行模型时,训练准确度(图 2)开始很高,并且在 epoch 的数量上保持不变,而验证的损失(图 1)会增加。因此,它可能过度拟合,但我找不到问题的根源。我已经降低了学习率并使用了批量大小,但结果保持不变。训练数据的数量也应该足够。我的超参数设置是否还有其他问题?
我的模型和超参数定义如下:
#hyperparameters
input_dimension = 85314
learning_rate = 0.0000025
momentum = 0.85
hidden_initializer = random_uniform(seed=1)
dropout_rate = 0.2
# create model
model = Sequential()
model.add(Convolution1D(nb_filter=32, filter_length=3, input_shape=(99, 1), activation='relu'))
model.add(Convolution1D(nb_filter=16, filter_length=1, activation='relu'))
model.add(Flatten())
model.add(Dropout(0.2))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(64, activation='relu'))
model.add(Dense(35, activation='softmax'))
model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['acc'])
history = model.fit(frequencies_train, labels_hot, validation_split=0.2, epochs=10, batch_size=50)
【问题讨论】:
-
你检查过你的训练数据和测试数据是否在相同的范围和格式吗?
标签: python validation keras conv-neural-network