如何使用Keras Python 3查找总损失、准确度、预测日期和时间?

如何使用Keras Python 3查找总损失、准确度、预测日期和时间?,python,python-3.x,tensorflow,keras,jupyter,Python,Python 3.x,Tensorflow,Keras,Jupyter,我试图预测OHLC值。到目前为止,我已经做到了这一点: 可以看到我的代码正在运行。但我对我创建的模型几乎没有疑问 我不知道预测的结果有多准确 误差损失是否改善 我甚至无法理解为什么所做的预测在图表上没有日期和时间?我想知道预测的日期 我怎样才能达到目标?有没有办法将OHLC与预测时间结合起来?使用这些指标: 指标的使用 度量是用于判断模型性能的函数。编译模型时,将在metrics参数中提供度量函数 度量函数类似于损失函数,只是在训练模型时不使用评估度量的结果 model.compile(lo

我试图预测OHLC值。到目前为止,我已经做到了这一点:

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

  • 我不知道预测的结果有多准确
  • 误差损失是否改善 我甚至无法理解为什么所做的预测在图表上没有日期和时间?我想知道预测的日期


    我怎样才能达到目标?有没有办法将OHLC与预测时间结合起来?

    使用这些指标:

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

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

    model.compile(loss='mean_squared_error',optimizer='sgd', metrics=['mae', 'acc'])
    
    您可以传递现有度量的名称,也可以传递一个Theano/TensorFlow符号函数(请参见自定义度量)

    论据 真的:真的标签。Theano/张量流张量

    预测。与y_形状相同的no/TensorFlow张量为真

    退换商品 单个张量值,表示所有数据点上输出数组的平均值

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

    评价 退换商品 测试模式下模型的损失值和度量值

    就你而言 我想您只需更改这些行:

    model\u open.compile(loss='mse',optimizer='rmsprop')
    模型_high.compile(loss='mse',optimizer='rmsprop')
    模型低编译(loss='mse',optimizer='rmsprop')
    模型_close.compile(loss='mse',optimizer='rmsprop')
    

    model_open.compile(loss='mse',optimizer='rmsprop',metrics=['mae','acc'])
    模型_high.compile(loss='mse',optimizer='rmsprop',metrics=['mae','acc'])
    模型低编译(loss='mse',optimizer='rmsprop',metrics=['mae','acc'])
    模型_close.compile(loss='mse',optimizer='rmsprop',metrics=['mae','acc'])
    
    最后,用以下方法评估模型:

    model_open.evaluate(testX_open,testY_open)
    模型高。评估(testX高,testY高)
    模型低。评估(testX低,testY低)
    model_close.evaluate(testX_close,testY_close)
    

    要在训练栏上添加精度acc之类的指标,只需像这样修改compile语句。

    我正在尝试。您还可以让我知道问题“我甚至无法理解为什么做出的预测在图表上没有日期和时间?我想知道做出预测的日期。”
    model\u close.evaluate(testX\u close,trainY\u close)
    这句话正确吗?是否需要使用
    trainY\u close
    testY\u close
    验证
    testX\u close
    ?运行
    evaluate()
    时出错:
    ValueError:输入数组的样本数应与目标数组相同。找到6039个输入样本和24160个目标样本。
    你是对的,这是
    模型关闭。评估(testX\u关闭,testY\u关闭)
    不是
    模型关闭。评估(testX\u关闭,trainY\u关闭)
    很抱歉,我已经编辑了答案来更正它。根据我从你的代码中看到的日期和时间,您训练hte LSTM网络从当前值预测下一个值,数据集中每小时有一个值。因此,我猜这将在预测中保持不变,因此如果你从10个值开始预测,其中最后一个值是2018.06.01的10:00,我猜第一个预测值将是2018.06.01的11:00,第二个预测值将是2018.06.01的12:00,依此类推。这是有意义的,因为网络只知道一个时间步的存在,而不知道实际的日期或时间。
    evaluate(self, x=None, y=None, batch_size=None, verbose=1, sample_weight=None, steps=None)