【问题标题】:Keras model.predict - expected ndim=3, found ndim=2Keras model.predict - 预期 ndim=3,发现 ndim=2
【发布时间】:2021-04-08 21:51:39
【问题描述】:

我已使用链接代码来训练我的模型。 RNN Prediction

现在我想使用经过训练的模型通过加载模型来进行预测,我使用 predict.py 进行此操作

但是我似乎遇到了一些模糊的错误,我已经尝试了所有方法,只是想把头发扯掉。有人能帮我解决这个问题吗?

PS:您可以下载模型、test.csv 和 predict.py 进行重现,请在 predict.py 中包含正确加载 pandas 数据帧的代码,以便将答案标记为完整

【问题讨论】:

    标签: python-3.x tensorflow keras lstm recurrent-neural-network


    【解决方案1】:

    在将数据发送到 model.predict() 之前,您必须正确地重塑数据。

    import numpy as np
    #dummy data
    df1 = np.array([[[1,23,7,9,61,5,5,6]]])
    print(df1.shape)  # gives (1, 1, 8)
    model = tf.keras.models.load_model('RNN_Final-01-0.534.model')
    prediction = model.predict(df1)
    print("---->",prediction)
    

    【讨论】:

    • 谢谢拉姆。我尝试运行您的代码,但收到以下消息 WARNING:tensorflow:Model was built with shape (None, 60, 8) for input KerasTensor(type_spec=TensorSpec(shape=(None, 60, 8), dtype=tf.float32, name='lstm_input'), name='lstm_input', description="created by layer 'lstm_input'"),但它是在形状不兼容的输入上调用的 (None, 1, 8)。 [[0.4936518 0.5063482]] 至少我从模型中得到了一些很好看的输出,我感觉更近了一步。所以收盘价和成交量是这两个参数的一部分 第三个是什么?
    • 在训练脚本中使用model.add(LSTM(128, input_shape=(None,8), return_sequences=True)) 并训练模型,然后在预测期间它不会显示该警告。在 keras/tensorflow 中,第一个维度是批量大小。
    • @Jo3Dirt 如果有帮助,请投票或接受答案。
    猜你喜欢
    • 2019-06-22
    • 2021-04-05
    • 1970-01-01
    • 2019-03-13
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    相关资源
    最近更新 更多