我正在使用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
在检查训练和验证损失时,我发现它们大致相等,这意味着什么。对此将提供的任何帮助将不胜感激!
答案 0 :(得分:1)
通过“速度”,我假设您是指要收敛的步数。在这种情况下,收敛速度与所使用的硬件无关-只是缩短了时间(撇开了加速器对数值精度的微小影响)。您发布的代码看起来像是一个非常简单的模型,几乎不需要任何操作,因此它可以在cpu上快速运行也就不足为奇了。
在检查训练和验证损失时,我发现它们大致相等,这意味着什么。
这很好,这意味着您并不过分。如果验证损失大于训练损失,则表明过拟合。