【问题标题】:Python Tflearn machine learning Optimiser, loss and parametersPython Tflearn 机器学习优化器、损失和参数
【发布时间】:2017-12-16 11:01:56
【问题描述】:

在修复我的代码并准备好我的训练数据后,我发现自己面临 2 个问题。

背景: 我的数据由第一列的日期(每分钟一个条目)和第二列的拥塞(值,在 0 到 200 之间)组成。我的目标是将它提供给我的神经网络,以便能够预测下周每分钟的拥堵情况(我的数据集超过 10M 的条目,我不应该遇到缺乏训练数据的问题)。

问题: 我现在有两个问题。首先关于损失、优化器和线性。似乎它们中有一定数量,并且它们都有一个比另一个更好的域,您会为这个项目推荐哪一个? (目前在我的测试中,我使用 Adam 作为优化器,使用 mean_square 作为损失和线性激活)。

我的第二个问题更像是我遇到的一个错误(可能与我使用错误的损失/优化器有关)。当使用我的代码(目前有 10 000 个训练数据)时,我的准确度为 0,损失低(0.00X)和错误的预测(甚至不接近现实)。你知道它可能来自哪里吗?

【问题讨论】:

    标签: python machine-learning tensorflow tflearn


    【解决方案1】:

    您正在尝试做的事情称为时间序列预测(给定时间 tn, t-(n+1) ... t-1 的数据:预测时间 的状态t) 并且通常是循环神经网络的任务。 Here 是 Andrej Karpathy 写的一篇很棒的博客文章,关于你应该看看的主题。

    关于你的两个问题:

    1. 这很难回答,因为使用什么优化器的问题在很大程度上取决于输入数据。一般来说,无论您使用什么优化器,网络都会收敛。然而,收敛所需的时间会有所不同。自适应学习率方法,如 Adagrad、Adadelta 和 Adam,趋向于更快地实现收敛。 Here 是对不同优化器的一个很好的描述。

    2. 基本神经网络 (MLP) 在时间序列预测方面表现不佳。这将是对低准确性的解释。但是我不知道为什么损失会是0。

    【讨论】:

    • 损失并不是真正的 0,只是准确度(损失只是低)这是我得到的一个例子。 Training Step: 460 | total loss: 0.00238 | time: 0.332s | Adam | epoch: 006 | loss: 0.00238 - binary_acc: 0.0000 -- iter: 8320/9999
    • 为什么使用二进制精度?预测值不应该在 0 到 200 之间吗?
    • 我不知道为什么会显示这个,预测值应该在0到200之间(即使我现在的结果很糟糕,它们确实在1以上)。这是最后的结果Training Step: 7100 | total loss: 0.00304 | time: 1.385s | Adam | epoch: 100 | loss: 0.00304 - binary_acc: 0.0000 | val_loss: 0.00260 - val_acc: 0.0000 -- iter: 8999/8999
    • 所以我阅读了binary_accuracy 是如何计算的,我认为在这种情况下很好。我无法解释为什么损失这么低。但是,您可以看到它在训练期间并没有改善。这表明您当前的网络架构没有收敛。
    • 这似乎是这样,我会尝试看看我是否能找到它不收敛的原因,如果我找不到任何东西,我会提出一个新问题。你完美地回答了这个问题,谢谢。
    猜你喜欢
    • 2018-05-09
    • 2021-05-31
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 2014-07-04
    • 2018-09-05
    • 2019-12-29
    • 2015-07-21
    相关资源
    最近更新 更多