Andrew Ng 的 Coursera 作业 - 训练完整的触发词检测模型

nwl*_*wly 8 machine-learning deep-learning keras tensorflow rnn

在 Andrew Ng 的深度学习 Coursera 课程中,有一个关于触发词检测的作业(例如,不是我的:jupyter notebook)。

在作业中,他们只是提供了经过训练的模型,因为他们声称使用带有 GPU 的 4000 多个训练示例进行训练需要几个小时。

我没有使用提供的模型,而是尝试使用它们的函数创建自己的训练示例,然后从头开始训练模型。原始音频文件保持不变。有 2 个背景文件,所以我确保每个背景都有 2000 个训练示例:

n_train_per_bg = 2000
n_train = len(backgrounds)*n_train_per_bg
orig_X_train = np.empty((n_train, Tx, n_freq))
orig_Y_train = np.empty((n_train, Ty , 1))

for bg in range(len(backgrounds)):
    for n in range(n_train_per_bg):
        print("bg: {}, n: {}".format(bg, n))
        x, y = create_training_example(backgrounds[bg], activates, negatives)
        orig_X_train[bg*n_train_per_bg + n, :, :] = x.T
        orig_Y_train[bg*n_train_per_bg + n, :, :] = y.T

np.save('./XY_train/orig_X_train.npy', orig_X_train)
np.save('./XY_train/orig_Y_train.npy', orig_Y_train)
Run Code Online (Sandbox Code Playgroud)

然而,跑了一个小时后,得到的结果却相当令人失望。同一个练习中后面的一个例子显示了他们正常运行的模型,当在 x 轴上的 400 标记附近检测到触发词“激活”时,显示概率峰值:

正确答案

这是我的,它不仅没有检测到任何东西,而且只是扁平化!:

1小时训练后

我所做的唯一修改是:

  • 将 Adam 优化器的学习率从 0.0001 更改为 0.0010
  • 设置batch_size为 600

我知道我可能仍然需要合并更多的 epoch,但我很惊讶输出概率会持平而没有变化。我是做错了什么,还是我只需要相信模型会收敛到更有意义的东西?