【问题标题】:How to find total loss, accuracy, prediction date time using Keras Python 3?如何使用 Keras Python 3 查找总损失、准确性、预测日期时间?
【发布时间】:2018-07-11 09:36:54
【问题描述】:

我正在尝试预测 OHLC 值。到现在我已经做到了:
Jupyter Note of the complete code

可以看到我的代码正在运行。但我对我创建的模型几乎没有疑问。

  1. 我不知道预测的输出有多准确。
  2. 错误损失是否得到改善。

我什至无法理解为什么所做的预测在图表上没有日期和时间?我想知道预测的日期。

我怎样才能实现目标?有没有办法可以将 OHLC 与预测时间结合起来?

【问题讨论】:

    标签: python python-3.x tensorflow keras jupyter


    【解决方案1】:

    要使用这些指标:

    On the docs page of metrics of Keras

    指标的使用

    指标是用于判断模型性能的函数。编译模型时,将在 metrics 参数中提供度量函数。

    度量函数类似于损失函数,只是在训练模型时不使用评估度量的结果。

    model.compile(loss='mean_squared_error',optimizer='sgd', metrics=['mae', 'acc'])
    

    您可以传递现有指标的名称,也可以传递 Theano/TensorFlow 符号函数(请参阅自定义指标)。

    参数

    y_true:真实标签。 Theano/TensorFlow 张量。

    y_pred:预测。与 y_true 形状相同的 Theano/TensorFlow 张量。

    返回

    表示输出数组在所有数据点上的平均值的单个张量值。

    为了评估模型训练后的性能,您可以使用

    On the docs page of Model of Keras

    评估

    evaluate(self, x=None, y=None, batch_size=None, verbose=1, sample_weight=None, steps=None)
    

    返回

    模型在测试模式下的损失值和指标值。

    你的情况

    我猜你只需要更改这些行:

    model_open.compile(loss='mse', optimizer='rmsprop')
    model_high.compile(loss='mse', optimizer='rmsprop')
    model_low.compile(loss='mse', optimizer='rmsprop')
    model_close.compile(loss='mse', optimizer='rmsprop')
    

    model_open.compile(loss='mse', optimizer='rmsprop', metrics=['mae', 'acc'])
    model_high.compile(loss='mse', optimizer='rmsprop', metrics=['mae', 'acc'])
    model_low.compile(loss='mse', optimizer='rmsprop', metrics=['mae', 'acc'])
    model_close.compile(loss='mse', optimizer='rmsprop', metrics=['mae', 'acc'])
    

    最后评估模型:

    model_open.evaluate( testX_open, testY_open)
    model_high.evaluate( testX_high, testY_high)
    model_low.evaluate(  testX_low,  testY_low)
    model_close.evaluate(testX_close,testY_close)
    

    要在训练栏上添加准确度等指标,您只需像这样修改编译语句。

    【讨论】:

    • 我正在尝试。您能否也让我知道“我什至无法理解为什么所做的预测在图表上没有日期和时间?我想知道预测的日期。”
    • model_close.evaluate(testX_close,trainY_close) 这个说法正确吗?我需要用trainY_closetestY_close 验证testX_close 吗?
    • 运行时出错evaluate():ValueError: Input arrays should have the same number of samples as target arrays. Found 6039 input samples and 24160 target samples.
    • 你是对的,这是model_close.evaluate(testX_close,testY_close) 而不是model_close.evaluate(testX_close,trainY_close) 抱歉,我已经编辑了答案以更正它。
    • 对于我从您的代码中看到的日期和时间,您训练了 hte LSTM 网络以预测当前值的下一个值,并且在数据集中每小时都有一个值。所以我想这将在预测中成立,如果你让它从 10 个值开始预测,最后一个值是 2018.06.01 的 10:00,我猜第一个预测值将是 2018.06 的 11:00。 01,第二个预测值为 2018.06.01 的 12:00,以此类推。这是有道理的,因为网络只知道时间步的存在,而不是实际的日期或时间。
    猜你喜欢
    • 1970-01-01
    • 2019-09-06
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 2017-08-09
    • 1970-01-01
    • 2020-08-25
    相关资源
    最近更新 更多