【问题标题】:How can I reduce loss with my keras TensorFlow model?如何使用我的 keras TensorFlow 模型减少损失?
【发布时间】:2019-06-03 20:52:24
【问题描述】:

所以我有一个包含大约 140,000 个样本的数据集,其中包含 5 个输入,即汽车的速度、汽车的加速度、用雷达收集的前车的速度、前车的距离以及前车的加速度领车。输出从0到1,0为最大刹车,1为最大加速度。

我是神经网络的初学者,因此在优化我的模型以获得该数据的最佳准确度/损失时遇到了麻烦。我一直在尝试更改优化器、激活函数、隐藏层数、层中的节点数等,但似乎没有什么能随着时间的推移降低损失。

这是我目前的模型:

opt = keras.optimizers.Adam(lr=0.001, decay=1e-6)
model = Sequential()
model.add(Dense(5, activation="tanh", input_shape=(x_train.shape[1:])))
for i in range(40):
    model.add(Dense(60, activation="relu"))
model.add(Dense(1))

我现在不太担心我的数据过度拟合,因为我可以稍后再处理,我只是想基本上记住数据,看看我能得到多低的损失,看看我是否可以改进它。并预测经过训练的数据,以确保它可以返回正确的输出。然而,我得到的验证损失的最低值大约是0.015,这绝对没有在我的测试中返回当前输出,它的准确率大约是 90%。

我做错了什么吗?我应该增加我的模型大小,还是减少它?我尝试过的任何方法似乎都不起作用。我还确保独立标准化我的 5 个输入和 1 个输出。似乎在几个 epoch 之后它永远不会学到任何东西。

感谢有人决定帮助我解决这个非常具体的问题。

【问题讨论】:

    标签: python tensorflow keras


    【解决方案1】:

    我想帮忙,但那里没有太多信息。

    首先,网络的目的是什么?很难说你想减少 的损失。你的损失函数是什么?你的标签是什么?这似乎是一个经典的强化学习问题,而不是传统的监督学习问题。数据结构如何?我假设他们正在“奔跑”并获得某种分数?

    一个毯子,那可能是太多层了。

    在大多数情况下,网络最大的改进来自清理数据(我们认为这很好)和弄乱您的损失函数。最好从一个简单的模型开始,然后确定是否需要更多。

    还有这个,就是强化学习,不过是个很好的例子https://github.com/lexfridman/deeptraffic

    【讨论】:

    • 感谢您的回答!我试图根据前车及其数据来预测汽车是否应该使用油门或刹车,或滑行。损失函数是 keras 的标准函数,我相信均方误差。我会尽量减少层数和节点数
    • 祝你好运 :) 早上我可以再看看。我会考虑看强化学习。鉴于您可能想要每个操作的分数。
    • 我没有意识到推荐了输出层的激活函数,尝试了大约一半的损失!尽管如此,在保留它所训练的所有数据并返回方面仍然不是超级好。现在大约有 20 层,每层有 40 个节点。这还是太高了吗?有100,000个样本
    • 如我上面提到的那样,如果不了解更多关于您要做什么的信息,就很难知道。我仍然不太确定您要尽量减少什么,我假设您正在进行新的“运行”并试图让汽车以最佳方式自动驾驶?
    • 是的,我在高速公路上收集了大约一个小时的数据,在尝试我以 0.015 损失训练的模型时,它的表现非常糟糕,似乎并没有学到很多东西。我认为这可能是缺乏数据,所以我正在寻求一些朋友的帮助来收集更多数据,然后我会重新训练它,看看会发生什么。
    猜你喜欢
    • 2019-11-26
    • 2023-03-13
    • 2019-01-16
    • 2020-10-08
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    相关资源
    最近更新 更多