机器学习模型会在大量训练数据上迅速收敛,这是有原因的吗?

时间:2019-04-03 22:59:01

标签: python tensorflow keras

我正在使用keras构建一个简单的机器学习模型。我希望设置模型以执行标量回归。在大约9个星期之后,我建立的模型就很快地在训练损失上达到了收敛。训练数据包含大约84000个示例,这些示例包含6个功能。

我正在运行100个时期的模型,批量大小为250。我使用的是一个验证集,它是训练集的20%。

由于我是在本地计算机(单CPU,无GPU)上运行此程序,因此我期望它需要更长的时间才能运行到收敛状态,这是否有可能会发生这种情况?

这是模型定义:

def regression_model():
    model = keras.Sequential()

    model.add(layers.Dense(64, activation=tf.nn.relu,
          input_shape(train_data.shape[1],)))
    model.add(layers.Dense(32, activation=tf.nn.relu))
    model.add(layers.Dense(32, activation=tf.nn.relu))
    model.add(layers.Dense(1))
    optimizer = tf.keras.optimizers.RMSprop(0.001)

    model.compile(loss='mse', optimizer=optimizer, metrics=['mae'])
    return model

在检查训练和验证损失时,我发现它们大致相等,这意味着什么。对此将提供的任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

通过“速度”,我假设您是指要收敛的步数。在这种情况下,收敛速度与所使用的硬件无关-只是缩短了时间(撇开了加速器对数值精度的微小影响)。您发布的代码看起来像是一个非常简单的模型,几乎不需要任何操作,因此它可以在cpu上快速运行也就不足为奇了。

  

在检查训练和验证损失时,我发现它们大致相等,这意味着什么。

这很好,这意味着您并不过分。如果验证损失大于训练损失,则表明过拟合。