完成Andrew ng课程中触发词检测的作业后。我做了一些训练示例并尝试了相同的模型,但尽管准确度为 0.88(考虑到数据的偏度,这并不是很好),但模型在预测时表现非常糟糕。背景音频给出的概率为 0.44,而任何其他声音的概率都低于这个值。
形状(trainx)=(100,5511,101)
形状(训练)=(100,1375,1)
模型:
def model(input_shape):
X_input = Input(shape = input_shape)
X = Conv1D(filters=196,kernel_size=15,strides=4)(X_input)
X = BatchNormalization()(X)
X = Activation("relu")(X)
X = Dropout(rate=0.8)(X)
if tf.test.is_gpu_available():
X=tf.keras.layers.CuDNNGRU(units=128, return_sequences=True)(X)
else:
X=GRU(units=128,return_sequences=True)(X)
X = Dropout(rate=0.8)(X)
X = BatchNormalization()(X)
if tf.test.is_gpu_available():
X=tf.keras.layers.CuDNNGRU(units=128, return_sequences=True)(X)
else:
X=GRU(units=128,return_sequences=True)(X)
X = Dropout(rate=0.8)(X) # dropout (use 0.8)
X = BatchNormalization()(X)
X = Dropout(rate=0.8)(X)
X =TimeDistributed(Dense(1, activation = "sigmoid"))(X)
model = Model(inputs = X_input, outputs = X)
return model
培训是否通过
history=model.fit(trainx,trainy, validation_split=0.30, epochs=500, batch_size=5,callbacks=
[cp_callback])
我检查了似乎没有任何错误的训练标签。在训练时,我的验证准确度比训练准确度提高得非常快,这也令人困惑。任何人,请解释一下发生了什么错误。提前致谢 :)